diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 94741880ab..4a594ef653 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,7 +22,7 @@ test:mysql: - 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 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 + - codecov tags: - mysql test:postgres: @@ -31,11 +31,11 @@ test:postgres: - pip install -r requirements/testing.txt - pip install psycopg2 - 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 + - codecov tags: - postgres test:sqlite: script: - pip install -r requirements/testing.txt - 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 + - codecov diff --git a/.tx/config b/.tx/config index b210567710..1ce7387030 100644 --- a/.tx/config +++ b/.tx/config @@ -181,6 +181,12 @@ source_lang = en source_file = mayan/apps/tags/locale/en/LC_MESSAGES/django.po type = PO +[mayan-edms.task_manager-2-0] +file_filter = mayan/apps/task_manager/locale//LC_MESSAGES/django.po +source_lang = en +source_file = mayan/apps/task_manager/locale/en/LC_MESSAGES/django.po +type = PO + [mayan-edms.user_management-2-0] file_filter = mayan/apps/user_management/locale//LC_MESSAGES/django.po source_lang = en diff --git a/HISTORY.rst b/HISTORY.rst index 02de75f2b8..dd4e69b170 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,7 +4,31 @@ - Content windows appearance changes - Add new document's version list view permission -2.3 (2017-05-XX) +2.5 (2017-07-XX) +=============== +- Add view to download a document's OCR text. GitLab #215 +- Add user configurable mailer. GitLab #286. +- Use Toasts library for screen messages. +- Reduce verbosity of some debug messages. +- Add new lineart transformation. + +2.4 (2017-06-23) +================ +- Add Django-mathfilters. +- Improve render of documents with no pages. +- Add SANE scanner document source. +- Added PDF orientation detection. GitLab issue #387. +- Fix repeated permission list API URL. GitLab issue #389. +- Fix role creation API endpoint not returning id. GitLab issue #390. +- Make tags, metadata types and cabinets searchable via the dynamic search API. GitLab issue #344. +- Add support for updating configuration options from environment variables. +- Add purgelocks management command. GitLab issue #221. +- Fix index rebuilding for multi value first levels. GitLab issue #391. +- Truncate views titles via the APPEARANCE_MAXIMUM_TITLE_LENGTH setting. GitLab issue #217. +- Add background task manager app. GitLab issue #132. +- Add link to show a document's OCR errors. GitLab issue #291. + +2.3 (2017-06-08) ================ - Allow for bigger indexing expression templates. - Auto select checkbox when updating metadata values. GitLab issue #371. @@ -30,7 +54,7 @@ - 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 + the user links. - New Dashboard view - Moved licenses to their own module in every app - Update project to work with Django 1.10.4. diff --git a/Makefile b/Makefile index 8612a17020..ab17aece54 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,12 @@ help: @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 "release_test_via_docker_ubuntu - Package (sdist and wheel) and upload to the PyPI test server using an Ubuntu Docker builder." + @echo "release_test_via_docker_alpine - Package (sdist and wheel) and upload to the PyPI test server using an Alpine Docker builder." + @echo "release_via_docker_ubuntu - Package (sdist and wheel) and upload to PyPI using an Ubuntu Docker builder." + @echo "release_via_docker_alpine - Package (sdist and wheel) and upload to PyPI using an Alpine Docker builder." + @echo "test_sdist_via_docker_ubuntu - Make an sdist packange and test it using an Ubuntu Docker container." + @echo "test_wheel_via_docker_ubuntu - Make a wheel package and test it using an Ubuntu Docker container." @echo "runserver - Run the development server." @echo "runserver_plus - Run the Django extension's development server." @@ -33,6 +39,8 @@ help: @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 "docker_service_mysql_on - Launch and initialize a MySQL Docker container." + @echo "docker_service_mysql_off - Stop and delete the MySQL Docker container." @echo "safety_check - Run a package safety check." @@ -112,6 +120,45 @@ wheel: clean sdist pip wheel --no-index --no-deps --wheel-dir dist dist/*.tar.gz ls -l dist +release_test_via_docker_ubuntu: + docker run --rm --name mayan_release -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "cp -r /host_source/* . && apt-get update && apt-get install make python-pip -y && pip install -r requirements/build.txt && cp -r /host_home/.pypirc ~/.pypirc && make test_release" + +release_via_docker_ubuntu: + docker run --rm --name mayan_release -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "cp -r /host_source/* . && apt-get update && apt-get install make python-pip -y && pip install -r requirements/build.txt && cp -r /host_home/.pypirc ~/.pypirc && make release" + +release_test_via_docker_alpine: + docker run --rm --name mayan_release -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source alpine /bin/busybox sh -c "cp -r /host_source/* . && apk update && apk add python2 py2-pip make && pip install -r requirements/build.txt && cp -r /host_home/.pypirc ~/.pypirc && make test_release" + +release_via_docker_alpine: + docker run --rm --name mayan_release -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source alpine /bin/busybox sh -c "cp -r /host_source/* . && apk update && apk add python2 py2-pip make && pip install -r requirements/build.txt && cp -r /host_home/.pypirc ~/.pypirc && make release" + +test_sdist_via_docker_ubuntu: + docker run --rm --name mayan_sdist_test -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "cp -r /host_source/* . && apt-get update && apt-get install make python-pip libreoffice tesseract-ocr tesseract-ocr-deu poppler-utils -y && pip install -r requirements/development.txt && make sdist_test_suit" + +test_wheel_via_docker_ubuntu: + docker run --rm --name mayan_wheel_test -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "cp -r /host_source/* . && apt-get update && apt-get install make python-pip libreoffice tesseract-ocr tesseract-ocr-deu poppler-utils -y && pip install -r requirements/development.txt && make wheel_test_suit" + +sdist_test_suit: sdist + rm -f -R _virtualenv + virtualenv _virtualenv + sh -c '\ + . _virtualenv/bin/activate; \ + pip install `ls dist/*.gz`; \ + _virtualenv/bin/mayan-edms.py initialsetup; \ + pip install mock==2.0.0; \ + _virtualenv/bin/mayan-edms.py test --mayan-apps \ + ' + +wheel_test_suit: wheel + rm -f -R _virtualenv + virtualenv _virtualenv + sh -c '\ + . _virtualenv/bin/activate; \ + pip install `ls dist/*.whl`; \ + _virtualenv/bin/mayan-edms.py initialsetup; \ + pip install mock==2.0.0; \ + _virtualenv/bin/mayan-edms.py test --mayan-apps \ + ' # Dev server @@ -129,7 +176,7 @@ docker_services_on: 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 + sleep 2 ./manage.py initialsetup --settings=mayan.settings.testing.docker docker_services_off: diff --git a/README.md b/README.md index 8289e70bbc..57b7f2c966 100644 --- a/README.md +++ b/README.md @@ -42,24 +42,18 @@

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. +The easiest way to use Mayan EDMS is by using the official +[Docker](https://www.docker.com/) image. Make sure Docker is properly installed +and working before attempting to install Mayan EDMS. -Step 1- Initialize the installation +For the complete set of installation, configuration, upgrade, and backup +instructions visit the Mayan EDMS Docker Hub page at: +https://hub.docker.com/r/mayanedms/mayanedms/ -```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 +

Hardware requirements

+- 2 Gigabytes of RAM (1 Gigabyte if OCR is turned off). +- Multiple core CPU (64 bit, faster than 1 GHz recommended).

Important links

diff --git a/README.rst b/README.rst new file mode 100644 index 0000000000..efb1199da2 --- /dev/null +++ b/README.rst @@ -0,0 +1,58 @@ +|pypi| |builds| |coverage| |python| |license| + + +.. image:: https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/mayan_logo.png + :align: center + :width: 200 + :height: 200 + +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. + +.. image:: https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/overview.gif + :align: center + + +The easiest way to use Mayan EDMS is by using the official Docker_ image. +Make sure Docker is properly installed and working before attempting to install +Mayan EDMS. + +For the complete set of installation, configuration, upgrade, and backup +instructions visit the Mayan EDMS Docker Hub page at: +https://hub.docker.com/r/mayanedms/mayanedms/ + +.. _Docker: https://www.docker.com/ + +Hardware requirements + +- 2 Gigabytes of RAM (1 Gigabyte if OCR is turned off). +- Multiple core CPU (64 bit, faster than 1 GHz recommended). + + +Important links + +- `Homepage `__ +- `Videos `__ +- `Documentation `__ +- `Paid support `__ +- `Roadmap `__ +- `Contributing `__ +- `Community forum `__ +- `Community forum archive `__ +- `Source code, issues, bugs `__ +- `Plug-ins, other related projects `__ +- `Translations `__ + + + +.. |pypi| image:: http://img.shields.io/pypi/v/mayan-edms.svg + :target: http://badge.fury.io/py/mayan-edms +.. |builds| image:: https://gitlab.com/mayan-edms/mayan-edms/badges/master/build.svg + :target: https://gitlab.com/mayan-edms/mayan-edms/pipelines +.. |coverage| image:: https://codecov.io/gitlab/mayan-edms/mayan-edms/coverage.svg?branch=master + :target: https://codecov.io/gitlab/mayan-edms/mayan-edms?branch=master +.. |python| image:: https://img.shields.io/pypi/pyversions/mayan-edms.svg +.. |license| image:: https://img.shields.io/pypi/l/mayan-edms.svg?style=flat diff --git a/contrib/scripts/process_messages.py b/contrib/scripts/process_messages.py index 7f1874540e..958d4f6f21 100755 --- a/contrib/scripts/process_messages.py +++ b/contrib/scripts/process_messages.py @@ -4,6 +4,7 @@ import optparse import sh + APP_LIST = ( 'acls', 'appearance', 'authentication', 'cabinets', 'checkouts', 'common', 'converter', 'django_gpg', 'document_comments', 'document_indexing', @@ -11,13 +12,13 @@ APP_LIST = ( 'events', 'folders', 'linking', 'lock_manager', 'mailer', 'metadata', 'mirroring', 'motd', 'navigation', 'ocr', 'permissions', 'rest_api', 'smart_settings', 'sources', 'statistics', 'storage', 'tags', - 'user_management' + 'task_manager', 'user_management' ) LANGUAGE_LIST = ( 'ar', 'bg', 'bs_BA', 'da', 'de_DE', 'en', 'es', 'fa', 'fr', 'hu', 'id', - 'it', 'nl_NL', 'pl', 'pt', 'pt_BR', 'ro_RO', 'ru', 'sl_SI', 'vi_VN', - 'zh_CN', + 'it', 'nl_NL', 'pl', 'pt', 'pt_BR', 'ro_RO', 'ru', 'sl_SI', 'tr_TR', + 'vi_VN', 'zh_CN', ) makemessages = sh.Command('django-admin.py') diff --git a/docs/releases/2.3.rst b/docs/releases/2.3.rst index 88fe3db328..6830340100 100644 --- a/docs/releases/2.3.rst +++ b/docs/releases/2.3.rst @@ -1,8 +1,8 @@ -=============================== -Mayan EDMS v2.2.1 release notes -=============================== +============================= +Mayan EDMS v2.3 release notes +============================= -Released: May 25, 2017 +Released: June 08, 2017 What's new ========== diff --git a/docs/releases/2.4.rst b/docs/releases/2.4.rst new file mode 100644 index 0000000000..0f65f567b5 --- /dev/null +++ b/docs/releases/2.4.rst @@ -0,0 +1,156 @@ +============================= +Mayan EDMS v2.4 release notes +============================= + +Released: June 23, 2017 + +What's new +========== + +SANE document source +-------------------- +A new document source has been added with the ability to retrieve documents from +scanners directly. This new document source uses the SANE (Scanner Access Now Easy) +(https://en.wikipedia.org/wiki/Scanner_Access_Now_Easy) API client to communicate +with USB and network scanners. SANE must be properly installed for this document +source to work. Your scanner must also be supported by the SANE API +(http://www.sane-project.org/sane-supported-devices.html). + +Automatic PDF orientation detection +----------------------------------- +The orientation of PDF documents is now detected at creation and a rotation +transformation applied to each of the document's pages to correct the orientation. + +Environment variables +--------------------- +Configuration options can now be updated from environment variables. To update +a configuration option, prepend the string `MAYAN_` to the name of the configuration +option. For example, to increase the number of documents displayed per search results +page (from a default of 40) to 50 documents, set the environment variable +MAYAN_COMMON_PAGINATE_BY to 50 with:: + + $ export MAYAN_COMMON_PAGINATE_BY=50 + +and restart Mayan EDMS. A list of the configuration options can be found in the +`Setup` menu, under `Settings`. + +Math filters +------------ +The django-mathfilters (https://pypi.python.org/pypi/django-mathfilters) package +has been included to provide proper math filters in the indexes. An example of +this is indexing documents by quarter:: + + {% load mathfilters %}{{ document.metadata_value_of.date|date:"Y"}}Q{{ document.metadata_value_of.date|date:"m"|sub:1|intdiv:3|add:1 }} + + +Expand searchable objects +------------------------- +Previously, only documents and later on document pages were searchable. This release +add support for searching for tags, metadata types and cabinets. This search support +is available via the dynamic search API. + +Management command to reset locks +--------------------------------- +During testing or development error occur and locks can remain behind, blocking +execution of a process or task until they expire. To help resolve this a +management command has been added called `purgelocks` that will delete all locks +in the system. + +Index by workflow state +----------------------- +Support was added to update the a document indexes from workflow state changes. +To make workflow referencing easier from the index template, a new fields was +added to the workflow model called internal_name. For example, for a workflow +called `Publishing Workflow` with an internal name of `publishing_workflow`, +use the following string to reference the current state in an index:: + + {{ document.workflow.publishing_workflow.get_current_state }} + + +Task manager +------------ +A new app to monitor the distribution and consumption of background task has been +added. This app is call `Task manager` and can be found in the `Tools` menu. +Use this new tool to diagnose your background task workers or to determine when +to scale up the number of workers. + + +Other Changes +------------- +- Improve render of documents with no pages. +- Fix repeated permission list API URL. GitLab issue #389. +- Fix role creation API endpoint not returning id. GitLab issue #390. +- Fix index rebuilding for multi value first levels. GitLab issue #391. +- Add hardware requirements. GitHub issue #247. +- Fix URL query string encoding for the document page navigation views. GitLab + issue #383. +- Truncate views titles via the APPEARANCE_MAXIMUM_TITLE_LENGTH setting. + GitLab issue #217. +- Add link to show a document's OCR errors. GitLab issue #291. + +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 #247 `_ Hardware requirements +* `GitLab issue #132 `_ Task queue viewer +* `GitLab issue #217 `_ [Documents] Truncate document label for avoid double lines in mobile or reduce font +* `GitLab issue #221 `_ Add flush lock management command +* `GitLab issue #291 `_ Link to OCR error log from document OCR tab +* `GitLab issue #344 `_ Add support for searching folders, tags, metadata. +* `GitLab issue #383 `_ Page not found when deployed to sub-uri +* `GitLab issue #387 `_ Document Scanning not Functioning on rotated landscape PDF's +* `GitLab issue #389 `_ How can we map permissions with a particular role using REST API? +* `GitLab issue #390 `_ Id is not getting in response +* `GitLab issue #391 `_ "Rebuild indexes" does not work in Mayan EDMS 2.3 + +.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ diff --git a/docs/releases/2.5.rst b/docs/releases/2.5.rst new file mode 100644 index 0000000000..e146137e13 --- /dev/null +++ b/docs/releases/2.5.rst @@ -0,0 +1,117 @@ +============================= +Mayan EDMS v2.5 release notes +============================= + +Released: July XX, 2017 + +What's new +========== + + +Other Changes +------------- +- Add view to download a document's OCR text. GitLab issue #215. +- Add missing OCR migration. +- Improve error output of the performupgrade command to debug upgrade errors + that could stop an upgrade (missing document files, etc). +- Enable the django-mathfilters app added in version 2.4. +- Do a complete pull and synchronization of the translations to fix missing + translations for Polish. Thanks to Wojtek Warczakowski for the report. +- Allow null for the SANE source resolution field. Even though the field was + marked as allowing blank values it was failing because it is a number field + and number fields need to allow explicit null values when left blank. +- Rename the mayan_task_manager app to task_manager. +- Make the task manager translatable. +- Add Turkish to the list of processes languages. +- Add user configurable mailer support. GitLab issue #286. +- Use Toastr libary for screen messages. +- Reduce verbosity of some debug messages. +- New lineart transformation. Useful to increase the OCR accuracy on some kind + of documents. +- Make sure lookup selection widgets also trigger the metadata update + checkbox on change. +- Menu reorganization. The "About" menu has been renamed to "System". The + "Tools" and "Setup" sub menus, were moved from the "Profile" menu to the + "System" menu. The "Profile" menu has been renamed to "User". +- Usability improvements on small displays. +- Removal of the CONVERTER_LIBREOFFICE_PATH and CONVERTER_PDFTOPPM_PATH + settings. These setting have been consolidated into + CONVERTER_GRAPHICS_BACKEND_CONFIG. +- PDF compatibility improvements. +- Improve the documentation of the document creation API endpoint. + GitHub issue #255. Thanks to @lcerliani opening the issue. +- Libre Office conversion improvements. Give every libreoffice instance + its own separate $HOME directory. Additionally give every libreoffice + its own UserInstallation file in the $HOME directory. Works around + Libre Office issue: https://bugs.documentfoundation.org/show_bug.cgi?id=37531 + Solves or affects GitLab issues #393 #258 #198 #175 +- Document type-metadata type relationship. Add new UI method to switch between + required metadata and optional metadata for a document type. This new + method does not forces users to remove a metadata type before making the + switch and thus avoid deletion of existing metadata entries. GitLab issue #337. +- It is now possible to change the relationship between metadata types and + document types from either the metadata type list or document type list. + GitLab issue #373. +- Add support to search documents by their checksums. +- The document checksum field is now indexed for faster searches by checksum. + +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 #255 `_ Uploading a local file via api +* `GitLab issue #215 `_ Download text contents +* `GitLab issue #286 `_ User configurable mailer +* `GitLab issue #337 `_ Better way to switch Optional to Required Metadata +* `GitLab issue #373 `_ (feature request) Allow selecting document types for metadata + +.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ diff --git a/docs/releases/index.rst b/docs/releases/index.rst index 5ffd7316ef..06ec611ae0 100644 --- a/docs/releases/index.rst +++ b/docs/releases/index.rst @@ -22,6 +22,7 @@ versions of the documentation contain the release notes for any later releases. .. toctree:: :maxdepth: 1 + 2.4 2.3 2.2 2.1.11 diff --git a/docs/topics/development.rst b/docs/topics/development.rst index 91312b2165..dbfa7269b4 100644 --- a/docs/topics/development.rst +++ b/docs/topics/development.rst @@ -203,7 +203,7 @@ Mayan EDMS source is controlled with Git_. The project is publicly accessible, hosted and can be cloned from **GitLab** using:: - git clone https://gitlab.com/mayan-edms/mayan-edms.git + $ git clone https://gitlab.com/mayan-edms/mayan-edms.git Git branch structure @@ -235,14 +235,14 @@ Steps to deploy a development version ------------------------------------- .. code-block:: bash - git clone https://gitlab.com/mayan-edms/mayan-edms.git - cd mayan-edms - git checkout development - virtualenv venv - source venv/bin/activate - pip install -r requirements.txt - ./manage.py initialsetup - ./manage.py runserver + $ git clone https://gitlab.com/mayan-edms/mayan-edms.git + $ cd mayan-edms + $ git checkout development + $ virtualenv venv + $ source venv/bin/activate + $ pip install -r requirements.txt + $ ./manage.py initialsetup + $ ./manage.py runserver Setting up a development version using Vagrant @@ -254,36 +254,36 @@ Start and provision a machine using: .. code-block:: bash - vagrant up development + $ vagrant up development To launch a standalone development server ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash - vagrant ssh - vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/ - vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate - vagrant@vagrant-ubuntu-trusty-32:~$ ./manage.py runserver 0.0.0.0:8000 + $ vagrant ssh + $ vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/ + $ vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate + $ vagrant@vagrant-ubuntu-trusty-32:~$ ./manage.py runserver 0.0.0.0:8000 To launch a development server with a celery worker and Redis as broker ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash - vagrant ssh - vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/ - vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate - vagrant@vagrant-ubuntu-trusty-32:~$ ./manage.py runserver 0.0.0.0:8000 --settings=mayan.settings.celery_redis + $ vagrant ssh + $ vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/ + $ vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate + $ vagrant@vagrant-ubuntu-trusty-32:~$ ./manage.py runserver 0.0.0.0:8000 --settings=mayan.settings.celery_redis Then on a separate console launch a celery worker from the same provisioned Vagrant machine: .. code-block:: bash - vagrant ssh - vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/ - vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate - vagrant@vagrant-ubuntu-trusty-32:~$ DJANGO_SETTINGS_MODULE='mayan.settings.celery_redis' celery -A mayan worker -l DEBUG -Q checkouts,mailing,uploads,converter,ocr,tools,indexing,metadata -Ofair -B + $ vagrant ssh + $ vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/ + $ vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate + $ vagrant@vagrant-ubuntu-trusty-32:~$ DJANGO_SETTINGS_MODULE='mayan.settings.celery_redis' celery -A mayan worker -l DEBUG -Q checkouts,mailing,uploads,converter,ocr,tools,indexing,metadata -Ofair -B Contributing changes @@ -361,12 +361,12 @@ The documentation is written in `reStructured Text`_ format, processed with Sphinx_, and resides in the ``docs`` directory. In order to build it, you will first need to install the documentation editing dependencies with:: - pip install -r requirements/documentation.txt + $ pip install -r requirements/documentation.txt Then, to build an HTML version of the documentation, run the following command from the **docs** directory:: - make livehtml + $ make docs_serve The generated documentation can be viewed by browsing to http://127.0.0.1:8000 or by browsing to the ``docs/_build/html`` directory. @@ -386,22 +386,18 @@ Source file package This is the sequence of step used to produce an installable package: -1. Make sure there are no lingering packages from previous attempts:: +1. Generate the packaged version (will produce dist/mayan-edms-x.y.z.tar.gz):: - rm dist -R + $ make sdist -2. Generate the packaged version (will produce dist/mayan-edms-x.y.z.tar.gz):: +2. Do a test install:: - python setup.py sdist - -3. Do a test install:: - - cd /tmp - virtualenv venv - source venv/bin/activate - pip install /dist/mayan-edms-x.y.z.tar.gz - mayan-edms.py initialsetup - mayan-edms.py runserver + $ cd /tmp + $ virtualenv venv + $ source venv/bin/activate + $ pip install /dist/mayan-edms-x.y.z.tar.gz + $ mayan-edms.py initialsetup + $ mayan-edms.py runserver Wheel package @@ -411,9 +407,9 @@ Wheel package $ pip install -r requirements/development.txt -2. Create wheel package using the source file package (Until issue #99 of wheel is fixed: https://bitbucket.org/pypa/wheel/issue/99/cannot-exclude-directory):: +2. Create wheel package using the makefile:: - $ pip wheel --no-index --no-deps --wheel-dir dist dist/mayan-edms-x.y.z.tar.gz + $ make wheel 3. Do a test install:: @@ -436,3 +432,43 @@ X.YaN # Alpha release X.YbN # Beta release X.YrcN # Release Candidate X.Y # Final release + + +Release checklist +~~~~~~~~~~~~~~~~~ + +1. Synchronize translations:: + + $ make translations_pull + +2. Compile translations:: + + $ make translations_compile + +3. Write release notes. +4. Update changelog. +5. Update requirements version in `setup.py` +6. Bump version in `mayan/__init__.py` +7. Build source package and test:: + + $ make test_sdist_via_docker_ubuntu + +8. Build wheel package and test:: + + $ make test_whell_via_docker_ubuntu + +9. Tag version:: + + $ git tag -a vX.Y.Z -m "Version X.Y.Z" + +10. Push tag upstream:: + + $ git push --tags + +11. Build and upload a test release:: + + $ make release_test_via_docker_ubuntu + +12. Build and upload a final release:: + + $ make release_via_docker_ubuntu diff --git a/docs/topics/installation.rst b/docs/topics/installation.rst index 095b052d39..e831bae59e 100644 --- a/docs/topics/installation.rst +++ b/docs/topics/installation.rst @@ -2,110 +2,21 @@ Installation ============ The easiest way to use Mayan EDMS is by using the official Docker_ image. -Make sure Docker_ is properly installed and working before attempting to install +Make sure Docker is properly installed and working before attempting to install Mayan EDMS. -With Docker properly installed, proceed to download the Mayan EDMS image using -the command: - -.. code-block:: bash - - docker pull mayanedms/mayanedms - -After the image finishes downloading, initialize a Mayan EDMS container. - -.. code-block:: bash - - docker run --rm -v mayan_media:/var/lib/mayan \ - -v mayan_settings:/etc/mayan mayanedms/mayanedms mayan:init - -With initialization complete, launch the container. If another web server is -running on port 80 use a different port in the -p option, ie: -p 81:80. - -.. code-block:: 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 - -Point your browser to 127.0.0.1 (or the alternate port chosen, ie: 127.0.0.1:81) -and use the automatically created admin account. - -All files will be stored in the following two volumes: - -- mayan_media -- mayan_settings - -Stopping and starting +Hardware requirements --------------------- -To stop the container use:: - docker stop mayan-edms +- 2 Gigabytes of RAM (1 Gigabyte if OCR is turned off). +- Multiple core CPU (64 bit, faster than 1 GHz recommended). -To start the container again:: +Docker procedure +---------------- - docker start mayan-edms - -Configuring ------------ -To edit the settings file, check the physical location of the `mayan_settings` -volume using:: - - docker volume inspect mayan_settings - -Which should produce an output similar to this one: - -.. code-block:: bash - - [ - { - "Name": "mayan_settings", - "Driver": "local", - "Mountpoint": "/var/lib/docker/volumes/mayan_settings/_data", - "Labels": null, - "Scope": "local" - } - ] - -In this case the physical location of the `mayan_settings` volume is -`/var/lib/docker/volumes/mayan_settings/_data`. Edit the settings file with your -favorite editor:: - - sudo vi /var/lib/docker/volumes/mayan_settings/_data/local.py - -Backups -------- - -To backup the existing data, check the physical location of the `mayan_media` -volume using:: - - docker volume inspect mayan_media - -Which should produce an output similar to this one: - -.. code-block:: bash - - [ - { - "Name": "mayan_settings", - "Driver": "local", - "Mountpoint": "/var/lib/docker/volumes/mayan_media/_data", - "Labels": null, - "Scope": "local" - } - ] - -Only the `db.sqlite3` file and the `document_storage` folder need to be backed -up:: - - sudo tar -zcvf backup.tar.gz /var/lib/docker/volumes/mayan_media/_data/document_storage /var/lib/docker/volumes/mayan_media/_data/db.sqlite3 - sudo chown `whoami` backup.tar.gz - -Restore -------- -Uncompress the archive in the original docker volume using:: - - sudo tar -xvzf backup.tar.gz -C / +For the complete set of installation, configuration, upgrade, and backup +instructions visit the Mayan EDMS Docker Hub page at: +https://hub.docker.com/r/mayanedms/mayanedms/ .. _Docker: https://www.docker.com/ diff --git a/docs/topics/settings.rst b/docs/topics/settings.rst index fab60a9779..a5a9955b4a 100644 --- a/docs/topics/settings.rst +++ b/docs/topics/settings.rst @@ -10,3 +10,9 @@ the directory: ``/usr/share/mayan-edms/mayan/settings/local.py``. For a list of all the configuration options, go to "Setup" then "Settings" on your browser. This is also a good place to check if your overrided setting option value in your ``local.py`` file is being interpreted correctly. + +Settings can also be changed via environment variables by prepending the string +"MAYAN_" to the configuration name. For example, to change the number of documents +displayed per page (COMMON_PAGINATE_BY, by default 40), use:: + + MAYAN_COMMON_PAGINATE_BY=10 diff --git a/mayan/__init__.py b/mayan/__init__.py index cb35e8154b..b50bf002c8 100644 --- a/mayan/__init__.py +++ b/mayan/__init__.py @@ -1,8 +1,8 @@ from __future__ import unicode_literals __title__ = 'Mayan EDMS' -__version__ = '2.3' -__build__ = 0x020300 +__version__ = '2.5rc1' +__build__ = 0x020500 __author__ = 'Roberto Rosario' __author_email__ = 'roberto.rosario@mayan-edms.com' __description__ = 'Free Open Source Electronic Document Management System' diff --git a/mayan/apps/acls/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/ar/LC_MESSAGES/django.mo index fae4e8f5c8..4ca0c3b3ae 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 f26e94285a..b613eb3025 100644 --- a/mayan/apps/acls/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/ar/LC_MESSAGES/django.po @@ -1,24 +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: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: ar\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" "Content-Transfer-Encoding: 8bit\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" +"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:15 links.py:35 msgid "ACLs" @@ -29,6 +27,7 @@ msgid "Permissions" msgstr "الصلاحيات" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "" @@ -37,6 +36,7 @@ msgid "Delete" msgstr "" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "" @@ -54,6 +54,7 @@ msgstr "" #: models.py:57 #, 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 "" @@ -90,6 +91,7 @@ msgstr "" #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" msgstr "" @@ -110,6 +112,7 @@ msgstr "" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" @@ -226,10 +229,8 @@ msgstr "" #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" diff --git a/mayan/apps/acls/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/bg/LC_MESSAGES/django.mo index a760b13940..eebf0010d8 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 3926ed7e45..2ae8d1d6a4 100644 --- a/mayan/apps/acls/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/bg/LC_MESSAGES/django.po @@ -1,22 +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: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: bg\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" "Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:15 links.py:35 @@ -28,6 +27,7 @@ msgid "Permissions" msgstr "Разрешения" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "" @@ -36,6 +36,7 @@ msgid "Delete" msgstr "" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "" @@ -53,6 +54,7 @@ msgstr "достъп вписвания" #: models.py:57 #, 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 "" @@ -89,6 +91,7 @@ msgstr "" #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" msgstr "" @@ -109,6 +112,7 @@ msgstr "" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" @@ -225,10 +229,8 @@ msgstr "" #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" 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 fe80a9f9b0..3be1131af7 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 5e73d2105f..3a51035a1b 100644 --- a/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.po @@ -1,24 +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: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: bs_BA\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" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Language: 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:15 links.py:35 msgid "ACLs" @@ -29,6 +27,7 @@ msgid "Permissions" msgstr "Dozvole" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "" @@ -37,6 +36,7 @@ msgid "Delete" msgstr "" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "" @@ -54,6 +54,7 @@ msgstr "" #: models.py:57 #, 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 "" @@ -90,6 +91,7 @@ msgstr "" #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" msgstr "" @@ -110,6 +112,7 @@ msgstr "" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" @@ -226,10 +229,8 @@ msgstr "" #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" diff --git a/mayan/apps/acls/locale/da/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/da/LC_MESSAGES/django.mo index 97e329855f..143db52f46 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 f807404a80..632a9a2400 100644 --- a/mayan/apps/acls/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/da/LC_MESSAGES/django.po @@ -1,22 +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: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: da\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" "Content-Transfer-Encoding: 8bit\n" +"Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:15 links.py:35 @@ -28,6 +27,7 @@ msgid "Permissions" msgstr "" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "" @@ -36,6 +36,7 @@ msgid "Delete" msgstr "" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "" @@ -53,6 +54,7 @@ msgstr "" #: models.py:57 #, 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 "" @@ -89,6 +91,7 @@ msgstr "" #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" msgstr "" @@ -109,6 +112,7 @@ msgstr "" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" @@ -225,10 +229,8 @@ msgstr "" #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" 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 b3c203967c..67a41ba36e 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 21e7e391b3..8cd5242b15 100644 --- a/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/acls/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 @@ -11,15 +11,14 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: de_DE\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" "Content-Transfer-Encoding: 8bit\n" +"Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:15 links.py:35 @@ -31,6 +30,7 @@ msgid "Permissions" msgstr "Berechtigungen" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "Rolle" @@ -39,6 +39,7 @@ msgid "Delete" msgstr "Löschen" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "Neue Berechtigung" @@ -56,9 +57,9 @@ msgstr "Berechtigungseinträge" #: models.py:57 #, 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\"" +msgstr "Berechtigungen \"%(permissions)s\" zur Rolle \"%(role)s\" für \"%(object)s\"" #: models.py:74 msgid "None" @@ -85,9 +86,7 @@ msgstr "API URL für die Liste der Berechtigungen dieser ACL" 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." +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." @@ -95,6 +94,7 @@ 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" @@ -102,9 +102,7 @@ msgstr "Keine solche Berechtigung: %s" 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." +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." @@ -117,6 +115,7 @@ msgstr "Neue Zugriffsberechtigung für %s" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "ACL \"%s\" löschen" @@ -140,8 +139,7 @@ msgstr "Berechtigungen von Rolle \"%(role)s\" für \"%(object)s\"" #: views.py:226 msgid "Disabled permissions are inherited from a parent object." -msgstr "" -"Deaktivierte Berechtigungen sind von einem übergeordneten Objekt vererbt." +msgstr "Deaktivierte Berechtigungen sind von einem übergeordneten Objekt vererbt." #~ msgid "New holder" #~ msgstr "New holder" @@ -234,10 +232,8 @@ msgstr "" #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" diff --git a/mayan/apps/acls/locale/en/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/en/LC_MESSAGES/django.mo index 1ac7353367..f1c172eeae 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 fbae4abbf2..fa1ec74ced 100644 --- a/mayan/apps/acls/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/en/LC_MESSAGES/django.po @@ -1,21 +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: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:48-0400\n" -"PO-Revision-Date: 2012-02-02 18:20+0000\n" +"POT-Creation-Date: 2017-06-23 01:38-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" -"language/en/)\n" -"Language: en\n" +"Language-Team: English (http://www.transifex.com/rosarior/mayan-edms/language/en/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: en\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:15 links.py:35 @@ -23,49 +23,44 @@ msgid "ACLs" msgstr "ACLs" #: apps.py:25 links.py:44 models.py:44 -#, fuzzy msgid "Permissions" -msgstr "permissions" +msgstr "Permissions" #: apps.py:29 models.py:46 -#, fuzzy #| msgid "Roles" msgid "Role" -msgstr "Roles" +msgstr "Role" #: links.py:31 msgid "Delete" -msgstr "" +msgstr "Delete" #: links.py:39 -#, fuzzy #| msgid "View ACLs" msgid "New ACL" -msgstr "View ACLs" +msgstr "New ACL" #: managers.py:109 msgid "Insufficient access." msgstr "Insufficient access." #: models.py:52 -#, fuzzy msgid "Access entry" -msgstr "access entry" +msgstr "Access entry" #: models.py:53 -#, fuzzy msgid "Access entries" -msgstr "access entries" +msgstr "Access entries" #: models.py:57 -#, fuzzy, python-format -#| msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#, 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +msgstr "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\"" #: models.py:74 msgid "None" -msgstr "" +msgstr "None" #: permissions.py:7 msgid "Access control lists" @@ -82,68 +77,66 @@ msgstr "View ACLs" #: serializers.py:24 serializers.py:132 msgid "" "API URL pointing to the list of permissions for this access control list." -msgstr "" +msgstr "API URL pointing to the list of permissions for this access control list." #: 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 "" +msgstr "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." #: serializers.py:87 msgid "Primary key of the new permission to grant to the access control list." -msgstr "" +msgstr "Primary key of the new permission to grant to the access control list." #: serializers.py:111 serializers.py:187 -#, fuzzy, python-format +#, python-format #| msgid "permission" msgid "No such permission: %s" -msgstr "permission" +msgstr "No such permission: %s" #: serializers.py:126 msgid "" "Comma separated list of permission primary keys to grant to this access " "control list." -msgstr "" +msgstr "Comma separated list of permission primary keys to grant to this access control list." #: serializers.py:138 msgid "Primary keys of the role to which this access control list binds to." -msgstr "" +msgstr "Primary keys of the role to which this access control list binds to." #: views.py:73 -#, fuzzy, python-format +#, python-format msgid "New access control lists for: %s" -msgstr "access control lists for: %s" +msgstr "New access control lists for: %s" #: views.py:100 -#, fuzzy, python-format +#, python-format #| msgid "Default ACLs" msgid "Delete ACL: %s" -msgstr "Default ACLs" +msgstr "Delete ACL: %s" #: views.py:138 -#, fuzzy, python-format +#, python-format msgid "Access control lists for: %s" -msgstr "access control lists for: %s" +msgstr "Access control lists for: %s" #: views.py:150 -#, fuzzy msgid "Available permissions" -msgstr "has permission" +msgstr "Available permissions" #: views.py:151 -#, fuzzy msgid "Granted permissions" -msgstr "has permission" +msgstr "Granted permissions" #: views.py:206 #, python-format msgid "Role \"%(role)s\" permission's for \"%(object)s\"" -msgstr "" +msgstr "Role \"%(role)s\" permission's for \"%(object)s\"" #: views.py:226 msgid "Disabled permissions are inherited from a parent object." -msgstr "" +msgstr "Disabled permissions are inherited from a parent object." #~ msgid "New holder" #~ msgstr "New holder" @@ -157,34 +150,27 @@ msgstr "" #~ msgid "Special" #~ msgstr "Special" -#, fuzzy #~ msgid "Details" #~ msgstr "details" -#, fuzzy #~ msgid "Grant" #~ msgstr "grant" -#, fuzzy #~ msgid "Revoke" #~ msgstr "revoke" -#, fuzzy #~ msgid "Classes" #~ msgstr "classes" #~ msgid "ACLs for class" #~ msgstr "ACLs for class" -#, fuzzy #~ msgid "Permission" #~ msgstr "permissions" -#, fuzzy #~ msgid "Default access entry" #~ msgstr "default access entry" -#, fuzzy #~ msgid "Default access entries" #~ msgstr "default access entries" @@ -197,19 +183,15 @@ msgstr "" #~ msgid "View class default ACLs" #~ msgstr "View class default ACLs" -#, fuzzy #~ msgid "Holder" #~ msgstr "holder" -#, fuzzy #~ msgid "Permissions available to: %(actor)s for %(obj)s" #~ msgstr "permissions available to: %(actor)s for %(obj)s" -#, fuzzy #~ msgid "Namespace" #~ msgstr "namespace" -#, fuzzy #~ msgid "Label" #~ msgstr "label" @@ -247,31 +229,24 @@ msgstr "" #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#, fuzzy #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" #~ msgid "Select" #~ msgstr "Select" -#, fuzzy #~ msgid "Class" #~ msgstr "class" -#, fuzzy #~ msgid "Default access control lists for class: %s" #~ msgstr "default access control lists for class: %s" -#, fuzzy #~ msgid "Permissions available to: %(actor)s for class %(class)s" #~ msgstr "permissions available to: %(actor)s for class %(class)s" -#, fuzzy #~ msgid "Add new holder for class: %s" #~ msgstr "add new holder for class: %s" diff --git a/mayan/apps/acls/locale/es/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/es/LC_MESSAGES/django.mo index 31037eada1..37dc7b769a 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 25623de8d2..04eb29ac77 100644 --- a/mayan/apps/acls/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/acls/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: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-0400\n" "PO-Revision-Date: 2017-05-28 19:52+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" diff --git a/mayan/apps/acls/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/fa/LC_MESSAGES/django.mo index 620d52383f..ead63b80ee 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 cc6bfeefcf..c71be65102 100644 --- a/mayan/apps/acls/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/fa/LC_MESSAGES/django.po @@ -1,22 +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: +# Nima Towhidi , 2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:48-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" -"Language: fa\n" +"POT-Creation-Date: 2017-06-23 01:38-0400\n" +"PO-Revision-Date: 2017-05-12 07:22+0000\n" +"Last-Translator: Nima Towhidi \n" +"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/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:15 links.py:35 @@ -28,6 +28,7 @@ msgid "Permissions" msgstr "مجوزها" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "نقش" @@ -36,6 +37,7 @@ msgid "Delete" msgstr "حذف" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "" @@ -53,6 +55,7 @@ msgstr "ورودیهای دسترسی" #: models.py:57 #, 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 "" @@ -89,6 +92,7 @@ msgstr "" #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" msgstr "" @@ -109,6 +113,7 @@ msgstr "" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" @@ -119,11 +124,11 @@ msgstr "لیست کنترل دسترسی ها برای : %s" #: views.py:150 msgid "Available permissions" -msgstr "" +msgstr "مجوزهای موجود" #: views.py:151 msgid "Granted permissions" -msgstr "" +msgstr "مجوزهای داده شده" #: views.py:206 #, python-format @@ -132,7 +137,7 @@ msgstr "" #: views.py:226 msgid "Disabled permissions are inherited from a parent object." -msgstr "" +msgstr "مجوزهای غیرفعال، از شیء بالاتر به ارث رسیده‌اند." #~ msgid "New holder" #~ msgstr "New holder" @@ -225,10 +230,8 @@ msgstr "" #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" diff --git a/mayan/apps/acls/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/fr/LC_MESSAGES/django.mo index c44a0e307d..486edef15c 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 ef2e95aa33..0eefff981e 100644 --- a/mayan/apps/acls/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/acls/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: # Christophe CHAUVET , 2016 @@ -10,15 +10,14 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: fr\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" "Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: apps.py:15 links.py:35 @@ -30,6 +29,7 @@ msgid "Permissions" msgstr "Permissions" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "Rôle" @@ -38,6 +38,7 @@ msgid "Delete" msgstr "Suppression" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "Nouveau droit" @@ -55,9 +56,9 @@ msgstr "Entrées d'accès" #: models.py:57 #, 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 "" -"Permissions \"%(permissions)s\" du rôle \"%(role)s\" pour \"%(object)s\"" +msgstr "Permissions \"%(permissions)s\" du rôle \"%(role)s\" pour \"%(object)s\"" #: models.py:74 msgid "None" @@ -92,6 +93,7 @@ msgstr "" #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" msgstr "" @@ -112,6 +114,7 @@ msgstr "Nouvelle liste de contrôle d'accès pour: %s" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "Supprimer le droit: %s" @@ -228,10 +231,8 @@ msgstr "La désactivation de permission est hérité de l'objet parent" #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" diff --git a/mayan/apps/acls/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/hu/LC_MESSAGES/django.mo index f33ad705f0..3304a99b49 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 8ae68ed97a..7289a40624 100644 --- a/mayan/apps/acls/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/hu/LC_MESSAGES/django.po @@ -1,22 +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: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: hu\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" "Content-Transfer-Encoding: 8bit\n" +"Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:15 links.py:35 @@ -28,6 +27,7 @@ msgid "Permissions" msgstr "" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "" @@ -36,6 +36,7 @@ msgid "Delete" msgstr "" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "" @@ -53,6 +54,7 @@ msgstr "" #: models.py:57 #, 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 "" @@ -89,6 +91,7 @@ msgstr "" #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" msgstr "" @@ -109,6 +112,7 @@ msgstr "" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" @@ -225,10 +229,8 @@ msgstr "" #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" diff --git a/mayan/apps/acls/locale/id/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/id/LC_MESSAGES/django.mo index b28642baeb..30bb240717 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 a63647740d..a718e46cb1 100644 --- a/mayan/apps/acls/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/id/LC_MESSAGES/django.po @@ -1,22 +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: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: id\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" "Content-Transfer-Encoding: 8bit\n" +"Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:15 links.py:35 @@ -28,6 +27,7 @@ msgid "Permissions" msgstr "" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "" @@ -36,6 +36,7 @@ msgid "Delete" msgstr "" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "" @@ -53,6 +54,7 @@ msgstr "" #: models.py:57 #, 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 "" @@ -89,6 +91,7 @@ msgstr "" #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" msgstr "" @@ -109,6 +112,7 @@ msgstr "" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" @@ -225,10 +229,8 @@ msgstr "" #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" diff --git a/mayan/apps/acls/locale/it/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/it/LC_MESSAGES/django.mo index 77e2224448..e22a3f097d 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 f7a08495da..f8dd65cb4a 100644 --- a/mayan/apps/acls/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/it/LC_MESSAGES/django.po @@ -1,23 +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: -# Marco Camplese , 2016 +# Marco Camplese , 2016-2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:48-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" -"Language: it\n" +"POT-Creation-Date: 2017-06-23 01:38-0400\n" +"PO-Revision-Date: 2017-04-28 07: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" "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:15 links.py:35 @@ -29,6 +28,7 @@ msgid "Permissions" msgstr "Permessi" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "Ruolo" @@ -37,6 +37,7 @@ msgid "Delete" msgstr "Cancella" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "Nuova ACL" @@ -54,6 +55,7 @@ msgstr "Voci di accesso" #: models.py:57 #, 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\"" @@ -76,32 +78,33 @@ msgstr "Visualizza ACL" #: serializers.py:24 serializers.py:132 msgid "" "API URL pointing to the list of permissions for this access control list." -msgstr "" +msgstr "URL delle API che punta alla lista controllo accessi" #: 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 "" +msgstr "API URL che indica una autorizzazione in relazione all'elenco di controllo di accesso a cui è associato. Questo URL è diverso dall'originale canonico URL." #: serializers.py:87 msgid "Primary key of the new permission to grant to the access control list." -msgstr "" +msgstr "Chiavi primarie del permesso per garantire la lista controllo accessi" #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" -msgstr "" +msgstr "Nessun permesso: %s" #: serializers.py:126 msgid "" "Comma separated list of permission primary keys to grant to this access " "control list." -msgstr "" +msgstr "Lista separata da virgole delle chiavi primarie dei permessi per garantire l'accesso alle liste di controllo" #: serializers.py:138 msgid "Primary keys of the role to which this access control list binds to." -msgstr "" +msgstr "Chiavi primarie del ruolo a cui si lega la lista controllo accessi" #: views.py:73 #, python-format @@ -110,6 +113,7 @@ msgstr "Nuova lista di controllo accesso per: %s" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "Cancella ACL: %s" @@ -226,10 +230,8 @@ msgstr "Il permesso disabilita è ereditato dall'oggetto padre" #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" 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 3b6b264f80..8e4b725c7f 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 437b0917f3..58f638114b 100644 --- a/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/acls/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,15 +10,14 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: nl_NL\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" "Content-Transfer-Encoding: 8bit\n" +"Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:15 links.py:35 @@ -30,6 +29,7 @@ msgid "Permissions" msgstr "Permissies" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "Gebruikersrol" @@ -38,6 +38,7 @@ msgid "Delete" msgstr "Verwijder" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "Nieuwe authorisatielijst" @@ -55,10 +56,9 @@ msgstr "Authorisaties invoer" #: models.py:57 #, 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\"" +msgstr "Permissies \"%(permissions)s\" voor gebruikersrol \"%(role)s\" voor \"%(object)s\"" #: models.py:74 msgid "None" @@ -93,6 +93,7 @@ msgstr "" #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" msgstr "" @@ -113,6 +114,7 @@ msgstr "Nieuwe authorisatielijsten voor: %s" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "Verwijder authorisatielijst: %s" @@ -229,10 +231,8 @@ msgstr "Uitgeschakelde permissies zijn geërfd van een parent object." #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" diff --git a/mayan/apps/acls/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/pl/LC_MESSAGES/django.mo index bfacc1b6cf..40169c60f9 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 fab35772bb..a05a7f3698 100644 --- a/mayan/apps/acls/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/pl/LC_MESSAGES/django.po @@ -1,26 +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: # Wojtek Warczakowski , 2016 +# Wojtek Warczakowski , 2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:48-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" -"Language: pl\n" +"POT-Creation-Date: 2017-06-23 01:38-0400\n" +"PO-Revision-Date: 2017-06-02 17:23+0000\n" +"Last-Translator: Wojtek Warczakowski \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" -"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" +"Language: pl\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" #: apps.py:15 links.py:35 msgid "ACLs" @@ -31,6 +29,7 @@ msgid "Permissions" msgstr "Uprawnienia" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "Rola" @@ -39,6 +38,7 @@ msgid "Delete" msgstr "Usuń" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "Nowa lista ACL" @@ -56,8 +56,9 @@ msgstr "Zgłoszenia dostępu" #: models.py:57 #, 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 "Uprawnienia \"%(permissions)s\" dla roli \"%(role)s\" dotyczące \"%(object)s\"" #: models.py:74 msgid "None" @@ -78,32 +79,33 @@ msgstr "Przeglądaj listy ACL" #: serializers.py:24 serializers.py:132 msgid "" "API URL pointing to the list of permissions for this access control list." -msgstr "" +msgstr "API URL prowadzący do listy uprawnień dla listy kontroli dostępu." #: 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 "" +msgstr "API URL prowadzący do uprawnienia w liście kontroli dostępu, w której uprawnienie występuje. " #: serializers.py:87 msgid "Primary key of the new permission to grant to the access control list." -msgstr "" +msgstr "Klucz główny nowego uprawnienia dla udzielenia dostępu do listy kontroli dostępu." #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" -msgstr "" +msgstr "Brak uprawnienia: %s" #: serializers.py:126 msgid "" "Comma separated list of permission primary keys to grant to this access " "control list." -msgstr "" +msgstr "Rozdzielona przecinkami lista uprawnień kluczy głównych dla udzielenia dostępu do listy kontroli dostępu." #: serializers.py:138 msgid "Primary keys of the role to which this access control list binds to." -msgstr "" +msgstr "Klucze główne roli, z którymi związana jest ta lista kontroli dostępu." #: views.py:73 #, python-format @@ -112,6 +114,7 @@ msgstr "Nowe listy ACL dla: %s" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "Usuń listę ACL: %s" @@ -228,10 +231,8 @@ msgstr "Domyślne uprawnienia są dziedziczone z obiektu nadrzędnego." #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" diff --git a/mayan/apps/acls/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/pt/LC_MESSAGES/django.mo index cfad490f15..747aa9d86d 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 1710780c16..d207ef2cb4 100644 --- a/mayan/apps/acls/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/pt/LC_MESSAGES/django.po @@ -1,22 +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: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: pt\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" "Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: apps.py:15 links.py:35 @@ -28,6 +27,7 @@ msgid "Permissions" msgstr "Permissões" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "" @@ -36,6 +36,7 @@ msgid "Delete" msgstr "Eliminar" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "" @@ -53,6 +54,7 @@ msgstr "" #: models.py:57 #, 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 "" @@ -89,6 +91,7 @@ msgstr "" #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" msgstr "" @@ -109,6 +112,7 @@ msgstr "" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" @@ -225,10 +229,8 @@ msgstr "" #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" 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 5829308913..41ccf3fc58 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 ad4b749abf..1c5e7a95ee 100644 --- a/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.po @@ -1,34 +1,35 @@ # 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 +# Jadson Ribeiro , 2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:48-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" -"Language: pt_BR\n" +"POT-Creation-Date: 2017-06-23 01:38-0400\n" +"PO-Revision-Date: 2017-05-04 19:12+0000\n" +"Last-Translator: Jadson Ribeiro \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" "Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: apps.py:15 links.py:35 msgid "ACLs" -msgstr "ACLs" +msgstr "Controle Acesso \"ACLs\"" #: apps.py:25 links.py:44 models.py:44 msgid "Permissions" msgstr "Permissões" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "Regras" @@ -37,8 +38,9 @@ msgid "Delete" msgstr "Excluir" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" -msgstr "Nova ACL" +msgstr "Nova regra" #: managers.py:109 msgid "Insufficient access." @@ -54,9 +56,9 @@ msgstr "Entradas de acesso" #: models.py:57 #, 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\"" +msgstr "Permissões \"%(permissions)s\" do papel \"%(role)s\" para \"%(object)s\"" #: models.py:74 msgid "None" @@ -68,41 +70,42 @@ msgstr "Listas de controle de acesso" #: permissions.py:10 msgid "Edit ACLs" -msgstr "Editar ACLs" +msgstr "Editar regras" #: permissions.py:13 msgid "View ACLs" -msgstr "Visualizar ACLs" +msgstr "Visualizar regras" #: serializers.py:24 serializers.py:132 msgid "" "API URL pointing to the list of permissions for this access control list." -msgstr "" +msgstr "API URL apontando para a lista de permissões para esta lista de controle de acesso." #: 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 "" +msgstr "API URL apontando para uma permissão em relação à lista de controle de acesso à qual ela está anexada. Esse URL é diferente do URL de fluxo de trabalho canônico." #: serializers.py:87 msgid "Primary key of the new permission to grant to the access control list." -msgstr "" +msgstr "Chave primária da nova permissão para conceder à lista de controle de acesso." #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" -msgstr "" +msgstr "Sem permissão: %s" #: serializers.py:126 msgid "" "Comma separated list of permission primary keys to grant to this access " "control list." -msgstr "" +msgstr "Lista de chaves primárias de permissão separadas por vírgulas para conceder a esta lista de controle de acesso." #: serializers.py:138 msgid "Primary keys of the role to which this access control list binds to." -msgstr "" +msgstr "As chaves primárias da função a que esta lista de controle de acesso se liga." #: views.py:73 #, python-format @@ -111,6 +114,7 @@ msgstr "Nova lista de controle de acesso para: %s" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "Apagar ACL: %s" @@ -227,10 +231,8 @@ msgstr "As permissões inativas foram herdadas de um objeto precedente." #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" 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 48f65beb94..5ec5f2b94f 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 1287acded5..074d33b6fd 100644 --- a/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.po @@ -1,24 +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: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: ro_RO\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" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" -"2:1));\n" +"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:15 links.py:35 msgid "ACLs" @@ -29,6 +27,7 @@ msgid "Permissions" msgstr "Permisiuni" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "" @@ -37,6 +36,7 @@ msgid "Delete" msgstr "Șterge" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "" @@ -54,6 +54,7 @@ msgstr "" #: models.py:57 #, 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 "" @@ -90,6 +91,7 @@ msgstr "" #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" msgstr "" @@ -110,6 +112,7 @@ msgstr "" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" @@ -226,10 +229,8 @@ msgstr "" #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" diff --git a/mayan/apps/acls/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/ru/LC_MESSAGES/django.mo index fe350c6fe1..e60b4764c1 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 ad3c8d2300..a9634d2261 100644 --- a/mayan/apps/acls/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/acls/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,18 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: ru\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" "Content-Transfer-Encoding: 8bit\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" +"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:15 links.py:35 msgid "ACLs" @@ -31,6 +28,7 @@ msgid "Permissions" msgstr "Разрешения" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "Роль" @@ -39,6 +37,7 @@ msgid "Delete" msgstr "Удалить" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "Создать СУД" @@ -56,6 +55,7 @@ msgstr "Элементы доступа" #: models.py:57 #, 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 "" @@ -92,6 +92,7 @@ msgstr "" #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" msgstr "" @@ -112,6 +113,7 @@ msgstr "Новый СУД для: %s" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "Удалить СУД: %s" @@ -228,10 +230,8 @@ msgstr "Отключенные права наследуются от родит #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" 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 d4e513b59b..63f7ae5feb 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 b9239d5249..d183dd5002 100644 --- a/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.po @@ -1,24 +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: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: sl_SI\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" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" -"%100==4 ? 2 : 3);\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" #: apps.py:15 links.py:35 msgid "ACLs" @@ -29,6 +27,7 @@ msgid "Permissions" msgstr "Pravice" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "" @@ -37,6 +36,7 @@ msgid "Delete" msgstr "" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "" @@ -54,6 +54,7 @@ msgstr "Vstopne točke" #: models.py:57 #, 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 "" @@ -90,6 +91,7 @@ msgstr "" #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" msgstr "" @@ -110,6 +112,7 @@ msgstr "" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" @@ -226,10 +229,8 @@ msgstr "" #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" 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 ee68e11262..dec87f0359 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 57756adcdb..268d7a7e97 100644 --- a/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.po @@ -1,22 +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: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: vi_VN\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" "Content-Transfer-Encoding: 8bit\n" +"Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:15 links.py:35 @@ -28,6 +27,7 @@ msgid "Permissions" msgstr "" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "" @@ -36,6 +36,7 @@ msgid "Delete" msgstr "" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "" @@ -53,6 +54,7 @@ msgstr "" #: models.py:57 #, 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 "" @@ -89,6 +91,7 @@ msgstr "" #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" msgstr "" @@ -109,6 +112,7 @@ msgstr "" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" @@ -225,10 +229,8 @@ msgstr "" #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" 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 78ae5724d4..85e3f9d953 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 122cae7035..41aae73307 100644 --- a/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.po @@ -1,22 +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: # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: zh_CN\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" "Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: apps.py:15 links.py:35 @@ -28,6 +27,7 @@ msgid "Permissions" msgstr "权限" #: apps.py:29 models.py:46 +#| msgid "Roles" msgid "Role" msgstr "" @@ -36,6 +36,7 @@ msgid "Delete" msgstr "" #: links.py:39 +#| msgid "View ACLs" msgid "New ACL" msgstr "" @@ -53,6 +54,7 @@ msgstr "多个访问入口" #: models.py:57 #, 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 "" @@ -89,6 +91,7 @@ msgstr "" #: serializers.py:111 serializers.py:187 #, python-format +#| msgid "permission" msgid "No such permission: %s" msgstr "" @@ -109,6 +112,7 @@ msgstr "" #: views.py:100 #, python-format +#| msgid "Default ACLs" msgid "Delete ACL: %s" msgstr "" @@ -225,10 +229,8 @@ msgstr "" #~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." #~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -#~ msgid "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -#~ msgstr "" -#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." #~ msgid "Add new holder for: %s" #~ msgstr "add new holder for: %s" diff --git a/mayan/apps/acls/models.py b/mayan/apps/acls/models.py index 3e7cc833ff..e580c980e0 100644 --- a/mayan/apps/acls/models.py +++ b/mayan/apps/acls/models.py @@ -5,7 +5,7 @@ import logging from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.db import models -from django.utils.encoding import python_2_unicode_compatible +from django.utils.encoding import force_text, python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ from permissions.models import Role, StoredPermission @@ -68,7 +68,7 @@ class AccessControlList(models.Model): def get_permission_titles(self): result = ', '.join( - [unicode(permission) for permission in self.permissions.all()] + [force_text(permission) for permission in self.permissions.all()] ) return result or _('None') diff --git a/mayan/apps/acls/views.py b/mayan/apps/acls/views.py index 4e6747b432..b2913d940a 100644 --- a/mayan/apps/acls/views.py +++ b/mayan/apps/acls/views.py @@ -7,6 +7,7 @@ from django.contrib.contenttypes.models import ContentType from django.core.urlresolvers import reverse from django.http import Http404, HttpResponseRedirect from django.shortcuts import get_object_or_404 +from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ from common.views import ( @@ -156,7 +157,7 @@ class ACLPermissionsView(AssignRemoveView): for namespace, permissions in itertools.groupby(entries, lambda entry: entry.namespace): permission_options = [ - (unicode(permission.pk), permission) for permission in permissions + (force_text(permission.pk), permission) for permission in permissions ] results.append( (PermissionNamespace.get(namespace), permission_options) diff --git a/mayan/apps/appearance/literals.py b/mayan/apps/appearance/literals.py new file mode 100644 index 0000000000..6266e3e975 --- /dev/null +++ b/mayan/apps/appearance/literals.py @@ -0,0 +1 @@ +DEFAULT_MAXIMUM_TITLE_LENGTH = 80 diff --git a/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.mo index bd541a293f..3314174aef 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 71ec9539c6..36376e4dc4 100644 --- a/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.po @@ -1,25 +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: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: ar\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" "Content-Transfer-Encoding: 8bit\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" +"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:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "" @@ -45,8 +43,8 @@ msgstr "" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." msgstr "" #: templates/500.html:14 @@ -112,17 +110,17 @@ msgstr "الإجراءات" msgid "Toggle Dropdown" msgstr "" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "تفاصيل عن %(object)s" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "انشاء" @@ -237,9 +235,7 @@ msgstr "First time login" msgid "" "You have just finished installing Mayan EDMS, " "congratulations!" -msgstr "" -"You have just finished installing Mayan EDMS, " -"congratulations!" +msgstr "You have just finished installing Mayan EDMS, congratulations!" #: templates/appearance/login.html:25 msgid "Login using the following credentials:" @@ -264,9 +260,7 @@ msgstr "Password: %(password)s" msgid "" "Be sure to change the password to increase security and to disable this " "message." -msgstr "" -"Be sure to change the password to increase security and to disable this " -"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:54 msgid "Sign in" diff --git a/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.mo index d3eea4becf..1e8e2e9fa5 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 79261bba06..58a444e404 100644 --- a/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.po @@ -1,24 +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: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: bg\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" "Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "" @@ -44,8 +43,8 @@ msgstr "" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." msgstr "" #: templates/500.html:14 @@ -111,17 +110,17 @@ msgstr "Действия" msgid "Toggle Dropdown" msgstr "" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "Създаване" @@ -236,8 +235,7 @@ msgstr "Логване за първи път" msgid "" "You have just finished installing Mayan EDMS, " "congratulations!" -msgstr "" -"Вие приключихте инсталирането на Mayan EDMS, поздравления!" +msgstr "Вие приключихте инсталирането на Mayan EDMS, поздравления!" #: templates/appearance/login.html:25 msgid "Login using the following credentials:" @@ -262,9 +260,7 @@ msgstr "Парола: %(password)s" msgid "" "Be sure to change the password to increase security and to disable this " "message." -msgstr "" -"Моля променете паролата, за да повишите нивото на сигурност и да " -"деактивирате това съобщение." +msgstr "Моля променете паролата, за да повишите нивото на сигурност и да деактивирате това съобщение." #: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" 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 6dced26e8a..733efc5f79 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 39fc62870a..175f41c1f5 100644 --- a/mayan/apps/appearance/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/bs_BA/LC_MESSAGES/django.po @@ -1,25 +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: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: bs_BA\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" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Language: 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:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "" @@ -45,8 +43,8 @@ msgstr "" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." msgstr "" #: templates/500.html:14 @@ -112,17 +110,17 @@ msgstr "Akcije" msgid "Toggle Dropdown" msgstr "" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "Detalji o: %(object)s" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "Kreirati" @@ -237,8 +235,7 @@ msgstr "Prijava - prvi put" msgid "" "You have just finished installing Mayan EDMS, " "congratulations!" -msgstr "" -"Upravo ste završili instalaciju Mayan EDMS, čestitamo!" +msgstr "Upravo ste završili instalaciju Mayan EDMS, čestitamo!" #: templates/appearance/login.html:25 msgid "Login using the following credentials:" @@ -263,9 +260,7 @@ msgstr "Pasvord: %(password)s" msgid "" "Be sure to change the password to increase security and to disable this " "message." -msgstr "" -"Ne zaboravite promijeniti pasvord da pojačate sigurnost i onemogućite dalje " -"prikazivanje ove poruke." +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:54 msgid "Sign in" diff --git a/mayan/apps/appearance/locale/da/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/da/LC_MESSAGES/django.mo index 1b6283487c..ced6c407e7 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 6b7a828a35..c371389d14 100644 --- a/mayan/apps/appearance/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/da/LC_MESSAGES/django.po @@ -1,24 +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: 2017-05-28 15:48-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: da\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" "Content-Transfer-Encoding: 8bit\n" +"Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "" @@ -44,8 +43,8 @@ msgstr "" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." msgstr "" #: templates/500.html:14 @@ -111,17 +110,17 @@ msgstr "Handlinger" msgid "Toggle Dropdown" msgstr "" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" 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 548e8afb35..80cea8b159 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 2e159f7bca..dac8cb08e5 100644 --- a/mayan/apps/appearance/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/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 # Jesaja Everling , 2017 @@ -9,18 +9,17 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:49-0400\n" -"PO-Revision-Date: 2017-04-24 22:57+0000\n" +"POT-Creation-Date: 2017-06-23 01:38-0400\n" +"PO-Revision-Date: 2017-04-26 15:55+0000\n" "Last-Translator: Jesaja Everling \n" -"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-" -"edms/language/de_DE/)\n" -"Language: de_DE\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" "Content-Transfer-Encoding: 8bit\n" +"Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "Erscheinungsbild" @@ -46,19 +45,15 @@ msgstr "Serverfehler" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"Es kam zu einem Fehler. Der Fehler wurde per E-Mail and die Administratoren " -"gemeldet und sollte bald behoben werden. Vielen Dank für Ihre Geduld." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "Es kam zu einem Fehler. Der Fehler wurde per E-Mail and die Administratoren gemeldet und sollte bald behoben werden. Vielen Dank für Ihre Geduld." #: templates/500.html:14 msgid "" "If you need assistance, you may reference this error via the following " "identifier:" -msgstr "" -"Wenn Sie Hilfe brauchen, können Sie den Fehler über folgende Kennung " -"referenzieren: " +msgstr "Wenn Sie Hilfe brauchen, können Sie den Fehler über folgende Kennung referenzieren: " #: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" @@ -117,23 +112,23 @@ msgstr "Aktionen" msgid "Toggle Dropdown" msgstr "Ausklappmenü ein-/ausschalten" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "Details für: %(object)s" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "%(object)s bearbeiten" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "Erstellen" #: templates/appearance/dashboard_widget.html:25 msgid "View details" -msgstr "" +msgstr "Details ansehen" #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 @@ -190,9 +185,7 @@ msgstr "Kein Ergebnis" msgid "" "Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " "%(total_pages)s)" -msgstr "" -"Gesamt (%(start)s - %(end)s von %(total)s) (Seite %(page_number)s von " -"%(total_pages)s)" +msgstr "Gesamt (%(start)s - %(end)s von %(total)s) (Seite %(page_number)s von %(total_pages)s)" #: templates/appearance/generic_list_subtemplate.html:14 #: templates/appearance/generic_list_subtemplate.html:17 @@ -206,7 +199,7 @@ msgstr "Bezeichner" #: templates/appearance/home.html:9 templates/appearance/home.html:13 msgid "Dashboard" -msgstr "" +msgstr "Dashboard" #: templates/appearance/home.html:22 msgid "Getting started" @@ -218,7 +211,7 @@ msgstr "Bevor Mayan EDMS voll genutzt werden kann, muss folgendes passieren:" #: templates/appearance/home.html:46 msgid "Search pages" -msgstr "" +msgstr "Seiten durchsuchen" #: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" @@ -230,7 +223,7 @@ msgstr "Erweitert" #: templates/appearance/home.html:56 msgid "Search documents" -msgstr "" +msgstr "Dokumente durchsuchen" #: templates/appearance/login.html:10 msgid "Login" @@ -244,9 +237,7 @@ msgstr "Erstanmeldung" msgid "" "You have just finished installing Mayan EDMS, " "congratulations!" -msgstr "" -"Herzlichen Glückwunsch! Sie haben die Installation von Mayan EDMS erfolgreich abgeschlossen. " +msgstr "Herzlichen Glückwunsch! Sie haben die Installation von Mayan EDMS erfolgreich abgeschlossen. " #: templates/appearance/login.html:25 msgid "Login using the following credentials:" @@ -271,9 +262,7 @@ msgstr "Passwort: %(password)s" msgid "" "Be sure to change the password to increase security and to disable this " "message." -msgstr "" -"Bitte ändern Sie das Passwort, um die Sicherheit zu erhöhen und diese " -"Nachricht zu deaktivieren." +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:54 msgid "Sign in" diff --git a/mayan/apps/appearance/locale/en/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/en/LC_MESSAGES/django.mo index 6584aef737..bd21c306a8 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 5e7016ccee..a27f621ffe 100644 --- a/mayan/apps/appearance/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/en/LC_MESSAGES/django.po @@ -1,271 +1,271 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:49-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" +"POT-Creation-Date: 2017-06-23 01:38-0400\n" +"PO-Revision-Date: 2017-04-21 16:25+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: English (http://www.transifex.com/rosarior/mayan-edms/language/en/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: en\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:12 +#: apps.py:12 settings.py:9 msgid "Appearance" -msgstr "" +msgstr "Appearance" #: templates/403.html:5 templates/403.html:9 msgid "Insufficient permissions" -msgstr "" +msgstr "Insufficient permissions" #: templates/403.html:11 msgid "You don't have enough permissions for this operation." -msgstr "" +msgstr "You don't have enough permissions for this operation." #: templates/404.html:5 templates/404.html:9 msgid "Page not found" -msgstr "" +msgstr "Page not found" #: templates/404.html:11 msgid "Sorry, but the requested page could not be found." -msgstr "" +msgstr "Sorry, but the requested page could not be found." #: templates/500.html:5 templates/500.html:9 msgid "Server error" -msgstr "" +msgstr "Server error" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience." #: templates/500.html:14 msgid "" "If you need assistance, you may reference this error via the following " "identifier:" -msgstr "" +msgstr "If you need assistance, you may reference this error via the following identifier:" #: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" -msgstr "" +msgstr "About" #: templates/appearance/about.html:62 msgid "Version" -msgstr "" +msgstr "Version" #: templates/appearance/about.html:64 #, python-format msgid "Build number: %(build_number)s" -msgstr "" +msgstr "Build number: %(build_number)s" #: templates/appearance/about.html:76 msgid "Released under the Apache 2.0 License" -msgstr "" +msgstr "Released under the Apache 2.0 License" #: templates/appearance/about.html:88 msgid "Copyright © 2011-2015 Roberto Rosario." -msgstr "" +msgstr "Copyright © 2011-2015 Roberto Rosario." #: templates/appearance/base.html:56 msgid "Toggle navigation" -msgstr "" +msgstr "Toggle navigation" #: templates/appearance/base.html:86 msgid "Profile" -msgstr "" +msgstr "Profile" #: templates/appearance/base.html:92 msgid "Anonymous" -msgstr "" +msgstr "Anonymous" #: templates/appearance/base.html:126 msgid "Success" -msgstr "" +msgstr "Success" #: templates/appearance/base.html:126 msgid "Information" -msgstr "" +msgstr "Information" #: templates/appearance/base.html:126 msgid "Warning" -msgstr "" +msgstr "Warning" #: templates/appearance/base.html:126 msgid "Error" -msgstr "" +msgstr "Error" #: templates/appearance/base.html:155 msgid "Actions" -msgstr "" +msgstr "Actions" #: templates/appearance/base.html:157 msgid "Toggle Dropdown" -msgstr "" +msgstr "Toggle Dropdown" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" -msgstr "" +msgstr "Details for: %(object)s" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" -msgstr "" +msgstr "Edit: %(object)s" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" -msgstr "" +msgstr "Create" #: templates/appearance/dashboard_widget.html:25 msgid "View details" -msgstr "" +msgstr "View details" #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 msgid "Confirm" -msgstr "" +msgstr "Confirm" #: templates/appearance/generic_confirm.html:11 msgid "Confirm delete" -msgstr "" +msgstr "Confirm delete" #: templates/appearance/generic_confirm.html:27 #, python-format msgid "Delete: %(object)s?" -msgstr "" +msgstr "Delete: %(object)s?" #: templates/appearance/generic_confirm.html:48 msgid "Yes" -msgstr "" +msgstr "Yes" #: templates/appearance/generic_confirm.html:52 msgid "No" -msgstr "" +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:42 msgid "required" -msgstr "" +msgstr "required" #: templates/appearance/generic_form_subtemplate.html:71 #: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Save" -msgstr "" +msgstr "Save" #: templates/appearance/generic_form_subtemplate.html:71 #: templates/appearance/generic_list_subtemplate.html:33 #: templates/appearance/generic_multiform_subtemplate.html:64 msgid "Submit" -msgstr "" +msgstr "Submit" #: templates/appearance/generic_form_subtemplate.html:74 #: templates/appearance/generic_multiform_subtemplate.html:68 msgid "Cancel" -msgstr "" +msgstr "Cancel" #: templates/appearance/generic_list_horizontal.html:21 #: templates/appearance/generic_list_subtemplate.html:112 msgid "No results" -msgstr "" +msgstr "No results" #: templates/appearance/generic_list_subtemplate.html:12 #, python-format msgid "" "Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " "%(total_pages)s)" -msgstr "" +msgstr "Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of %(total_pages)s)" #: templates/appearance/generic_list_subtemplate.html:14 #: templates/appearance/generic_list_subtemplate.html:17 #, python-format msgid "Total: %(total)s" -msgstr "" +msgstr "Total: %(total)s" #: templates/appearance/generic_list_subtemplate.html:53 msgid "Identifier" -msgstr "" +msgstr "Identifier" #: templates/appearance/home.html:9 templates/appearance/home.html:13 msgid "Dashboard" -msgstr "" +msgstr "Dashboard" #: templates/appearance/home.html:22 msgid "Getting started" -msgstr "" +msgstr "Getting started" #: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" -msgstr "" +msgstr "Before you can fully use Mayan EDMS you need the following:" #: templates/appearance/home.html:46 msgid "Search pages" -msgstr "" +msgstr "Search pages" #: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" -msgstr "" +msgstr "Search" #: templates/appearance/home.html:49 templates/appearance/home.html:59 msgid "Advanced" -msgstr "" +msgstr "Advanced" #: templates/appearance/home.html:56 msgid "Search documents" -msgstr "" +msgstr "Search documents" #: templates/appearance/login.html:10 msgid "Login" -msgstr "" +msgstr "Login" #: templates/appearance/login.html:21 msgid "First time login" -msgstr "" +msgstr "First time login" #: templates/appearance/login.html:24 msgid "" "You have just finished installing Mayan EDMS, " "congratulations!" -msgstr "" +msgstr "You have just finished installing Mayan EDMS, congratulations!" #: templates/appearance/login.html:25 msgid "Login using the following credentials:" -msgstr "" +msgstr "Login using the following credentials:" #: templates/appearance/login.html:26 #, python-format msgid "Username: %(account)s" -msgstr "" +msgstr "Username: %(account)s" #: templates/appearance/login.html:27 #, python-format msgid "Email: %(email)s" -msgstr "" +msgstr "Email: %(email)s" #: templates/appearance/login.html:28 #, python-format msgid "Password: %(password)s" -msgstr "" +msgstr "Password: %(password)s" #: templates/appearance/login.html:29 msgid "" "Be sure to change the password to increase security and to disable this " "message." -msgstr "" +msgstr "Be sure to change the password to increase security and to disable this message." #: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" -msgstr "" +msgstr "Sign in" #: templatetags/appearance_tags.py:16 msgid "None" -msgstr "" +msgstr "None" diff --git a/mayan/apps/appearance/locale/es/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/es/LC_MESSAGES/django.mo index 93c5a969a7..daae59b151 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 168d72f890..ffbcb7d4ef 100644 --- a/mayan/apps/appearance/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:49-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-0400\n" "PO-Revision-Date: 2017-05-28 19:52+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" @@ -18,7 +18,7 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "Apariencia" @@ -111,17 +111,17 @@ msgstr "Acciones" msgid "Toggle Dropdown" msgstr "Alternar desplegable" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "Detalles para: %(object)s " -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "Editar: %(object)s" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "Crear" diff --git a/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.mo index 475eac7928..3a566fddff 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 7f7974322d..5bedc92269 100644 --- a/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.po @@ -1,24 +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: 2017-05-28 15:49-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: fa\n" +"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/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:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "" @@ -44,8 +43,8 @@ msgstr "" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." msgstr "" #: templates/500.html:14 @@ -111,17 +110,17 @@ msgstr "عملیات" msgid "Toggle Dropdown" msgstr "" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "جزئیات : %(object)s" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "ویرایش : %(object)s" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "ایجاد" @@ -236,9 +235,7 @@ msgstr "دفعه اول لاگین " msgid "" "You have just finished installing Mayan EDMS, " "congratulations!" -msgstr "" -"You have just finished installing Mayan EDMS, " -"congratulations!" +msgstr "You have just finished installing Mayan EDMS, congratulations!" #: templates/appearance/login.html:25 msgid "Login using the following credentials:" diff --git a/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.mo index d19eb5f2ae..c3dc74e293 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 ef4c090029..fda5ce2419 100644 --- a/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.po @@ -1,25 +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: # Thierry Schott , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:49-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: fr\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" "Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "Apparence" @@ -45,20 +44,15 @@ msgstr "Erreur du serveur" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"Une erreur vient de se produire. Elle a été signalée aux administrateurs du " -"site par courriel et devrait être résolue rapidement. Merci de votre " -"patience." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "Une erreur vient de se produire. Elle a été signalée aux administrateurs du site par courriel et devrait être résolue rapidement. Merci de votre patience." #: templates/500.html:14 msgid "" "If you need assistance, you may reference this error via the following " "identifier:" -msgstr "" -"Si vous avez besoin d'assistance, vous pouvez faire référence à cette erreur " -"grâce à l'identifiant suivant :" +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:57 msgid "About" @@ -117,17 +111,17 @@ msgstr "Actions" msgid "Toggle Dropdown" msgstr "Activer la liste déroulante" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "Détails de : %(object)s " -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "Modifie r: %(object)s" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "Créer" @@ -190,9 +184,7 @@ msgstr "Pas de résultats" msgid "" "Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " "%(total_pages)s)" -msgstr "" -"Total (%(start)s - %(end)s surof %(total)s) (Page %(page_number)s sur " -"%(total_pages)s)" +msgstr "Total (%(start)s - %(end)s surof %(total)s) (Page %(page_number)s sur %(total_pages)s)" #: templates/appearance/generic_list_subtemplate.html:14 #: templates/appearance/generic_list_subtemplate.html:17 @@ -214,9 +206,7 @@ msgstr "Démarrage" #: 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 :" +msgstr "Avant d'utiliser pleinement Mayan EDMS, les éléments suivants sont nécessaires :" #: templates/appearance/home.html:46 msgid "Search pages" @@ -246,14 +236,11 @@ msgstr "Première connexion" msgid "" "You have just finished installing Mayan EDMS, " "congratulations!" -msgstr "" -"Vous venez de finaliser l'installation de Mayan EDMS, " -"félicitations!" +msgstr "Vous venez de finaliser l'installation de Mayan EDMS, félicitations!" #: templates/appearance/login.html:25 msgid "Login using the following credentials:" -msgstr "" -"Connectez-vous en utilisant les informations d'identification suivantes :" +msgstr "Connectez-vous en utilisant les informations d'identification suivantes :" #: templates/appearance/login.html:26 #, python-format @@ -274,9 +261,7 @@ msgstr "Mot de passe : %(password)s" msgid "" "Be sure to change the password to increase security and to disable this " "message." -msgstr "" -"Assurez-vous de modifier votre mot de passe pour accroître la sécurité et " -"pour ne plus avoir ce 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:54 msgid "Sign in" diff --git a/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.mo index 459ab876b6..f238609677 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 4f18cbac72..113c137ee6 100644 --- a/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.po @@ -1,24 +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: 2017-05-28 15:49-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: hu\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" "Content-Transfer-Encoding: 8bit\n" +"Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "" @@ -44,8 +43,8 @@ msgstr "" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." msgstr "" #: templates/500.html:14 @@ -111,17 +110,17 @@ msgstr "Műveletek" msgid "Toggle Dropdown" msgstr "" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "" diff --git a/mayan/apps/appearance/locale/id/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/id/LC_MESSAGES/django.mo index 78b6e9750c..5f0186755b 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 e1a493f00e..3765729c39 100644 --- a/mayan/apps/appearance/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/id/LC_MESSAGES/django.po @@ -1,24 +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: 2017-05-28 15:49-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: id\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" "Content-Transfer-Encoding: 8bit\n" +"Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "" @@ -44,8 +43,8 @@ msgstr "" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." msgstr "" #: templates/500.html:14 @@ -111,17 +110,17 @@ msgstr "" msgid "Toggle Dropdown" msgstr "" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "" diff --git a/mayan/apps/appearance/locale/it/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/it/LC_MESSAGES/django.mo index 480039d941..6f4ed4b4c1 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 116d3b0482..66e7da8c76 100644 --- a/mayan/apps/appearance/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/it/LC_MESSAGES/django.po @@ -1,25 +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: -# Marco Camplese , 2016 +# Marco Camplese , 2016-2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:49-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" -"Language: it\n" +"POT-Creation-Date: 2017-06-23 01:38-0400\n" +"PO-Revision-Date: 2017-05-30 07:49+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" "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:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "Aspetto" @@ -45,19 +44,15 @@ msgstr "Errore del server" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"C'è stato un errore. Questo è stato riportato all'amministratore del sito " -"via e-mail e dovrebbe essere risolto presto. Grazie per la pazienza.." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "C'è stato un errore. Questo è stato riportato all'amministratore del sito via e-mail e dovrebbe essere risolto presto. Grazie per la pazienza.." #: templates/500.html:14 msgid "" "If you need assistance, you may reference this error via the following " "identifier:" -msgstr "" -"Se hai bisogno di assistenza, ti puoi riferire a questo errore con questo " -"numero:" +msgstr "Se hai bisogno di assistenza, ti puoi riferire a questo errore con questo numero:" #: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" @@ -86,7 +81,7 @@ msgstr "Cambia navigazione" #: templates/appearance/base.html:86 msgid "Profile" -msgstr "" +msgstr "Profilo" #: templates/appearance/base.html:92 msgid "Anonymous" @@ -116,23 +111,23 @@ msgstr "Azioni " msgid "Toggle Dropdown" msgstr "Apri dropdown" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "Detaglio per: %(object)s" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "Modifica: %(object)s" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "Crea" #: templates/appearance/dashboard_widget.html:25 msgid "View details" -msgstr "" +msgstr "Vedi dettagli" #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 @@ -189,9 +184,7 @@ msgstr "Nessun risultato" msgid "" "Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " "%(total_pages)s)" -msgstr "" -"Totale (%(start)s - %(end)s di %(total)s) (Pagina %(page_number)s di " -"%(total_pages)s)" +msgstr "Totale (%(start)s - %(end)s di %(total)s) (Pagina %(page_number)s di %(total_pages)s)" #: templates/appearance/generic_list_subtemplate.html:14 #: templates/appearance/generic_list_subtemplate.html:17 @@ -205,7 +198,7 @@ msgstr "Identificatore" #: templates/appearance/home.html:9 templates/appearance/home.html:13 msgid "Dashboard" -msgstr "" +msgstr "Dashboard" #: templates/appearance/home.html:22 msgid "Getting started" @@ -217,7 +210,7 @@ msgstr "Prima di usare completamente Mayan EDMS hai bisogno di:" #: templates/appearance/home.html:46 msgid "Search pages" -msgstr "" +msgstr "Cerca pagine" #: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" @@ -229,7 +222,7 @@ msgstr "Avanzato" #: templates/appearance/home.html:56 msgid "Search documents" -msgstr "" +msgstr "Cerca documenti" #: templates/appearance/login.html:10 msgid "Login" @@ -268,9 +261,7 @@ msgstr "Password: %(password)s" msgid "" "Be sure to change the password to increase security and to disable this " "message." -msgstr "" -"Ricordati di cambiare la password per aumentare la sicurezza e disabilitare " -"questo messaggio." +msgstr "Ricordati di cambiare la password per aumentare la sicurezza e disabilitare questo messaggio." #: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" 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 1e08c8d573..cda2c1869c 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 3e71a920cb..d466598668 100644 --- a/mayan/apps/appearance/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/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: # Johan Braeken, 2017 # Justin Albstbstmeijer , 2016 @@ -9,18 +9,17 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:49-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: nl_NL\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" "Content-Transfer-Encoding: 8bit\n" +"Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "Uiterlijk" @@ -46,20 +45,15 @@ msgstr "Server fout" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"Er heeft een fout plaatsgevonden. Dit is gerapporteerd via email aan de " -"beheerders van deze site en zou snel verholpen moeten worden. Bedankt voor " -"uw geduld." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "Er heeft een fout plaatsgevonden. Dit is gerapporteerd via email aan de beheerders van deze site en zou snel verholpen moeten worden. Bedankt voor uw geduld." #: templates/500.html:14 msgid "" "If you need assistance, you may reference this error via the following " "identifier:" -msgstr "" -"Als u hulp nodig heeft, kunt u naar deze fout refereren via de volgende " -"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:57 msgid "About" @@ -118,17 +112,17 @@ msgstr "Acties" msgid "Toggle Dropdown" msgstr "Toggle Dropdown" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "Details voor: %(object)s" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "Aanpassen: %(object)s" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "Maak aan" @@ -191,9 +185,7 @@ msgstr "Geen resultaten" msgid "" "Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " "%(total_pages)s)" -msgstr "" -"Totaal (%(start)s - %(end)s van %(total)s) (Pagina %(page_number)s van " -"%(total_pages)s)" +msgstr "Totaal (%(start)s - %(end)s van %(total)s) (Pagina %(page_number)s van %(total_pages)s)" #: templates/appearance/generic_list_subtemplate.html:14 #: templates/appearance/generic_list_subtemplate.html:17 @@ -215,9 +207,7 @@ msgstr "Beginnen" #: 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:" +msgstr "Voordat u volledig gebruik kunt maken van Mayan EDMS heeft u het volgende nodig:" #: templates/appearance/home.html:46 msgid "Search pages" @@ -247,8 +237,7 @@ msgstr "Eerste aanmelding" msgid "" "You have just finished installing Mayan EDMS, " "congratulations!" -msgstr "" -"U heeft de installatie volbracht Mayan EDMS, gefeliciteerd!" +msgstr "U heeft de installatie volbracht Mayan EDMS, gefeliciteerd!" #: templates/appearance/login.html:25 msgid "Login using the following credentials:" @@ -273,9 +262,7 @@ msgstr "Wachtwoord: %(password)s" msgid "" "Be sure to change the password to increase security and to disable this " "message." -msgstr "" -"Pas het wachtwoord aan om de beveiliging te verbeteren en om deze melding " -"uit te schakelen." +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:54 msgid "Sign in" diff --git a/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.mo index 3f4556b61a..3b41ae8ee4 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 c9065aa5cc..51e370b6e4 100644 --- a/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.po @@ -1,28 +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: # Wojtek Warczakowski , 2016 +# Wojtek Warczakowski , 2017 # Wojtek Warczakowski , 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:49-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" -"Language: pl\n" +"POT-Creation-Date: 2017-06-23 01:38-0400\n" +"PO-Revision-Date: 2017-05-30 16:11+0000\n" +"Last-Translator: Wojtek Warczakowski \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" -"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" +"Language: pl\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" -#: apps.py:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "Wygląd" @@ -48,19 +46,15 @@ msgstr "Błąd serwera" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"Wystąpił błąd. Wiadomość o tym została przekazana do administratorów i " -"wkrótce problem zostanie rozwiązany. Dziękujemy za cierpliwość." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "Wystąpił błąd. Wiadomość o tym została przekazana do administratorów i wkrótce problem zostanie rozwiązany. Dziękujemy za cierpliwość." #: templates/500.html:14 msgid "" "If you need assistance, you may reference this error via the following " "identifier:" -msgstr "" -"Jeśli potrzebujesz pomocy, możesz odwołać się do tego błędu poprzez " -"następujący identyfikator:" +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:57 msgid "About" @@ -89,7 +83,7 @@ msgstr "Rozwiń nawigację" #: templates/appearance/base.html:86 msgid "Profile" -msgstr "" +msgstr "Profil" #: templates/appearance/base.html:92 msgid "Anonymous" @@ -119,23 +113,23 @@ msgstr "Akcje" msgid "Toggle Dropdown" msgstr "Rozwiń listę" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "Szczegóły dla: %(object)s" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "Edytuj: %(object)s" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "Utwórz" #: templates/appearance/dashboard_widget.html:25 msgid "View details" -msgstr "" +msgstr "Pokaż szczegóły" #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 @@ -192,9 +186,7 @@ msgstr "Brak wyników" msgid "" "Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " "%(total_pages)s)" -msgstr "" -"Razem (%(start)s - %(end)s z %(total)s) (Strona %(page_number)s z " -"%(total_pages)s)" +msgstr "Razem (%(start)s - %(end)s z %(total)s) (Strona %(page_number)s z %(total_pages)s)" #: templates/appearance/generic_list_subtemplate.html:14 #: templates/appearance/generic_list_subtemplate.html:17 @@ -208,7 +200,7 @@ msgstr "Identyfikator" #: templates/appearance/home.html:9 templates/appearance/home.html:13 msgid "Dashboard" -msgstr "" +msgstr "Strona główna" #: templates/appearance/home.html:22 msgid "Getting started" @@ -220,7 +212,7 @@ msgstr "Zanim w pełni zaczniesz używać Mayan EDMS musisz:" #: templates/appearance/home.html:46 msgid "Search pages" -msgstr "" +msgstr "Przeszukaj strony" #: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" @@ -232,7 +224,7 @@ msgstr "Zaawansowane" #: templates/appearance/home.html:56 msgid "Search documents" -msgstr "" +msgstr "Przeszukaj dokumenty" #: templates/appearance/login.html:10 msgid "Login" @@ -271,9 +263,7 @@ msgstr "Hasło: %(password)s" msgid "" "Be sure to change the password to increase security and to disable this " "message." -msgstr "" -"Aby poprawić bezpieczeństwo i usunąć ten komunikat, nie zapomnij zmienić " -"hasła." +msgstr "Aby poprawić bezpieczeństwo i usunąć ten komunikat, nie zapomnij zmienić hasła." #: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" diff --git a/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.mo index 4fbbed9e0e..746a96ba81 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 2c4f1e4c6d..2b8576adff 100644 --- a/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.po @@ -1,24 +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: 2017-05-28 15:49-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: pt\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" "Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: apps.py:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "" @@ -44,8 +43,8 @@ msgstr "" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." msgstr "" #: templates/500.html:14 @@ -111,17 +110,17 @@ msgstr "Ações" msgid "Toggle Dropdown" msgstr "" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "Detalhes para: %(object)s " -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "Editar: %(object)s" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "Criar" @@ -261,9 +260,7 @@ msgstr "Senha: %(password)s" msgid "" "Be sure to change the password to increase security and to disable this " "message." -msgstr "" -"Certifique-se de que altera a senha para aumentar a segurança e que desativa " -"esta mensagem." +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:54 msgid "Sign in" 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 3d8418ddbd..65ceea423c 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 200a7d9dae..3a8503c21f 100644 --- a/mayan/apps/appearance/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/pt_BR/LC_MESSAGES/django.po @@ -1,25 +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 +# Jadson Ribeiro , 2017 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:49-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" -"Language: pt_BR\n" +"POT-Creation-Date: 2017-06-23 01:38-0400\n" +"PO-Revision-Date: 2017-05-04 19:14+0000\n" +"Last-Translator: Jadson Ribeiro \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" "Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps.py:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "Aparência" @@ -45,19 +45,15 @@ msgstr "Erro de servidor" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"Houve um erro. Os administradores da página foram informados por e-mail e " -"deverão corrigir em breve. Obrigado pela paciência." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "Houve um erro. Os administradores da página foram informados por e-mail e deverão corrigir em breve. Obrigado pela paciência." #: templates/500.html:14 msgid "" "If you need assistance, you may reference this error via the following " "identifier:" -msgstr "" -"Se você precisar de ajuda, você pode fazer referência a este erro através do " -"seguinte identificador:" +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:57 msgid "About" @@ -86,7 +82,7 @@ msgstr "Ativar/desativar navegação" #: templates/appearance/base.html:86 msgid "Profile" -msgstr "" +msgstr "Perfil" #: templates/appearance/base.html:92 msgid "Anonymous" @@ -116,23 +112,23 @@ msgstr "Ações" msgid "Toggle Dropdown" msgstr "Mostrar/esconder menu" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "Detalhes para: %(object)s" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "Editar: %(object)s" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "Criar" #: templates/appearance/dashboard_widget.html:25 msgid "View details" -msgstr "" +msgstr "Ver detalhes" #: templates/appearance/generic_confirm.html:6 #: templates/appearance/generic_confirm.html:13 @@ -189,9 +185,7 @@ msgstr "Nenhum resultado" msgid "" "Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " "%(total_pages)s)" -msgstr "" -"Total (%(start)s - %(end)s de %(total)s) (Página %(page_number)s de " -"%(total_pages)s)" +msgstr "Total (%(start)s - %(end)s de %(total)s) (Página %(page_number)s de %(total_pages)s)" #: templates/appearance/generic_list_subtemplate.html:14 #: templates/appearance/generic_list_subtemplate.html:17 @@ -205,7 +199,7 @@ msgstr "Identificador" #: templates/appearance/home.html:9 templates/appearance/home.html:13 msgid "Dashboard" -msgstr "" +msgstr "Painel de controle" #: templates/appearance/home.html:22 msgid "Getting started" @@ -217,7 +211,7 @@ msgstr "Antes de começar a usar Mayan EDMS você precisa do seguinte:" #: templates/appearance/home.html:46 msgid "Search pages" -msgstr "" +msgstr "Páginas de pesquisa" #: templates/appearance/home.html:48 templates/appearance/home.html:58 msgid "Search" @@ -229,7 +223,7 @@ msgstr "Avançada" #: templates/appearance/home.html:56 msgid "Search documents" -msgstr "" +msgstr "Pesquisar documentos" #: templates/appearance/login.html:10 msgid "Login" @@ -243,8 +237,7 @@ msgstr "Primeiro início de sessão" msgid "" "You have just finished installing Mayan EDMS, " "congratulations!" -msgstr "" -"Você acaba de terminar de instalar Maia EDMS , parabéns!" +msgstr "Você acaba de terminar de instalar Maia EDMS , parabéns!" #: templates/appearance/login.html:25 msgid "Login using the following credentials:" @@ -269,9 +262,7 @@ msgstr "Senha: %(password)s" msgid "" "Be sure to change the password to increase security and to disable this " "message." -msgstr "" -"Certifique-se de alterar a senha para aumentar a segurança e para desativar " -"esta mensagem." +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:54 msgid "Sign in" 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 3e4e1cecea..f0cc4fa5bc 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 a49e389e5f..aa5ae96592 100644 --- a/mayan/apps/appearance/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/ro_RO/LC_MESSAGES/django.po @@ -1,26 +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: 2017-05-28 15:49-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: ro_RO\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" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" -"2:1));\n" +"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:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "" @@ -46,8 +44,8 @@ msgstr "" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." msgstr "" #: templates/500.html:14 @@ -113,17 +111,17 @@ msgstr "Acţiuni" msgid "Toggle Dropdown" msgstr "" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "Detalii pentru: %(object)s" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "Modifică %(object)s" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "Creează" @@ -208,9 +206,7 @@ msgstr "Să începem" #: 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:" +msgstr "Înainte de a putea utiliza Mayan EDMS în totalitate, trebuie sa faceți următoarele:" #: templates/appearance/home.html:46 msgid "Search pages" @@ -240,8 +236,7 @@ msgstr "Prima autentificare" msgid "" "You have just finished installing Mayan EDMS, " "congratulations!" -msgstr "" -"Tocmai ați terminat de instalat Mayan EDMS, felicitări!" +msgstr "Tocmai ați terminat de instalat Mayan EDMS, felicitări!" #: templates/appearance/login.html:25 msgid "Login using the following credentials:" @@ -266,9 +261,7 @@ msgstr "Parola: %(password)s" msgid "" "Be sure to change the password to increase security and to disable this " "message." -msgstr "" -"Asigurați-vă că pentru a schimba parola pentru a spori securitatea și pentru " -"a dezactiva acest mesaj." +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:54 msgid "Sign in" diff --git a/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.mo index 9043ef9ac1..9455e8217f 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 10ccccc637..2241f16b54 100644 --- a/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.po @@ -1,27 +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: # lilo.panic, 2016 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-05-28 15:49-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: ru\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" "Content-Transfer-Encoding: 8bit\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" +"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:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "Внешний вид" @@ -47,19 +44,15 @@ msgstr "Ошибка сервера" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"Тут какая-то ошибка. Её нужно сообщить администрации сайта по электронной " -"почте, и она будет исправлена. Спасибо за терпение." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "Тут какая-то ошибка. Её нужно сообщить администрации сайта по электронной почте, и она будет исправлена. Спасибо за терпение." #: templates/500.html:14 msgid "" "If you need assistance, you may reference this error via the following " "identifier:" -msgstr "" -"Если вам нужна помощь, вы можете сослаться на эту ошибку по следующему " -"идентификатору:" +msgstr "Если вам нужна помощь, вы можете сослаться на эту ошибку по следующему идентификатору:" #: templates/appearance/about.html:8 templates/appearance/about.html:57 msgid "About" @@ -118,17 +111,17 @@ msgstr "Действия" msgid "Toggle Dropdown" msgstr "Переключение выпадающего списка" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "Подробности: %(object)s" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "Редактировать: %(object)s" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "Создать" @@ -191,9 +184,7 @@ msgstr "Нет результатов" msgid "" "Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " "%(total_pages)s)" -msgstr "" -"Всего (%(start)s - %(end)s из %(total)s) (Страница %(page_number)s из " -"%(total_pages)s)" +msgstr "Всего (%(start)s - %(end)s из %(total)s) (Страница %(page_number)s из %(total_pages)s)" #: templates/appearance/generic_list_subtemplate.html:14 #: templates/appearance/generic_list_subtemplate.html:17 @@ -215,9 +206,7 @@ msgstr "Приступая к работе" #: templates/appearance/home.html:25 msgid "Before you can fully use Mayan EDMS you need the following:" -msgstr "" -"Вам кое-что понадобится, прежде чем вы начнёте полноценно использовать Mayan " -"EDMS:" +msgstr "Вам кое-что понадобится, прежде чем вы начнёте полноценно использовать Mayan EDMS:" #: templates/appearance/home.html:46 msgid "Search pages" @@ -247,8 +236,7 @@ msgstr "Первое время входа в систему" msgid "" "You have just finished installing Mayan EDMS, " "congratulations!" -msgstr "" -"Вы только что закончили установку Mayan EDMS, поздравляем!" +msgstr "Вы только что закончили установку Mayan EDMS, поздравляем!" #: templates/appearance/login.html:25 msgid "Login using the following credentials:" @@ -273,9 +261,7 @@ msgstr "Пароль: %(password)s" msgid "" "Be sure to change the password to increase security and to disable this " "message." -msgstr "" -"Обязательно измените пароль для повышения безопасности и отключения этого " -"сообщения." +msgstr "Обязательно измените пароль для повышения безопасности и отключения этого сообщения." #: templates/appearance/login.html:45 templates/appearance/login.html:54 msgid "Sign in" 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 3951a6def8..1c0c31fb1f 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 fab9b692cf..2903efbdb5 100644 --- a/mayan/apps/appearance/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/sl_SI/LC_MESSAGES/django.po @@ -1,25 +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: 2017-05-28 15:49-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: sl_SI\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" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" -"%100==4 ? 2 : 3);\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" -#: apps.py:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "" @@ -45,8 +43,8 @@ msgstr "" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." msgstr "" #: templates/500.html:14 @@ -112,17 +110,17 @@ msgstr "" msgid "Toggle Dropdown" msgstr "" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" 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 05cfe4d73f..618107a7a4 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 58022fb61f..eaa0fcc8f6 100644 --- a/mayan/apps/appearance/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/vi_VN/LC_MESSAGES/django.po @@ -1,24 +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: 2017-05-28 15:49-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: vi_VN\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" "Content-Transfer-Encoding: 8bit\n" +"Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "" @@ -44,8 +43,8 @@ msgstr "" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." msgstr "" #: templates/500.html:14 @@ -111,17 +110,17 @@ msgstr "Các thao tác" msgid "Toggle Dropdown" msgstr "" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "Tạo" @@ -236,9 +235,7 @@ msgstr "Đăng nhập lần đầu" msgid "" "You have just finished installing Mayan EDMS, " "congratulations!" -msgstr "" -"Bạn đã cài đặt xong Hệ thống quản lý tài liệu điện tử Mayan EDMS. Xin chúc mừng bạn!" +msgstr "Bạn đã cài đặt xong Hệ thống quản lý tài liệu điện tử Mayan EDMS. Xin chúc mừng bạn!" #: templates/appearance/login.html:25 msgid "Login using the following credentials:" @@ -263,9 +260,7 @@ msgstr "Mật khẩu: %(password)s" msgid "" "Be sure to change the password to increase security and to disable this " "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." +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:54 msgid "Sign in" 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 3b99d287aa..2d7f791d2e 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 effcb4e648..ef7b459b6b 100644 --- a/mayan/apps/appearance/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/appearance/locale/zh_CN/LC_MESSAGES/django.po @@ -1,24 +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: 2017-05-28 15:49-0400\n" +"POT-Creation-Date: 2017-06-23 01:38-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" -"Language: zh_CN\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" "Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: apps.py:12 +#: apps.py:12 settings.py:9 msgid "Appearance" msgstr "" @@ -44,8 +43,8 @@ msgstr "" #: templates/500.html:11 msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." msgstr "" #: templates/500.html:14 @@ -111,17 +110,17 @@ msgstr "操作" msgid "Toggle Dropdown" msgstr "" -#: templates/appearance/calculate_form_title.html:7 +#: templates/appearance/calculate_form_title.html:11 #, python-format msgid "Details for: %(object)s" msgstr "详细信息:%(object)s" -#: templates/appearance/calculate_form_title.html:10 +#: templates/appearance/calculate_form_title.html:14 #, python-format msgid "Edit: %(object)s" msgstr "编辑:%(object)s" -#: templates/appearance/calculate_form_title.html:12 +#: templates/appearance/calculate_form_title.html:16 msgid "Create" msgstr "创建" diff --git a/mayan/apps/appearance/settings.py b/mayan/apps/appearance/settings.py new file mode 100644 index 0000000000..94c73d2a57 --- /dev/null +++ b/mayan/apps/appearance/settings.py @@ -0,0 +1,13 @@ +from __future__ import unicode_literals + +from django.utils.translation import ugettext_lazy as _ + +from smart_settings import Namespace + +from .literals import DEFAULT_MAXIMUM_TITLE_LENGTH + +namespace = Namespace(name='appearance', label=_('Appearance')) +setting_max_title_length = namespace.add_setting( + global_name='APPEARANCE_MAXIMUM_TITLE_LENGTH', + default=DEFAULT_MAXIMUM_TITLE_LENGTH +) diff --git a/mayan/apps/appearance/static/appearance/css/base.css b/mayan/apps/appearance/static/appearance/css/base.css index 1e6e6dfd23..2653da0263 100644 --- a/mayan/apps/appearance/static/appearance/css/base.css +++ b/mayan/apps/appearance/static/appearance/css/base.css @@ -186,4 +186,12 @@ a i { min-width: 1170px; width: 95%; } + +#toast-container > div { + opacity: 1; +} + +.link-text-span { + padding-left: 10px; + padding-right: 20px; } diff --git a/mayan/apps/appearance/static/appearance/js/base.js b/mayan/apps/appearance/static/appearance/js/base.js index 22c967fcee..52e5079c21 100644 --- a/mayan/apps/appearance/static/appearance/js/base.js +++ b/mayan/apps/appearance/static/appearance/js/base.js @@ -1,75 +1,75 @@ 'use strict'; -var resizeFullHeight = function () { - $('.full-height').height($(window).height() - $('.full-height').data('height-difference')); -}; +var App = function (parameters) { + var self = this; -var set_image_noninteractive = function (image) { - // Remove border to indicate non interactive image - image.removeClass('thin_border'); - var container = image.parent().parent(); - // Save img HTML - var html = image.parent().html(); - // Remove anchor - image.parent().remove(); - // Place again img - container.html(html); -}; + parameters = parameters || {} -var dismissAlert = function (element) { - element.addClass('fadeOutUp').fadeOut('slow'); -}; + this.window = $(window); +} -var onImageError = function (image) { - image.parent().parent().html(''); - set_image_noninteractive(image); -}; - -var loadImage = function (image) { - image.error(function(event) { - onImageError(image); - }); - - image.attr('src', image.attr('data-url')); -}; - - -var tagSelectionTemplate = function (tag, container) { +App.tagSelectionTemplate = function (tag, container) { var $tag = $( ' ' + tag.text + '' ); container[0].style.background = tag.element.style.color; return $tag; -}; +} - -var tagResultTemplate = function (tag) { +App.tagResultTemplate = function (tag) { if (!tag.element) { return ''; } var $tag = $( ' ' + tag.text + '' ); return $tag; -}; - -jQuery(document).ready(function() { - $('.lazy-load').on('load', function() { - $(this).siblings('.spinner').remove(); - $(this).removeClass('lazy-load'); - }); - - $('.lazy-load-carousel').on('load', function() { - $(this).siblings('.spinner').remove(); - $(this).removeClass('lazy-load-carousel'); - }); - - resizeFullHeight(); - - $(window).resize(function() { - resizeFullHeight(); - }); +} +App.prototype.setupScrollView = function () { $('.scrollable').scrollview(); +} +App.prototype.setupTableSelector = function () { + $('th input:checkbox').click(function(e) { + var table = $(e.target).closest('table'); + var checked = $(e.target).prop('checked'); + $('td input:checkbox', table).prop('checked', checked); + }); +} + +App.prototype.setupWindowPopUp = function () { + $('a.new_window').click(function(event) { + event.preventDefault(); + var newWindow = window.open($(this).attr('href'), '_blank'); + newWindow.focus(); + }); +} + +App.prototype.setupSelect2 = function () { + $('.select2').select2({ + dropdownAutoWidth: true, + width: '100%' + }); + + $('.select2-tags').select2({ + templateSelection: App.tagSelectionTemplate, + templateResult: App.tagResultTemplate, + width: '100%' + }); +} + +App.prototype.setupFullHeightResizing = function () { + this.resizeFullHeight(); + + this.window.resize(function() { + app.resizeFullHeight(); + }); +} + +App.prototype.resizeFullHeight = function () { + $('.full-height').height(this.window.height() - $('.full-height').data('height-difference')); +} + +App.prototype.doMayanImages = function () { $('a.fancybox').fancybox({ beforeShow : function(){ this.title = $(this.element).data('caption'); @@ -85,47 +85,129 @@ jQuery(document).ready(function() { $('img.lazy-load').lazyload({ appear: function(elements_left, settings) { - loadImage($(this)); + new MayanImage({element: $(this)}); }, }); $('img.lazy-load-carousel').lazyload({ appear: function(elements_left, settings) { - loadImage($(this)); + new MayanImage({element: $(this)}); }, - container: $("#carousel-container"), + container: $('#carousel-container'), threshold: 400 }); - $('th input:checkbox').click(function(e) { - var table = $(e.target).closest('table'); - var checked = $(e.target).prop('checked'); - $('td input:checkbox', table).prop('checked', checked); + $('.lazy-load').on('load', function() { + $(this).siblings('.spinner').remove(); + $(this).removeClass('lazy-load'); }); - $('a.new_window').click(function(event) { - event.preventDefault(); - var newWindow = window.open($(this).attr('href'), '_blank'); - newWindow.focus(); + $('.lazy-load-carousel').on('load', function() { + $(this).siblings('.spinner').remove(); + $(this).removeClass('lazy-load-carousel'); + }); +} + +App.prototype.doToastrMessages = function () { + toastr.options = { + 'closeButton': true, + 'debug': false, + 'newestOnTop': true, + 'positionClass': 'toast-top-right', + 'preventDuplicates': false, + 'onclick': null, + 'showDuration': '300', + 'hideDuration': '1000', + 'timeOut': '5000', + 'extendedTimeOut': '1000', + 'showEasing': 'swing', + 'hideEasing': 'linear', + 'showMethod': 'fadeIn', + 'hideMethod': 'fadeOut' + } + + // Add invisible bootstrap messages to copy the styles to toastr.js + + $('body').append('\ + \ + \ + \ + \ + '); + + $('head').append('\ + \ + '); + + $.each(DjangoMessages, function (index, value) { + toastr[value.tags](value.message); + }); +} + +var MayanImage = function (options) { + this.element = options.element; + this.load(); +} + +MayanImage.prototype.onImageError = function () { + this.element.parent().parent().html(''); + // Remove border to indicate non interactive image + this.element.removeClass('thin_border'); + + var container = this.element.parent().parent(); + // Save img HTML + var html = this.element.parent().html(); + // Remove anchor + this.element.parent().remove(); + // Place again img + container.html(html); +}; + +MayanImage.prototype.load = function () { + var self = this; + + this.element.error(function(event) { + self.onImageError(); }); - $('.alert button.close').click(function() { - dismissAlert($(this).parent()); - }); + this.element.attr('src', this.element.attr('data-url')); +}; - setTimeout(function() { - $('.alert-success').each(function() { - dismissAlert($(this)); - }); +jQuery(document).ready(function() { + var app = new App(); - }, 3000); + app.setupFullHeightResizing(); - $('.select2').select2(); + app.doMayanImages(); - $('.select2-tags').select2({ - templateSelection: tagSelectionTemplate, - templateResult: tagResultTemplate - }); + app.doToastrMessages(); + app.setupSelect2(); + app.setupScrollView(); + + app.setupTableSelector(); + + app.setupWindowPopUp(); }); diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/.gitattributes b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/.gitattributes new file mode 100644 index 0000000000..0555bded6e --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/.gitattributes @@ -0,0 +1,15 @@ +# Set default behaviour, in case users don't have core.autocrlf set. +* text=auto + +# Explicitly declare text files we want to always be normalized and converted +# to native line endings on checkout. +*.c text +*.h text + +# Declare files that will always have CRLF line endings on checkout. +*.sln text eol=crlf +*.csproj text eol=crlf + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.jpg binary \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/.gitignore b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/.gitignore new file mode 100644 index 0000000000..30ae23b420 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/.gitignore @@ -0,0 +1,58 @@ +node_modules +bower_components + +# Ignore Visual Studio Project # +################### +*.config +*.user +*.csproj +*.gpState +*.sln +*.suo +/bin +/obj +/packages +/Properties +/Scripts +/report +/tests/coverage + + +# Compiled source # +################### +*.com +*.class +*.dll +*.exe +*.o +*.so + +# Packages # +############ +# it's better to unpack these files and commit the raw source +# git has its own built in compression methods +*.7z +*.dmg +*.gz +*.iso +*.jar +*.rar +*.tar +*.zip + +# Logs and databases # +###################### +*.log +*.sql +*.sqlite + +# OS generated files # +###################### +.DS_Store* +ehthumbs.db +Icon? +Thumbs.db + +# WebStorm # +###################### +.idea/ \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/.jscsrc b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/.jscsrc new file mode 100644 index 0000000000..28846b1ffe --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/.jscsrc @@ -0,0 +1,90 @@ +{ + "excludeFiles": ["node_modules/**", "bower_components/**"], + + + "requireCurlyBraces": [ + "if", + "else", + "for", + "while", + "do", + "try", + "catch" + ], + "requireOperatorBeforeLineBreak": true, + "requireCamelCaseOrUpperCaseIdentifiers": true, + "maximumLineLength": { + "value": 80, + "allowComments": true, + "allowRegex": true + }, + "validateIndentation": 2, + "validateQuoteMarks": "'", + + "disallowMultipleLineStrings": true, + "disallowMixedSpacesAndTabs": true, + "disallowTrailingWhitespace": true, + "disallowSpaceAfterPrefixUnaryOperators": true, + "disallowMultipleVarDecl": null, + + "requireSpaceAfterKeywords": [ + "if", + "else", + "for", + "while", + "do", + "switch", + "return", + "try", + "catch" + ], + "requireSpaceBeforeBinaryOperators": [ + "=", "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=", + "&=", "|=", "^=", "+=", + + "+", "-", "*", "/", "%", "<<", ">>", ">>>", "&", + "|", "^", "&&", "||", "===", "==", ">=", + "<=", "<", ">", "!=", "!==" + ], + "requireSpaceAfterBinaryOperators": true, + "requireSpacesInConditionalExpression": true, + "requireSpaceBeforeBlockStatements": true, + "requireLineFeedAtFileEnd": true, + "disallowSpacesInsideObjectBrackets": "all", + "disallowSpacesInsideArrayBrackets": "all", + "disallowSpacesInsideParentheses": true, + + + "validateJSDoc": { + "checkParamNames": true, + "requireParamTypes": true + }, + + "disallowMultipleLineBreaks": true, + + + + + + + + "requireLineFeedAtFileEnd": null, + "disallowCommaBeforeLineBreak": null, + "disallowDanglingUnderscores": null, + "disallowEmptyBlocks": null, + "disallowMixedSpacesAndTabs": null, + "disallowMultipleLineStrings": null, + "disallowTrailingComma": null, + "disallowTrailingWhitespace": null, + "maximumLineLength": null, + "requireCamelCaseOrUpperCaseIdentifiers": null, + "requireCapitalizedConstructors": null, + "requireCommaBeforeLineBreak": null, + "requireCurlyBraces": null, + "requireDotNotation": null, + "requireMultipleVarDecl": null, + "requireOperatorBeforeLineBreak": null, + "requireParenthesesAroundIIFE": true, + "validateIndentation": 4, + "validateQuoteMarks": null +} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/.jshintrc b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/.jshintrc new file mode 100644 index 0000000000..d1db02dbf8 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/.jshintrc @@ -0,0 +1,63 @@ +{ + "bitwise": true, + "camelcase": true, + "curly": true, + "eqeqeq": true, + "es3": false, + "forin": true, + "freeze": true, + "immed": true, + "indent": 4, + "latedef": "nofunc", + "newcap": true, + "noarg": true, + "noempty": true, + "nonbsp": true, + "nonew": true, + "plusplus": false, + "quotmark": "single", + "undef": true, + "unused": false, + "strict": false, + "maxparams": 10, + "maxdepth": 5, + "maxstatements": 40, + "maxcomplexity": 8, + "maxlen": 120, + + "asi": false, + "boss": false, + "debug": false, + "eqnull": true, + "esnext": false, + "evil": false, + "expr": false, + "funcscope": false, + "globalstrict": false, + "iterator": false, + "lastsemic": false, + "laxbreak": false, + "laxcomma": false, + "loopfunc": true, + "maxerr": false, + "moz": false, + "multistr": false, + "notypeof": false, + "proto": false, + "scripturl": false, + "shadow": false, + "sub": true, + "supernew": false, + "validthis": false, + "noyield": false, + + "browser": true, + "node": true, + + "globals": { + "angular": false, + "$": false, + "module": false, + "require": false + } +} diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/.travis.yml b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/.travis.yml new file mode 100644 index 0000000000..5d3c2271a2 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/.travis.yml @@ -0,0 +1,19 @@ +language: node_js +node_js: + - "0.10" + +install: + - npm install -g gulp karma-cli + - npm install + +script: + - npm test + +cache: + directories: + - node_modules + +branches: + only: + - develop + - master diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/CHANGELOG.md b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/CHANGELOG.md new file mode 100644 index 0000000000..89b98552f5 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/CHANGELOG.md @@ -0,0 +1,152 @@ +# 2.1.3 (2016-07-22) + +## New Features +- Right to left text support +- Added callbacks for click events on close button + +## Bug Fixes +- Fixed some CSS that prevented touch events from propagating on iOS devices +- Removed role attribute because it duplicated voice over on text-to-speech readers; kept aria-live. +- Consistent line-heights for close button to resolve issues with Bootstrap. + +## Dev Ops +- Removed Plato from gulp + +# 2.1.2 (2015-08-06) + +## New Features +- Added HTML escaping (use toastr.options.escapeHTML) +- Added more options for overriding animations, specifically to closing a toast +- Events are now passed into the onClick handler of the toast + +## Bug Fixes +- Resolved issue with centered toasts that would override top and bottom margins + +## Dev Ops +- Removed `module` and `require` from the `.jshintrc` file +- Cleaned up the readme +- Builds moved to the `builds` folder +- Made href calls relative to the transport in the demo +- CSS is now built by the included LESS file as part of a `gulp` call +- Removed un-used deps + +# 2.1.1 (2015-02-19) + +## New Features +- Support for explicitly clearing a toast [jstawski](https://github.com/jstawski) | [PR 226](https://github.com/CodeSeven/toastr/pull/226) + +## Dev Ops +- Refactor to use gulp + +# 2.1.0 (2014-10-15) + +## New Features +- Prevent duplicate sequential toasts [SBero](https://github.com/sbero) | [aa083d8](https://github.com/CodeSeven/toastr/commit/ccb377b6015d557dbb987df74750b97b3aa083d8) +- Add support for top-center and bottom-center toasts [showwin](https://github.com/showwin) | [86a4798](https://github.com/CodeSeven/toastr/commit/86a4798e76c7d8516521780b7bd085d6bb4c371b) +- Add feature allowing progress bars to be shown for toasts [TravisTX](https://github.com/TravisTX) | [PR 189](https://github.com/CodeSeven/toastr/pull/189) + +`toastr.options.preventDuplicates = true;` + +`toastr.options.progressBar = true;` + +## Bug Fixes +- None + +## Breaking Changes +- None + +## Dev Ops + +- Add karma test runner +- Added Travis CI hooks + +# 2.0.3 (2014-05-17) + +## New Features + - None + +## Bug Fixes +- positionClass changes were not being honored due to 2.0.2 release changes. Refactored getContainer to only get the container, unless a 2nd boolean parameter is passed in in which case it will also create it if the container did not exist [871c2a6](https://github.com/CodeSeven/toastr/commit/871c2a6e438bb6b996cfb80286720604a4cf00fd) + +## Breaking Changes + - None + +# 2.0.2 (2014-04-29) + +## New Features +- Added simple ARIA reader support ([45c6362](https://github.com/CodeSeven/toastr/commit/45c63628476f6b085a6579dc681f4fe61ba5820c)) +- Added SASS support (direct port of CSS for now) ([b4c8b34](https://github.com/CodeSeven/toastr/commit/b4c8b3460efb8aa51c730dd38c35ef6b025db2cc)) + +## Bug Fixes +- Added sourcemap for the min file ([1da4bd1](https://github.com/CodeSeven/toastr/commit/1da4bd1dad21bcfc7fcfe73da1abb185cf2c3f9f)) +- IE 8 does not support stopPropagation on the event ([6989573](https://github.com/CodeSeven/toastr/commit/698957325a8e7bf63990f71ee409b911d69bc8ec)) +- Media query width fixes ([ea2f5db](https://github.com/CodeSeven/toastr/commit/ea2f5db6e5314dcfe48eb34176583849c177c00e)) +- Fix of onHidden firing twice when clicking on it then moving mouse out of toast ([ad613b9](https://github.com/CodeSeven/toastr/commit/ad613b9f18feeec630497590b85ca75c52141ea3) , [#105](https://github.com/CodeSeven/toastr/issues/105)) +- Clear all toasts followed by a new toast now displays correctly ([3126a53](https://github.com/CodeSeven/toastr/commit/3126a533e0ab12ec3ff374e155a37fd38bd23bb6) , [#149](https://github.com/CodeSeven/toastr/issues/149) , [#118](https://github.com/CodeSeven/toastr/issues/118)) + +## Breaking Changes +- None + +# 2.0.1 (2013-09-01) + +## New Features + +### Close Button +Optionally enable a close button + + toastr.options.closeButton = true; + +Optionally override the close button's HTML. + + toastr.options.closeHtml = ''; + +You can also override the CSS/LESS for `#toast-container .toast-close-button` + +### Callbacks + // Define a callback for when the toast is shown/hidden + toastr.options.onShown = function() { console.log('hello'); } + toastr.options.onHidden = function() { console.log('goodbye'); } + +### Animation Options +Toastr will supply default animations, so you do not have to provide any of these settings. However you have the option to override the animations if you like. + +####Easings +Optionally override the animation easing to show or hide the toasts. Default is swing. swing and linear are built into jQuery. + + toastr.options.showEasing = 'swing'; + toastr.options.hideEasing = 'linear'; + +Using the jQuery Easing plugin (http://www.gsgd.co.uk/sandbox/jquery/easing/) + + toastr.options.showEasing = 'easeOutBounce'; + toastr.options.hideEasing = 'easeInBack'; + +####Animation Method +Use the jQuery show/hide method of your choice. These default to fadeIn/fadeOut. The methods fadeIn/fadeOut, slideDown/slideUp, and show/hide are built into jQuery. + + toastr.options.showMethod = 'slideDown'; + toastr.options.hideMethod = 'slideUp'; + + +###Timeouts +Control how toastr interacts with users by setting timeouts appropriately. + + toastr.options.timeout = 30; // How long the toast will display without user interaction + toastr.options.extendedTimeOut = 60; // How long the toast will display after a user hovers over it + +## Breaking Changes + +###Animation Changes +The following animations options have been deprecated and should be replaced: + + - Replace `options.fadeIn` with `options.showDuration` + - Replace `options.onFadeIn` with `options.onShown` + - Replace `options.fadeOut` with `options.hideDuration` + - Replace `options.onFadeOut` with `options.onHidden` + +# Version 1.3.1 + +## Display Sequence +Show newest toast at bottom (top is default) + + toastr.options.newestOnTop = false; diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/README.md b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/README.md new file mode 100644 index 0000000000..66223edb47 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/README.md @@ -0,0 +1,250 @@ +# toastr +**toastr** is a Javascript library for non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + +[![Build Status](https://travis-ci.org/CodeSeven/toastr.svg)](https://travis-ci.org/CodeSeven/toastr) +Browser testing provided by BrowserStack. + +## Current Version +2.1.3 + +## Demo +- Demo can be found at http://codeseven.github.io/toastr/demo.html +- [Demo using FontAwesome icons with toastr](http://plnkr.co/edit/6W9URNyyp2ItO4aUWzBB?p=preview) + +## [CDNjs](https://cdnjs.com/libraries/toastr.js) +Toastr is hosted at CDN JS + +#### Debug +- [//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.css](//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.css) + +#### Minified +- [//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js](//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js) +- [//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css](//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css) + +## Install + +#### [NuGet Gallery](http://nuget.org/packages/toastr) +``` +Install-Package toastr +``` + +#### [Bower](http://bower.io/search/?q=toastr) +``` +bower install toastr +``` + +#### [npm](https://www.npmjs.com/package/toastr) +``` +npm install --save toastr +``` + +#### [Ruby on Rails](https://github.com/tylergannon/toastr-rails) +```ruby +# Gemfile + +gem 'toastr-rails' +``` + +```coffee +# application.coffee + +#= require toastr +``` + +```scss +// application.scss + +@import "toastr"; +``` + + + + +## Wiki and Change Log +[Wiki including Change Log](https://github.com/CodeSeven/toastr/wiki) + +## Breaking Changes + +#### Animation Changes +The following animations options have been deprecated and should be replaced: + + - Replace `options.fadeIn` with `options.showDuration` + - Replace `options.onFadeIn` with `options.onShown` + - Replace `options.fadeOut` with `options.hideDuration` + - Replace `options.onFadeOut` with `options.onHidden` + +## Quick Start + +### 3 Easy Steps +For other API calls, see the [demo](http://codeseven.github.io/toastr/demo.html). + +1. Link to toastr.css `` + +2. Link to toastr.js `` + +3. use toastr to display a toast for info, success, warning or error + ```js + // Display an info toast with no title + toastr.info('Are you the 6 fingered man?') + ``` + +### Other Options +```js +// Display a warning toast, with no title +toastr.warning('My name is Inigo Montoya. You killed my father, prepare to die!') + +// Display a success toast, with a title +toastr.success('Have fun storming the castle!', 'Miracle Max Says') + +// Display an error toast, with a title +toastr.error('I do not think that word means what you think it means.', 'Inconceivable!') + +// Immediately remove current toasts without using animation +toastr.remove() + +// Remove current toasts using animation +toastr.clear() + +// Override global options +toastr.success('We do have the Kapua suite available.', 'Turtle Bay Resort', {timeOut: 5000}) +``` + +### Escape HTML characters +In case you want to escape HTML characters in title and message + + toastr.options.escapeHtml = true; + +### Close Button +Optionally enable a close button +```js +toastr.options.closeButton = true; +```` + +Optionally override the close button's HTML. + +```js +toastr.options.closeHtml = ''; +``` + +You can also override the CSS/LESS for `#toast-container .toast-close-button` + +Optionally override the hide animation when the close button is clicked (falls back to hide configuration). +```js +toastr.options.closeMethod = 'fadeOut'; +toastr.options.closeDuration = 300; +toastr.options.closeEasing = 'swing'; +``` + +### Display Sequence +Show newest toast at bottom (top is default) +```js +toastr.options.newestOnTop = false; +``` + +### Callbacks +```js +// Define a callback for when the toast is shown/hidden/clicked +toastr.options.onShown = function() { console.log('hello'); } +toastr.options.onHidden = function() { console.log('goodbye'); } +toastr.options.onclick = function() { console.log('clicked'); } +toastr.options.onCloseClick = function() { console.log('close button clicked'); } +``` + +### Animation Options +Toastr will supply default animations, so you do not have to provide any of these settings. However you have the option to override the animations if you like. + +#### Easings +Optionally override the animation easing to show or hide the toasts. Default is swing. swing and linear are built into jQuery. +```js +toastr.options.showEasing = 'swing'; +toastr.options.hideEasing = 'linear'; +toastr.options.closeEasing = 'linear'; +``` + +Using the jQuery Easing plugin (http://www.gsgd.co.uk/sandbox/jquery/easing/) +```js +toastr.options.showEasing = 'easeOutBounce'; +toastr.options.hideEasing = 'easeInBack'; +toastr.options.closeEasing = 'easeInBack'; +``` + +#### Animation Method +Use the jQuery show/hide method of your choice. These default to fadeIn/fadeOut. The methods fadeIn/fadeOut, slideDown/slideUp, and show/hide are built into jQuery. +```js +toastr.options.showMethod = 'slideDown'; +toastr.options.hideMethod = 'slideUp'; +toastr.options.closeMethod = 'slideUp'; +``` + +### Prevent Duplicates +Rather than having identical toasts stack, set the preventDuplicates property to true. Duplicates are matched to the previous toast based on their message content. +```js +toastr.options.preventDuplicates = true; +``` + +### Timeouts +Control how toastr interacts with users by setting timeouts appropriately. Timeouts can be disabled by setting them to 0. +```js +toastr.options.timeOut = 30; // How long the toast will display without user interaction +toastr.options.extendedTimeOut = 60; // How long the toast will display after a user hovers over it +``` + + +### Progress Bar +Visually indicate how long before a toast expires. +```js +toastr.options.progressBar = true; +``` + +### rtl +Flip the toastr to be displayed properly for right-to-left languages. +```js +toastr.options.rtl = true; +``` + +## Building Toastr + +To build the minified and css versions of Toastr you will need [node](http://nodejs.org) installed. (Use Homebrew or Chocolatey.) + +``` +npm install -g gulp karma-cli +npm install +``` + +At this point the dependencies have been installed and you can build Toastr + +- Run the analytics `gulp analyze` +- Run the test `gulp test` +- Run the build `gulp` + +## Contributing + +For a pull request to be considered it must resolve a bug, or add a feature which is beneficial to a large audience. + +Pull requests must pass existing unit tests, CI processes, and add additional tests to indicate successful operation of a new feature, or the resolution of an identified bug. + +Requests must be made against the `develop` branch. Pull requests submitted against the `master` branch will not be considered. + +All pull requests are subject to approval by the repository owners, who have sole discretion over acceptance or denial. + +## Authors +**John Papa** + ++ [http://twitter.com/John_Papa](http://twitter.com/John_Papa) + +**Tim Ferrell** + ++ [http://twitter.com/ferrell_tim](http://twitter.com/ferrell_tim) + +**Hans Fjällemark** + ++ [http://twitter.com/hfjallemark](http://twitter.com/hfjallemark) + +## Credits +Inspired by https://github.com/Srirangan/notifer.js/. + +## Copyright +Copyright © 2012-2015 + +## License +toastr is under MIT license - http://www.opensource.org/licenses/mit-license.php diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/demo.html b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/demo.html new file mode 100644 index 0000000000..7e124d68aa --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/demo.html @@ -0,0 +1,351 @@ + + + + + toastr examples + + + + + + + +
+

toastr

+ +
+
+
+
+
+ + + + +
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+
+ + + + + +
+
+
+
+ + + + + + + + + +
+
+
+ +
+
+
+ + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + + + + + + + +
+
+
+
+ +
+ + + +
+ +
+

+        
+
+
+ + + + + + + + + diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/gulpfile.js b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/gulpfile.js new file mode 100644 index 0000000000..f78f8ced92 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/gulpfile.js @@ -0,0 +1,172 @@ +/* jshint node:true, camelcase:false */ +var gulp = require('gulp'); +var karma = require('karma').server; +var merge = require('merge-stream'); +var plug = require('gulp-load-plugins')(); + +var paths = { + js: './toastr.js', + less: './toastr.less', + report: './report', + build: './build' +}; + +var log = plug.util.log; + +/** + * List the available gulp tasks + */ +gulp.task('help', plug.taskListing); + +/** + * Lint the code, create coverage report, and a visualizer + * @return {Stream} + */ +gulp.task('analyze', function () { + log('Analyzing source with JSHint and JSCS'); + + var jshint = analyzejshint([paths.js]); + var jscs = analyzejscs([paths.js]); + + return merge(jshint, jscs); +}); + +/** + * Minify and bundle the app's JavaScript + * @return {Stream} + */ +gulp.task('js', function () { + log('Bundling, minifying, and copying the app\'s JavaScript'); + + return gulp + .src(paths.js) + .pipe(plug.sourcemaps.init()) + .pipe(plug.bytediff.start()) + .pipe(plug.uglify({})) + .pipe(plug.bytediff.stop(bytediffFormatter)) + .pipe(plug.sourcemaps.write('.')) + .pipe(plug.rename(function (path) { + if (path.extname === '.js') { + path.basename += '.min'; + } + })) + .pipe(gulp.dest(paths.build)); +}); + +/** + * Minify and bundle the CSS + * @return {Stream} + */ +gulp.task('css', function () { + log('Bundling, minifying, and copying the app\'s CSS'); + + return gulp.src(paths.less) + .pipe(plug.less()) + .pipe(gulp.dest(paths.build)) + .pipe(plug.bytediff.start()) + .pipe(plug.minifyCss({})) + .pipe(plug.bytediff.stop(bytediffFormatter)) + .pipe(plug.rename('toastr.min.css')) + .pipe(gulp.dest(paths.build)); +}); + +/** + * Build js and css + */ +gulp.task('default', ['js', 'css'], function () { + log('Analyze, Build CSS and JS'); +}); + +/** + * Remove all files from the build folder + * One way to run clean before all tasks is to run + * from the cmd line: gulp clean && gulp build + * @return {Stream} + */ +gulp.task('clean', function (cb) { + log('Cleaning: ' + plug.util.colors.blue(paths.report)); + log('Cleaning: ' + plug.util.colors.blue(paths.build)); + + var delPaths = [paths.build, paths.report]; + del(delPaths, cb); +}); + +/** + * Run specs once and exit + * To start servers and run midway specs as well: + * gulp test --startServers + * @return {Stream} + */ +gulp.task('test', function (done) { + startTests(true /*singleRun*/, done); +}); + +//////////////// + +/** + * Execute JSHint on given source files + * @param {Array} sources + * @param {String} overrideRcFile + * @return {Stream} + */ +function analyzejshint(sources, overrideRcFile) { + var jshintrcFile = overrideRcFile || './.jshintrc'; + log('Running JSHint'); + return gulp + .src(sources) + .pipe(plug.jshint(jshintrcFile)) + .pipe(plug.jshint.reporter('jshint-stylish')); +} + +/** + * Execute JSCS on given source files + * @param {Array} sources + * @return {Stream} + */ +function analyzejscs(sources) { + log('Running JSCS'); + return gulp + .src(sources) + .pipe(plug.jscs('./.jscsrc')); +} + +/** + * Start the tests using karma. + * @param {boolean} singleRun - True means run once and end (CI), or keep running (dev) + * @param {Function} done - Callback to fire when karma is done + * @return {undefined} + */ +function startTests(singleRun, done) { + karma.start({ + configFile: __dirname + '/karma.conf.js', + singleRun: !!singleRun + }, karmaCompleted); + + //////////////// + + function karmaCompleted() { + done(); + } +} + +/** + * Formatter for bytediff to display the size changes after processing + * @param {Object} data - byte data + * @return {String} Difference in bytes, formatted + */ +function bytediffFormatter(data) { + var difference = (data.savings > 0) ? ' smaller.' : ' larger.'; + return data.fileName + ' went from ' + + (data.startSize / 1000).toFixed(2) + ' kB to ' + (data.endSize / 1000).toFixed(2) + ' kB' + + ' and is ' + formatPercent(1 - data.percent, 2) + '%' + difference; +} + +/** + * Format a number as a percentage + * @param {Number} num Number to format as a percent + * @param {Number} precision Precision of the decimal + * @return {Number} Formatted perentage + */ +function formatPercent(num, precision) { + return (num * 100).toFixed(precision); +} diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/karma.conf.js b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/karma.conf.js new file mode 100644 index 0000000000..a1e60ab4e5 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/karma.conf.js @@ -0,0 +1,73 @@ +// Karma configuration +// Generated on Thu Sep 04 2014 07:41:43 GMT-0400 (EDT) + +module.exports = function (config) { + config.set({ + + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: '', + + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ['qunit'], + + // list of files / patterns to load in the browser + files: [ + 'node_modules/jquery/dist/jquery.min.js', + 'build/toastr.css', + 'toastr.js', + 'node_modules/qunitjs/qunit/qunit.js', + 'tests/unit/qunit-helper.js', + 'tests/unit/toastr-tests.js' + ], + + + // list of files to exclude + exclude: [], + + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: { + 'toastr.js': 'coverage' + }, + + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ['progress', 'coverage'], + + coverageReporter: { + type: 'lcov', + dir: 'tests/coverage' + }, + + // web server port + port: 9876, + + + // enable / disable colors in the output (reporters and logs) + colors: true, + + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: false, + + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + browsers: ['PhantomJS'], + + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: true + }); +}; diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/content/toastr.css b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/content/toastr.css new file mode 100644 index 0000000000..d86235a9f4 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/content/toastr.css @@ -0,0 +1,180 @@ +/* + * Toastr + * Copyright 2012-2014 John Papa and Hans Fjällemark. + * All Rights Reserved. + * Use, reproduction, distribution, and modification of this code is subject to the terms and + * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php + * + * Author: John Papa and Hans Fjällemark + * Project: https://github.com/CodeSeven/toastr + */ +.toast-title { + font-weight: bold; +} +.toast-message { + -ms-word-wrap: break-word; + word-wrap: break-word; +} +.toast-message a, +.toast-message label { + color: #ffffff; +} +.toast-message a:hover { + color: #cccccc; + text-decoration: none; +} +.toast-close-button { + position: relative; + right: -0.3em; + top: -0.3em; + float: right; + font-size: 20px; + font-weight: bold; + color: #ffffff; + -webkit-text-shadow: 0 1px 0 #ffffff; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); +} +.toast-close-button:hover, +.toast-close-button:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); + filter: alpha(opacity=40); +} +/*Additional properties for button version + iOS requires the button element instead of an anchor tag. + If you want the anchor version, it requires `href="#"`.*/ +button.toast-close-button { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.toast-top-full-width { + top: 0; + right: 0; + width: 100%; +} +.toast-bottom-full-width { + bottom: 0; + right: 0; + width: 100%; +} +.toast-top-left { + top: 12px; + left: 12px; +} +.toast-top-right { + top: 12px; + right: 12px; +} +.toast-bottom-right { + right: 12px; + bottom: 12px; +} +.toast-bottom-left { + bottom: 12px; + left: 12px; +} +#toast-container { + position: fixed; + z-index: 999999; + /*overrides*/ + +} +#toast-container * { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +#toast-container > div { + margin: 0 0 6px; + padding: 15px 15px 15px 50px; + width: 300px; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + background-position: 15px center; + background-repeat: no-repeat; + -moz-box-shadow: 0 0 12px #999999; + -webkit-box-shadow: 0 0 12px #999999; + box-shadow: 0 0 12px #999999; + color: #ffffff; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); +} +#toast-container > :hover { + -moz-box-shadow: 0 0 12px #000000; + -webkit-box-shadow: 0 0 12px #000000; + box-shadow: 0 0 12px #000000; + opacity: 1; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + filter: alpha(opacity=100); + cursor: pointer; +} +#toast-container > .toast-info { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; +} +#toast-container > .toast-error { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; +} +#toast-container > .toast-success { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; +} +#toast-container > .toast-warning { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; +} +#toast-container.toast-top-full-width > div, +#toast-container.toast-bottom-full-width > div { + width: 96%; + margin: auto; +} +.toast { + background-color: #030303; +} +.toast-success { + background-color: #51a351; +} +.toast-error { + background-color: #bd362f; +} +.toast-info { + background-color: #2f96b4; +} +.toast-warning { + background-color: #f89406; +} +/*Responsive Design*/ +@media all and (max-width: 240px) { + #toast-container > div { + padding: 8px 8px 8px 50px; + width: 11em; + } + #toast-container .toast-close-button { + right: -0.2em; + top: -0.2em; + } +} +@media all and (min-width: 241px) and (max-width: 480px) { + #toast-container > div { + padding: 8px 8px 8px 50px; + width: 18em; + } + #toast-container .toast-close-button { + right: -0.2em; + top: -0.2em; + } +} +@media all and (min-width: 481px) and (max-width: 768px) { + #toast-container > div { + padding: 15px 15px 15px 50px; + width: 25em; + } +} diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/content/toastr.less b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/content/toastr.less new file mode 100644 index 0000000000..146fabeb18 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/content/toastr.less @@ -0,0 +1,232 @@ +// Mix-ins +.borderRadius(@radius) { + -moz-border-radius: @radius; + -webkit-border-radius: @radius; + border-radius: @radius; +} + +.boxShadow(@boxShadow) { + -moz-box-shadow: @boxShadow; + -webkit-box-shadow: @boxShadow; + box-shadow: @boxShadow; +} + +.opacity(@opacity) { + @opacityPercent: @opacity * 100; + opacity: @opacity; + -ms-filter: ~"progid:DXImageTransform.Microsoft.Alpha(Opacity=@{opacityPercent})"; + filter: ~"alpha(opacity=@{opacityPercent})"; +} + +.wordWrap(@wordWrap: break-word) { + -ms-word-wrap: @wordWrap; + word-wrap: @wordWrap; +} + +// Variables +@black: #000000; +@grey: #999999; +@light-grey: #CCCCCC; +@white: #FFFFFF; +@near-black: #030303; +@green: #51A351; +@red: #BD362F; +@blue: #2F96B4; +@orange: #F89406; + +// Styles +.toast-title { + font-weight: bold; +} + +.toast-message { + .wordWrap(); + + a, + label { + color: @white; + } + + a:hover { + color: @light-grey; + text-decoration: none; + } +} + +.toast-close-button { + position: relative; + right: -0.3em; + top: -0.3em; + float: right; + font-size: 20px; + font-weight: bold; + color: @white; + -webkit-text-shadow: 0 1px 0 rgba(255,255,255,1); + text-shadow: 0 1px 0 rgba(255,255,255,1); + .opacity(0.8); + + &:hover, + &:focus { + color: @black; + text-decoration: none; + cursor: pointer; + .opacity(0.4); + } +} + +/*Additional properties for button version + iOS requires the button element instead of an anchor tag. + If you want the anchor version, it requires `href="#"`.*/ +button.toast-close-button { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +//#endregion + +.toast-top-full-width { + top: 0; + right: 0; + width: 100%; +} + +.toast-bottom-full-width { + bottom: 0; + right: 0; + width: 100%; +} + +.toast-top-left { + top: 12px; + left: 12px; +} + +.toast-top-right { + top: 12px; + right: 12px; +} + +.toast-bottom-right { + right: 12px; + bottom: 12px; +} + +.toast-bottom-left { + bottom: 12px; + left: 12px; +} + +#toast-container { + position: fixed; + z-index: 999999; + + * { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + } + + > div { + margin: 0 0 6px; + padding: 15px 15px 15px 50px; + width: 300px; + .borderRadius(3px 3px 3px 3px); + background-position: 15px center; + background-repeat: no-repeat; + .boxShadow(0 0 12px @grey); + color: @white; + .opacity(0.8); + } + + > :hover { + .boxShadow(0 0 12px @black); + .opacity(1); + cursor: pointer; + } + + > .toast-info { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; + } + + > .toast-error { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; + } + + > .toast-success { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; + } + + > .toast-warning { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; + } + + /*overrides*/ + &.toast-top-full-width > div, + &.toast-bottom-full-width > div { + width: 96%; + margin: auto; + } +} + +.toast { + background-color: @near-black; +} + +.toast-success { + background-color: @green; +} + +.toast-error { + background-color: @red; +} + +.toast-info { + background-color: @blue; +} + +.toast-warning { + background-color: @orange; +} + +/*Responsive Design*/ + +@media all and (max-width: 240px) { + #toast-container { + + > div { + padding: 8px 8px 8px 50px; + width: 11em; + } + + & .toast-close-button { + right: -0.2em; + top: -0.2em; + } + } +} + +@media all and (min-width: 241px) and (max-width: 480px) { + #toast-container { + > div { + padding: 8px 8px 8px 50px; + width: 18em; + } + + & .toast-close-button { + right: -0.2em; + top: -0.2em; + } + } +} + +@media all and (min-width: 481px) and (max-width: 768px) { + #toast-container { + > div { + padding: 15px 15px 15px 50px; + width: 25em; + } + } +} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/content/toastr.min.css b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/content/toastr.min.css new file mode 100644 index 0000000000..40975cbd16 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/content/toastr.min.css @@ -0,0 +1 @@ +.toast-title{font-weight:bold}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-0.3em;top:-0.3em;float:right;font-size:20px;font-weight:bold;color:#fff;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:alpha(opacity=80);filter:alpha(opacity=80)}.toast-close-button:hover,.toast-close-button:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:alpha(opacity=40);filter:alpha(opacity=40)}button.toast-close-button{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;-moz-border-radius:3px 3px 3px 3px;-webkit-border-radius:3px 3px 3px 3px;border-radius:3px 3px 3px 3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#fff;opacity:.8;-ms-filter:alpha(opacity=80);filter:alpha(opacity=80)}#toast-container>:hover{-moz-box-shadow:0 0 12px #000;-webkit-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000;opacity:1;-ms-filter:alpha(opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=")!important}#toast-container>.toast-error{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=")!important}#toast-container>.toast-success{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==")!important}#toast-container>.toast-warning{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=")!important}#toast-container.toast-top-full-width>div,#toast-container.toast-bottom-full-width>div{width:96%;margin:auto}.toast{background-color:#030303}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}@media all and (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container .toast-close-button{right:-0.2em;top:-0.2em}}@media all and (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container .toast-close-button{right:-0.2em;top:-0.2em}}@media all and (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/content/toastr.scss b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/content/toastr.scss new file mode 100644 index 0000000000..71f017ba12 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/content/toastr.scss @@ -0,0 +1,183 @@ +/* + * Toastr + * Version 2.0.1 + * Copyright 2012 John Papa and Hans Fjällemark. + * All Rights Reserved. + * Use, reproduction, distribution, and modification of this code is subject to the terms and + * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php + * + * Author: John Papa and Hans Fjällemark + * Project: https://github.com/CodeSeven/toastr + */ +.toast-title { + font-weight: bold; +} +.toast-message { + -ms-word-wrap: break-word; + word-wrap: break-word; +} +.toast-message a, +.toast-message label { + color: #ffffff; +} +.toast-message a:hover { + color: #cccccc; + text-decoration: none; +} + +.toast-close-button { + position: relative; + right: -0.3em; + top: -0.3em; + float: right; + font-size: 20px; + font-weight: bold; + color: #ffffff; + -webkit-text-shadow: 0 1px 0 #ffffff; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); +} +.toast-close-button:hover, +.toast-close-button:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); + filter: alpha(opacity=40); +} + +/*Additional properties for button version + iOS requires the button element instead of an anchor tag. + If you want the anchor version, it requires `href="#"`.*/ +button.toast-close-button { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.toast-top-full-width { + top: 0; + right: 0; + width: 100%; +} +.toast-bottom-full-width { + bottom: 0; + right: 0; + width: 100%; +} +.toast-top-left { + top: 12px; + left: 12px; +} +.toast-top-right { + top: 12px; + right: 12px; +} +.toast-bottom-right { + right: 12px; + bottom: 12px; +} +.toast-bottom-left { + bottom: 12px; + left: 12px; +} +#toast-container { + position: fixed; + z-index: 999999; + /*overrides*/ + +} +#toast-container * { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +#toast-container > div { + margin: 0 0 6px; + padding: 15px 15px 15px 50px; + width: 300px; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + background-position: 15px center; + background-repeat: no-repeat; + -moz-box-shadow: 0 0 12px #999999; + -webkit-box-shadow: 0 0 12px #999999; + box-shadow: 0 0 12px #999999; + color: #ffffff; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); +} +#toast-container > :hover { + -moz-box-shadow: 0 0 12px #000000; + -webkit-box-shadow: 0 0 12px #000000; + box-shadow: 0 0 12px #000000; + opacity: 1; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + filter: alpha(opacity=100); + cursor: pointer; +} +#toast-container > .toast-info { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; +} +#toast-container > .toast-error { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; +} +#toast-container > .toast-success { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; +} +#toast-container > .toast-warning { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; +} +#toast-container.toast-top-full-width > div, +#toast-container.toast-bottom-full-width > div { + width: 96%; + margin: auto; +} +.toast { + background-color: #030303; +} +.toast-success { + background-color: #51a351; +} +.toast-error { + background-color: #bd362f; +} +.toast-info { + background-color: #2f96b4; +} +.toast-warning { + background-color: #f89406; +} +/*Responsive Design*/ +@media all and (max-width: 239px) { + #toast-container > div { + padding: 8px 8px 8px 50px; + width: 11em; + } + #toast-container .toast-close-button { + right: -0.2em; + top: -0.2em; + } +} +@media all and (min-width: 240px) and (max-width: 479px) { + #toast-container > div { + padding: 8px 8px 8px 50px; + width: 18em; + } + #toast-container .toast-close-button { + right: -0.2em; + top: -0.2em; + } +} +@media all and (min-width: 480px) and (max-width: 767px) { + #toast-container > div { + padding: 15px 15px 15px 50px; + width: 25em; + } +} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/scripts/toastr.js b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/scripts/toastr.js new file mode 100644 index 0000000000..87ae449a82 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/scripts/toastr.js @@ -0,0 +1,338 @@ +/* + * Toastr + * Copyright 2012-2014 John Papa and Hans Fjällemark. + * All Rights Reserved. + * Use, reproduction, distribution, and modification of this code is subject to the terms and + * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php + * + * Author: John Papa and Hans Fjällemark + * ARIA Support: Greta Krafsig + * Project: https://github.com/CodeSeven/toastr + */ +; (function (define) { + define(['jquery'], function ($) { + return (function () { + var $container; + var listener; + var toastId = 0; + var toastType = { + error: 'error', + info: 'info', + success: 'success', + warning: 'warning' + }; + + var toastr = { + clear: clear, + remove: remove, + error: error, + getContainer: getContainer, + info: info, + options: {}, + subscribe: subscribe, + success: success, + version: '2.0.3', + warning: warning + }; + + return toastr; + + //#region Accessible Methods + function error(message, title, optionsOverride) { + return notify({ + type: toastType.error, + iconClass: getOptions().iconClasses.error, + message: message, + optionsOverride: optionsOverride, + title: title + }); + } + + function getContainer(options, create) { + if (!options) { options = getOptions(); } + $container = $('#' + options.containerId); + if ($container.length) { + return $container; + } + if(create) { + $container = createContainer(options); + } + return $container; + } + + function info(message, title, optionsOverride) { + return notify({ + type: toastType.info, + iconClass: getOptions().iconClasses.info, + message: message, + optionsOverride: optionsOverride, + title: title + }); + } + + function subscribe(callback) { + listener = callback; + } + + function success(message, title, optionsOverride) { + return notify({ + type: toastType.success, + iconClass: getOptions().iconClasses.success, + message: message, + optionsOverride: optionsOverride, + title: title + }); + } + + function warning(message, title, optionsOverride) { + return notify({ + type: toastType.warning, + iconClass: getOptions().iconClasses.warning, + message: message, + optionsOverride: optionsOverride, + title: title + }); + } + + function clear($toastElement) { + var options = getOptions(); + if (!$container) { getContainer(options); } + if (!clearToast($toastElement, options)) { + clearContainer(options); + } + } + + function remove($toastElement) { + var options = getOptions(); + if (!$container) { getContainer(options); } + if ($toastElement && $(':focus', $toastElement).length === 0) { + removeToast($toastElement); + return; + } + if ($container.children().length) { + $container.remove(); + } + } + //#endregion + + //#region Internal Methods + + function clearContainer(options){ + var toastsToClear = $container.children(); + for (var i = toastsToClear.length - 1; i >= 0; i--) { + clearToast($(toastsToClear[i]), options); + }; + } + + function clearToast($toastElement, options){ + if ($toastElement && $(':focus', $toastElement).length === 0) { + $toastElement[options.hideMethod]({ + duration: options.hideDuration, + easing: options.hideEasing, + complete: function () { removeToast($toastElement); } + }); + return true; + } + return false; + } + + function createContainer(options) { + $container = $('
') + .attr('id', options.containerId) + .addClass(options.positionClass) + .attr('aria-live', 'polite') + .attr('role', 'alert'); + + $container.appendTo($(options.target)); + return $container; + } + + function getDefaults() { + return { + tapToDismiss: true, + toastClass: 'toast', + containerId: 'toast-container', + debug: false, + + showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery + showDuration: 300, + showEasing: 'swing', //swing and linear are built into jQuery + onShown: undefined, + hideMethod: 'fadeOut', + hideDuration: 1000, + hideEasing: 'swing', + onHidden: undefined, + + extendedTimeOut: 1000, + iconClasses: { + error: 'toast-error', + info: 'toast-info', + success: 'toast-success', + warning: 'toast-warning' + }, + iconClass: 'toast-info', + positionClass: 'toast-top-right', + timeOut: 5000, // Set timeOut and extendedTimeout to 0 to make it sticky + titleClass: 'toast-title', + messageClass: 'toast-message', + target: 'body', + closeHtml: '', + newestOnTop: true + }; + } + + function publish(args) { + if (!listener) { return; } + listener(args); + } + + function notify(map) { + var options = getOptions(), + iconClass = map.iconClass || options.iconClass; + + if (typeof (map.optionsOverride) !== 'undefined') { + options = $.extend(options, map.optionsOverride); + iconClass = map.optionsOverride.iconClass || iconClass; + } + + toastId++; + + $container = getContainer(options, true); + var intervalId = null, + $toastElement = $('
'), + $titleElement = $('
'), + $messageElement = $('
'), + $closeElement = $(options.closeHtml), + response = { + toastId: toastId, + state: 'visible', + startTime: new Date(), + options: options, + map: map + }; + + if (map.iconClass) { + $toastElement.addClass(options.toastClass).addClass(iconClass); + } + + if (map.title) { + $titleElement.append(map.title).addClass(options.titleClass); + $toastElement.append($titleElement); + } + + if (map.message) { + $messageElement.append(map.message).addClass(options.messageClass); + $toastElement.append($messageElement); + } + + if (options.closeButton) { + $closeElement.addClass('toast-close-button').attr("role", "button"); + $toastElement.prepend($closeElement); + } + + $toastElement.hide(); + if (options.newestOnTop) { + $container.prepend($toastElement); + } else { + $container.append($toastElement); + } + + + $toastElement[options.showMethod]( + { duration: options.showDuration, easing: options.showEasing, complete: options.onShown } + ); + + if (options.timeOut > 0) { + intervalId = setTimeout(hideToast, options.timeOut); + } + + $toastElement.hover(stickAround, delayedHideToast); + if (!options.onclick && options.tapToDismiss) { + $toastElement.click(hideToast); + } + + if (options.closeButton && $closeElement) { + $closeElement.click(function (event) { + if( event.stopPropagation ) { + event.stopPropagation(); + } else if( event.cancelBubble !== undefined && event.cancelBubble !== true ) { + event.cancelBubble = true; + } + hideToast(true); + }); + } + + if (options.onclick) { + $toastElement.click(function () { + options.onclick(); + hideToast(); + }); + } + + publish(response); + + if (options.debug && console) { + console.log(response); + } + + return $toastElement; + + function hideToast(override) { + if ($(':focus', $toastElement).length && !override) { + return; + } + return $toastElement[options.hideMethod]({ + duration: options.hideDuration, + easing: options.hideEasing, + complete: function () { + removeToast($toastElement); + if (options.onHidden && response.state !== 'hidden') { + options.onHidden(); + } + response.state = 'hidden'; + response.endTime = new Date(); + publish(response); + } + }); + } + + function delayedHideToast() { + if (options.timeOut > 0 || options.extendedTimeOut > 0) { + intervalId = setTimeout(hideToast, options.extendedTimeOut); + } + } + + function stickAround() { + clearTimeout(intervalId); + $toastElement.stop(true, true)[options.showMethod]( + { duration: options.showDuration, easing: options.showEasing } + ); + } + } + + function getOptions() { + return $.extend({}, getDefaults(), toastr.options); + } + + function removeToast($toastElement) { + if (!$container) { $container = getContainer(); } + if ($toastElement.is(':visible')) { + return; + } + $toastElement.remove(); + $toastElement = null; + if ($container.children().length === 0) { + $container.remove(); + } + } + //#endregion + + })(); + }); +}(typeof define === 'function' && define.amd ? define : function (deps, factory) { + if (typeof module !== 'undefined' && module.exports) { //Node + module.exports = factory(require('jquery')); + } else { + window['toastr'] = factory(window['jQuery']); + } +})); \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/scripts/toastr.min.js b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/scripts/toastr.min.js new file mode 100644 index 0000000000..34508884c1 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/scripts/toastr.min.js @@ -0,0 +1 @@ +!function(a){a(["jquery"],function(a){return function(){function b(a,b,c){return o({type:u.error,iconClass:p().iconClasses.error,message:a,optionsOverride:c,title:b})}function c(b,c){return b||(b=p()),r=a("#"+b.containerId),r.length?r:(c&&(r=l(b)),r)}function d(a,b,c){return o({type:u.info,iconClass:p().iconClasses.info,message:a,optionsOverride:c,title:b})}function e(a){s=a}function f(a,b,c){return o({type:u.success,iconClass:p().iconClasses.success,message:a,optionsOverride:c,title:b})}function g(a,b,c){return o({type:u.warning,iconClass:p().iconClasses.warning,message:a,optionsOverride:c,title:b})}function h(a){var b=p();r||c(b),k(a,b)||j(b)}function i(b){var d=p();return r||c(d),b&&0===a(":focus",b).length?void q(b):void(r.children().length&&r.remove())}function j(b){for(var c=r.children(),d=c.length-1;d>=0;d--)k(a(c[d]),b)}function k(b,c){return b&&0===a(":focus",b).length?(b[c.hideMethod]({duration:c.hideDuration,easing:c.hideEasing,complete:function(){q(b)}}),!0):!1}function l(b){return r=a("
").attr("id",b.containerId).addClass(b.positionClass).attr("aria-live","polite").attr("role","alert"),r.appendTo(a(b.target)),r}function m(){return{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",target:"body",closeHtml:"",newestOnTop:!0}}function n(a){s&&s(a)}function o(b){function d(b){return!a(":focus",j).length||b?j[g.hideMethod]({duration:g.hideDuration,easing:g.hideEasing,complete:function(){q(j),g.onHidden&&"hidden"!==o.state&&g.onHidden(),o.state="hidden",o.endTime=new Date,n(o)}}):void 0}function e(){(g.timeOut>0||g.extendedTimeOut>0)&&(i=setTimeout(d,g.extendedTimeOut))}function f(){clearTimeout(i),j.stop(!0,!0)[g.showMethod]({duration:g.showDuration,easing:g.showEasing})}var g=p(),h=b.iconClass||g.iconClass;"undefined"!=typeof b.optionsOverride&&(g=a.extend(g,b.optionsOverride),h=b.optionsOverride.iconClass||h),t++,r=c(g,!0);var i=null,j=a("
"),k=a("
"),l=a("
"),m=a(g.closeHtml),o={toastId:t,state:"visible",startTime:new Date,options:g,map:b};return b.iconClass&&j.addClass(g.toastClass).addClass(h),b.title&&(k.append(b.title).addClass(g.titleClass),j.append(k)),b.message&&(l.append(b.message).addClass(g.messageClass),j.append(l)),g.closeButton&&(m.addClass("toast-close-button").attr("role","button"),j.prepend(m)),j.hide(),g.newestOnTop?r.prepend(j):r.append(j),j[g.showMethod]({duration:g.showDuration,easing:g.showEasing,complete:g.onShown}),g.timeOut>0&&(i=setTimeout(d,g.timeOut)),j.hover(f,e),!g.onclick&&g.tapToDismiss&&j.click(d),g.closeButton&&m&&m.click(function(a){a.stopPropagation?a.stopPropagation():void 0!==a.cancelBubble&&a.cancelBubble!==!0&&(a.cancelBubble=!0),d(!0)}),g.onclick&&j.click(function(){g.onclick(),d()}),n(o),g.debug&&console&&console.log(o),j}function p(){return a.extend({},m(),v.options)}function q(a){r||(r=c()),a.is(":visible")||(a.remove(),a=null,0===r.children().length&&r.remove())}var r,s,t=0,u={error:"error",info:"info",success:"success",warning:"warning"},v={clear:h,remove:i,error:b,getContainer:c,info:d,options:{},subscribe:e,success:f,version:"2.0.3",warning:g};return v}()})}("function"==typeof define&&define.amd?define:function(a,b){"undefined"!=typeof module&&module.exports?module.exports=b(require("jquery")):window.toastr=b(window.jQuery)}); \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/scripts/toastr.min.js.map b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/scripts/toastr.min.js.map new file mode 100644 index 0000000000..2f6c09a7fc --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/content/scripts/toastr.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"toastr.min.js", +"lineCount":1, +"mappings":"CAWG,QAAS,CAACA,CAAD,CAAS,CACpBA,CAAM,CAAC,CAAC,QAAD,CAAU,CAAE,QAAS,CAACC,CAAD,CAAI,CAC/B,OAAQ,QAAS,CAAA,CAAG,CA2BnBC,SAASA,CAAK,CAACC,CAAO,CAAEC,CAAK,CAAEC,CAAjB,CAAkC,CAC/C,OAAOC,CAAM,CAAC,CACb,IAAI,CAAEC,CAASL,MAAM,CACrB,SAAS,CAAEM,CAAU,CAAA,CAAEC,YAAYP,MAAM,CACzC,OAAO,CAAEC,CAAO,CAChB,eAAe,CAAEE,CAAe,CAChC,KAAK,CAAED,CALM,CAAD,CADkC,CAUhDM,SAASA,CAAI,CAACP,CAAO,CAAEC,CAAK,CAAEC,CAAjB,CAAkC,CAC9C,OAAOC,CAAM,CAAC,CACb,IAAI,CAAEC,CAASG,KAAK,CACpB,SAAS,CAAEF,CAAU,CAAA,CAAEC,YAAYC,KAAK,CACxC,OAAO,CAAEP,CAAO,CAChB,eAAe,CAAEE,CAAe,CAChC,KAAK,CAAED,CALM,CAAD,CADiC,CAU/CO,SAASA,CAAS,CAACC,CAAD,CAAW,CAC5BC,CAAS,CAAED,CADiB,CAI7BE,SAASA,CAAO,CAACX,CAAO,CAAEC,CAAK,CAAEC,CAAjB,CAAkC,CACjD,OAAOC,CAAM,CAAC,CACb,IAAI,CAAEC,CAASO,QAAQ,CACvB,SAAS,CAAEN,CAAU,CAAA,CAAEC,YAAYK,QAAQ,CAC3C,OAAO,CAAEX,CAAO,CAChB,eAAe,CAAEE,CAAe,CAChC,KAAK,CAAED,CALM,CAAD,CADoC,CAUlDW,SAASA,CAAO,CAACZ,CAAO,CAAEC,CAAK,CAAEC,CAAjB,CAAkC,CACjD,OAAOC,CAAM,CAAC,CACb,IAAI,CAAEC,CAASQ,QAAQ,CACvB,SAAS,CAAEP,CAAU,CAAA,CAAEC,YAAYM,QAAQ,CAC3C,OAAO,CAAEZ,CAAO,CAChB,eAAe,CAAEE,CAAe,CAChC,KAAK,CAAED,CALM,CAAD,CADoC,CAUlDY,SAASA,CAAK,CAACC,CAAD,CAAgB,CAC7B,IAAIC,EAAUV,CAAU,CAAA,CAAE,CAE1B,GADKW,C,EAAcC,CAAY,CAACF,CAAD,CAAS,CACpCD,CAAc,EAAGhB,CAAC,CAAC,QAAQ,CAAEgB,CAAX,CAAyBI,OAAQ,GAAI,EAAG,CAC7DJ,CAAc,CAAAC,CAAOI,WAAP,CAAmB,CAAC,CACjC,QAAQ,CAAEJ,CAAOK,aAAa,CAC9B,MAAM,CAAEL,CAAOM,WAAW,CAC1B,QAAQ,CAAEC,QAAS,CAAA,CAAG,CAAEC,CAAW,CAACT,CAAD,CAAb,CAHW,CAAD,CAI/B,CACF,MAN6D,CAQ1DE,CAAUQ,SAAS,CAAA,CAAEN,O,EACxBF,CAAW,CAAAD,CAAOI,WAAP,CAAmB,CAAC,CAC9B,QAAQ,CAAEJ,CAAOK,aAAa,CAC9B,MAAM,CAAEL,CAAOM,WAAW,CAC1B,QAAQ,CAAEC,QAAS,CAAA,CAAG,CAAEN,CAAUS,OAAO,CAAA,CAAnB,CAHQ,CAAD,CAZF,CAuB9BC,SAASA,CAAW,CAAA,CAAG,CACtB,MAAO,CACN,YAAY,CAAE,CAAA,CAAI,CAClB,UAAU,CAAE,OAAO,CACnB,WAAW,CAAE,iBAAiB,CAC9B,KAAK,CAAE,CAAA,CAAK,CAEZ,UAAU,CAAE,QAAQ,CACpB,YAAY,CAAE,GAAG,CACjB,UAAU,CAAE,OAAO,CACnB,OAAO,CAAEC,SAAS,CAClB,UAAU,CAAE,SAAS,CACrB,YAAY,CAAE,GAAI,CAClB,UAAU,CAAE,OAAO,CACnB,QAAQ,CAAEA,SAAS,CAEnB,eAAe,CAAE,GAAI,CACrB,WAAW,CAAE,CACZ,KAAK,CAAE,aAAa,CACpB,IAAI,CAAE,YAAY,CAClB,OAAO,CAAE,eAAe,CACxB,OAAO,CAAE,eAJG,CAKZ,CACD,SAAS,CAAE,YAAY,CACvB,aAAa,CAAE,iBAAiB,CAChC,OAAO,CAAE,GAAI,CACb,UAAU,CAAE,aAAa,CACzB,YAAY,CAAE,eAAe,CAC7B,MAAM,CAAE,MAAM,CACd,SAAS,CAAE,2BAA0B,CACrC,WAAW,CAAE,CAAA,CA7BP,CADe,CAkCvBC,SAASA,CAAO,CAACC,CAAD,CAAO,CACjBnB,C,EAGLA,CAAQ,CAACmB,CAAD,CAJc,CAOvB1B,SAASA,CAAM,CAAC2B,CAAD,CAAM,CAuFpBC,SAASA,CAAS,CAACC,CAAD,CAAW,C,GACxB,CAAAlC,CAAC,CAAC,QAAQ,CAAEgB,CAAX,CAAyBI,OAAQ,EAAIc,E,OAGnClB,CAAc,CAAAC,CAAOI,WAAP,CAAmB,CAAC,CACxC,QAAQ,CAAEJ,CAAOK,aAAa,CAC9B,MAAM,CAAEL,CAAOM,WAAW,CAC1B,QAAQ,CAAEC,QAAS,CAAA,CAAG,CACrBC,CAAW,CAACT,CAAD,CAAe,CACtBC,CAAOkB,S,EACVlB,CAAOkB,SAAS,CAAA,CAAE,CAEnBC,CAAQC,MAAO,CAAE,QAAQ,CACzBD,CAAQE,QAAS,CAAE,IAAIC,I,CACvBT,CAAO,CAACM,CAAD,CAPc,CAHkB,CAAD,CAJZ,CAmB7BI,SAASA,CAAgB,CAAA,CAAG,EACvBvB,CAAOwB,QAAS,CAAE,CAAE,EAAGxB,CAAOyB,gBAAiB,CAAE,E,GACpDC,CAAW,CAAEC,UAAU,CAACX,CAAS,CAAEhB,CAAOyB,gBAAnB,EAFG,CAM5BG,SAASA,CAAW,CAAA,CAAG,CACtBC,YAAY,CAACH,CAAD,CAAY,CACxB3B,CAAa+B,KAAK,CAAC,CAAA,CAAD,CAAO,CAAA,CAAP,CAAa,CAAA9B,CAAO+B,WAAP,CAAmB,CACjD,CAAE,QAAQ,CAAE/B,CAAOgC,aAAa,CAAE,MAAM,CAAEhC,CAAOiC,WAAjD,CADiD,CAF5B,CA/GvB,IACCjC,EAAUV,CAAU,CAAA,EACpB4C,EAAYnB,CAAGmB,UAAW,EAAGlC,CAAOkC,UAAU,CAE3C,OAAQnB,CAAG5B,gBAAkB,EAAI,W,GACpCa,CAAQ,CAAEjB,CAACoD,OAAO,CAACnC,CAAO,CAAEe,CAAG5B,gBAAb,CAA8B,CAChD+C,CAAU,CAAEnB,CAAG5B,gBAAgB+C,UAAW,EAAGA,EAAS,CAGvDE,CAAO,EAAE,CAETnC,CAAW,CAAEC,CAAY,CAACF,CAAD,CAAS,CAClC,IACC0B,EAAa,KACb3B,EAAgBhB,CAAC,CAAC,QAAD,EACjBsD,EAAgBtD,CAAC,CAAC,QAAD,EACjBuD,EAAkBvD,CAAC,CAAC,QAAD,EACnBwD,EAAgBxD,CAAC,CAACiB,CAAOwC,UAAR,EACjBrB,EAAW,CACV,OAAO,CAAEiB,CAAO,CAChB,KAAK,CAAE,SAAS,CAChB,SAAS,CAAE,IAAId,IAAM,CACrB,OAAO,CAAEtB,CAAO,CAChB,GAAG,CAAEe,CALK,CAMV,CA4DF,OA1DIA,CAAGmB,U,EACNnC,CAAa0C,SAAS,CAACzC,CAAO0C,WAAR,CAAoBD,SAAS,CAACP,CAAD,CAAW,CAG3DnB,CAAG7B,M,GACNmD,CAAaM,OAAO,CAAC5B,CAAG7B,MAAJ,CAAWuD,SAAS,CAACzC,CAAO4C,WAAR,CAAoB,CAC5D7C,CAAa4C,OAAO,CAACN,CAAD,EAAe,CAGhCtB,CAAG9B,Q,GACNqD,CAAeK,OAAO,CAAC5B,CAAG9B,QAAJ,CAAawD,SAAS,CAACzC,CAAO6C,aAAR,CAAsB,CAClE9C,CAAa4C,OAAO,CAACL,CAAD,EAAiB,CAGlCtC,CAAO8C,Y,GACVP,CAAaE,SAAS,CAAC,oBAAD,CAAsB,CAC5C1C,CAAagD,QAAQ,CAACR,CAAD,EAAe,CAGrCxC,CAAaiD,KAAK,CAAA,CAAE,CAChBhD,CAAOiD,YAAX,CACChD,CAAU8C,QAAQ,CAAChD,CAAD,CADnB,CAGCE,CAAU0C,OAAO,CAAC5C,CAAD,C,CAIlBA,CAAc,CAAAC,CAAO+B,WAAP,CAAmB,CAChC,CAAE,QAAQ,CAAE/B,CAAOgC,aAAa,CAAE,MAAM,CAAEhC,CAAOiC,WAAW,CAAE,QAAQ,CAAEjC,CAAOkD,QAA/E,CADgC,CAEhC,CACGlD,CAAOwB,QAAS,CAAE,C,GACrBE,CAAW,CAAEC,UAAU,CAACX,CAAS,CAAEhB,CAAOwB,QAAnB,EAA4B,CAGpDzB,CAAaoD,MAAM,CAACvB,CAAW,CAAEL,CAAd,CAA+B,CAC9C,CAACvB,CAAOoD,QAAS,EAAGpD,CAAOqD,a,EAC9BtD,CAAauD,MAAM,CAACtC,CAAD,CAAW,CAE3BhB,CAAO8C,YAAa,EAAGP,C,EAC1BA,CAAae,MAAM,CAAC,QAAS,CAACC,CAAD,CAAQ,CACpCA,CAAKC,gBAAgB,CAAA,CAAE,CACvBxC,CAAS,CAAC,CAAA,CAAD,CAF2B,CAAlB,CAGjB,CAGChB,CAAOoD,Q,EACVrD,CAAauD,MAAM,CAAC,QAAS,CAAA,CAAG,CAC/BtD,CAAOoD,QAAQ,CAAA,CAAE,CACjBpC,CAAS,CAAA,CAFsB,CAAb,CAGjB,CAGHH,CAAO,CAACM,CAAD,CAAU,CAEbnB,CAAOyD,MAAO,EAAGC,O,EACpBA,OAAOC,IAAI,CAACxC,CAAD,CAAU,CAGfpB,CArFa,CAuHrBG,SAASA,CAAY,CAACF,CAAD,CAAU,CAU9B,OATKA,C,GAAWA,CAAQ,CAAEV,CAAU,CAAA,EAAE,CACtCW,CAAW,CAAElB,CAAC,CAAC,GAAI,CAAEiB,CAAO4D,YAAd,CAA2B,CACrC3D,CAAUE,Q,CACNF,C,EAERA,CAAW,CAAElB,CAAC,CAAC,QAAD,CACb8E,KAAK,CAAC,IAAI,CAAE7D,CAAO4D,YAAd,CACLnB,SAAS,CAACzC,CAAO8D,cAAR,CAAuB,CACjC7D,CAAU8D,SAAS,CAAChF,CAAC,CAACiB,CAAOgE,OAAR,CAAF,CAAmB,CAC/B/D,EAVuB,CAa/BX,SAASA,CAAU,CAAA,CAAG,CACrB,OAAOP,CAACoD,OAAO,CAAC,CAAA,CAAE,CAAExB,CAAW,CAAA,CAAE,CAAEsD,CAAMjE,QAA1B,CADM,CAItBQ,SAASA,CAAW,CAACT,CAAD,CAAgB,EAC9BE,C,GAAcA,CAAW,CAAEC,CAAY,CAAA,EAAE,CAC1CH,CAAamE,GAAG,CAAC,UAAD,E,GAGpBnE,CAAaW,OAAO,CAAA,CAAE,CACtBX,CAAc,CAAE,IAAI,CAChBE,CAAUQ,SAAS,CAAA,CAAEN,OAAQ,GAAI,C,EACpCF,CAAUS,OAAO,CAAA,EARiB,CA9QpC,IACIT,EACAN,EACAyC,EAAU,EACV/C,EAAY,CACf,KAAK,CAAE,OAAO,CACd,IAAI,CAAE,MAAM,CACZ,OAAO,CAAE,SAAS,CAClB,OAAO,CAAE,SAJM,EAOZ4E,EAAS,CACZ,KAAK,CAAEnE,CAAK,CACZ,KAAK,CAAEd,CAAK,CACZ,YAAY,CAAEkB,CAAY,CAC1B,IAAI,CAAEV,CAAI,CACV,OAAO,CAAE,CAAA,CAAE,CACX,SAAS,CAAEC,CAAS,CACpB,OAAO,CAAEG,CAAO,CAChB,OAAO,CAnBM,OAmBG,CAChB,OAAO,CAAEC,CATG,CAXQ,CAuBrB,OAAOoE,CAxBY,CA4RlB,CAAA,CA7R6B,CAA1B,CADc,EAgSpB,CAAC,OAAOnF,MAAO,EAAI,UAAW,EAAGA,MAAMqF,IAAK,CAAErF,MAAO,CAAE,QAAS,CAACsF,CAAI,CAAEC,CAAP,CAAgB,CAC5E,OAAOC,MAAO,EAAI,WAAY,EAAGA,MAAMC,QAA3C,CACCD,MAAMC,QAAS,CAAEF,CAAO,CAACG,OAAO,CAACJ,CAAK,CAAA,CAAA,CAAN,CAAR,CADzB,CAGCK,MAAOR,OAAU,CAAEI,CAAO,CAACI,MAAOC,OAAR,CAJqD,CAAhF,C", +"sources":["toastr.js"], +"names":["define","$","error","message","title","optionsOverride","notify","toastType","getOptions","iconClasses","info","subscribe","callback","listener","success","warning","clear","$toastElement","options","$container","getContainer","length","hideMethod","hideDuration","hideEasing","complete","removeToast","children","remove","getDefaults","undefined","publish","args","map","hideToast","override","onHidden","response","state","endTime","Date","delayedhideToast","timeOut","extendedTimeOut","intervalId","setTimeout","stickAround","clearTimeout","stop","showMethod","showDuration","showEasing","iconClass","extend","toastId","$titleElement","$messageElement","$closeElement","closeHtml","addClass","toastClass","append","titleClass","messageClass","closeButton","prepend","hide","newestOnTop","onShown","hover","onclick","tapToDismiss","click","event","stopPropagation","debug","console","log","containerId","attr","positionClass","appendTo","target","toastr","is","amd","deps","factory","module","exports","require","window","jQuery"] +} diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.0.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.0.nupkg new file mode 100644 index 0000000000..0be0d704bd Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.0.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.0.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.0.nuspec new file mode 100644 index 0000000000..92ce5ef452 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.0.nuspec @@ -0,0 +1,35 @@ + + + + 1.0.0 + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + + + + toastr + toastr + false + 3 Easy Steps: + +1) Link to toastr.css and toastr-responsive.css +2) Link to toastr.js +3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.1.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.1.nupkg new file mode 100644 index 0000000000..afb7a2269e Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.1.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.1.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.1.nuspec new file mode 100644 index 0000000000..d73cd002ac Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.1.nuspec differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.2.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.2.nupkg new file mode 100644 index 0000000000..3ebbc75571 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.2.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.2.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.2.nuspec new file mode 100644 index 0000000000..79dd9a25b2 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.2.nuspec differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.3.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.3.nupkg new file mode 100644 index 0000000000..71335bed42 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.3.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.3.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.3.nuspec new file mode 100644 index 0000000000..94071f69bd --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.0.3.nuspec @@ -0,0 +1,38 @@ + + + + toastr + 1.0.2 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + false + 3 Easy Steps: + +1) Link to toastr.css and toastr-responsive.css +2) Link to toastr.js +3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Minor updates for long unbroken string going outside toast and new feature to keep the toast around after hover-off for an extended timeout. + +Set extendedTimeOut and timeOut to 0 to avoid toastr from fading away. + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.0.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.0.nupkg new file mode 100644 index 0000000000..555e321ad1 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.0.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.0.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.0.nuspec new file mode 100644 index 0000000000..a65e371434 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.0.nuspec @@ -0,0 +1,35 @@ + + + + toastr + 1.1.0 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added AMD support (and backwards compat with non AMD), toastr.clear() method, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.1.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.1.nupkg new file mode 100644 index 0000000000..b5cf330ade Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.1.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.1.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.1.nuspec new file mode 100644 index 0000000000..ee508fd109 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.1.nuspec @@ -0,0 +1,35 @@ + + + + toastr + 1.1.1 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added AMD support (and backwards compat with non AMD), toastr.clear() method, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.2.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.2.nupkg new file mode 100644 index 0000000000..ecca818d8e Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.2.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.2.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.2.nuspec new file mode 100644 index 0000000000..96caba573f --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.2.nuspec @@ -0,0 +1,35 @@ + + + + toastr + 1.1.2 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added AMD support (and backwards compat with non AMD), toastr.clear() method clears 1 or all toasts, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.3.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.3.nupkg new file mode 100644 index 0000000000..068a54114d Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.3.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.1.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.1.nupkg new file mode 100644 index 0000000000..93ca4dfde6 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.1.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.1.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.1.nuspec new file mode 100644 index 0000000000..c3fe23768c --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.1.nuspec @@ -0,0 +1,40 @@ + + + + toastr + 1.1.4.1 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added AMD support (and backwards compat with non AMD), toastr.clear() method clears 1 or all toasts, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 + +Fix to the toastr.min.js file + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.2.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.2.nupkg new file mode 100644 index 0000000000..e92fdd46e4 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.2.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.2.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.2.nuspec new file mode 100644 index 0000000000..e9c1ff4ab6 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.2.nuspec @@ -0,0 +1,40 @@ + + + + toastr + 1.1.4.2 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added AMD support (and backwards compat with non AMD), toastr.clear() method clears 1 or all toasts, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 + +Fix to the toastr.min.js file + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.nupkg new file mode 100644 index 0000000000..badab22354 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.nuspec new file mode 100644 index 0000000000..5578b3f87d --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.4.nuspec @@ -0,0 +1,40 @@ + + + + toastr + 1.1.4 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added AMD support (and backwards compat with non AMD), toastr.clear() method clears 1 or all toasts, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 + +Fix to the toastr.min.js file + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.5.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.5.nupkg new file mode 100644 index 0000000000..9dc0442875 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.5.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.5.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.5.nuspec new file mode 100644 index 0000000000..73419fadca --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.1.5.nuspec @@ -0,0 +1,38 @@ + + + + toastr + 1.1.5 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Now using SemVer for JavaScript files. + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.0.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.0.nupkg new file mode 100644 index 0000000000..a63ec724b7 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.0.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.0.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.0.nuspec new file mode 100644 index 0000000000..d667d5654d --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.0.nuspec @@ -0,0 +1,40 @@ + + + + toastr + 1.2.0 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added getContainer(). +Fixed clear() bug. +Removed semver from file name. + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.1.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.1.nupkg new file mode 100644 index 0000000000..34bc06054b Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.1.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.1.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.1.nuspec new file mode 100644 index 0000000000..bbd307fe35 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.1.nuspec @@ -0,0 +1,40 @@ + + + + toastr + 1.2.1 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added getContainer(). +Fixed clear() bug. +Removed semver from file name. + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.2.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.2.nupkg new file mode 100644 index 0000000000..75ee4ae591 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.2.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.2.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.2.nuspec new file mode 100644 index 0000000000..cca81874bb --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.2.2.nuspec @@ -0,0 +1,40 @@ + + + + toastr + 1.2.2 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added getContainer(). +Fixed clear() bug. +Removed semver from file name. + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.3.0.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.3.0.nupkg new file mode 100644 index 0000000000..b4dfe38ff4 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.3.0.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.3.0.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.3.0.nuspec new file mode 100644 index 0000000000..c17279757d --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.3.0.nuspec @@ -0,0 +1,48 @@ + + + + toastr + 1.3.0 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Added onFadeIn and onFadeOut callbacks. + toastr.options.onFadeIn = function() { console.log('hello'); } +Added option <code>newestOnTop</code> to show toasts in oldest or newest first order. + toastr.options.newestOnTop = false; +Fixed margins on full width toasts +Added LESS file. +Added min file for JS and CSS +Added missing vendor prefixes in CSS. +Various minor bug fixes. +Added unit tests for new features. + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.3.1.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.3.1.nupkg new file mode 100644 index 0000000000..a1eb1ca399 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.3.1.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.3.1.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.3.1.nuspec new file mode 100644 index 0000000000..8bf2963dc8 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.1.3.1.nuspec @@ -0,0 +1,63 @@ + + + + toastr + 1.3.1 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + https://github.com/CodeSeven/toastr + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + v.1.3.1 +Added new API for toastr.subscribe so you can be alerted when toasts appear and disappear. + +toastr.subscribe(function (args) { + // args contains the toast options and data +} + +Added support for glimpse.toastr.js plugin. https://github.com/johnpapa/glimpse.toastr + +Added toastId, state (visible/hidden), startTime and endTime to the toastr info response (available in the coneol, glimpse.toastr plugin, or via the subscribe callback). + +Fixed bug with stacking toasts when clear all toasts occurs first. + +v1.2.2 + +Added onFadeIn and onFadeOut callbacks. + toastr.options.onFadeIn = function() { console.log('hello'); } +Added option <code>newestOnTop</code> to show toasts in oldest or newest first order. + toastr.options.newestOnTop = false; +Fixed margins on full width toasts +Added LESS file. +Added min file for JS and CSS +Added missing vendor prefixes in CSS. +Various minor bug fixes. +Added unit tests for new features. + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.0-rc1.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.0-rc1.nupkg new file mode 100644 index 0000000000..fe2dabd4a1 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.0-rc1.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.0-rc1.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.0-rc1.nuspec new file mode 100644 index 0000000000..d13d8e1b14 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.0-rc1.nuspec @@ -0,0 +1,49 @@ + + + + toastr + 2.0.0-rc1 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + http://toastrjs.com/ + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + Toastr is a JavaScript library for non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + The following animations options have been deprecated and should be replaced: + +Replace options.fadeIn with options.showDuration +Replace options.onFadeIn with options.onShown +Replace options.fadeOut with options.hideDuration +Replace options.onFadeOut with options.onHidden + +Optional 'close' button, bug fixes, and improved responsive design. + +For other changes, see http://toastrjs.com + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.1.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.1.nupkg new file mode 100644 index 0000000000..a3a98b2a2f Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.1.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.1.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.1.nuspec new file mode 100644 index 0000000000..09b937d49c --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.1.nuspec @@ -0,0 +1,49 @@ + + + + toastr + 2.0.1 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + http://toastrjs.com/ + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + Toastr is a JavaScript library for non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + The following animations options have been deprecated and should be replaced: + +Replace options.fadeIn with options.showDuration +Replace options.onFadeIn with options.onShown +Replace options.fadeOut with options.hideDuration +Replace options.onFadeOut with options.onHidden + +Optional 'close' button, bug fixes, and improved responsive design. + +For other changes, see http://toastrjs.com + Copyright © 2012 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.2.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.2.nupkg new file mode 100644 index 0000000000..2efdb7adc4 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.2.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.2.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.2.nuspec new file mode 100644 index 0000000000..1f76718f46 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.2.nuspec @@ -0,0 +1,41 @@ + + + + toastr + 2.0.2 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + http://toastrjs.com/ + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + Toastr is a JavaScript library for non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Change log: https://github.com/CodeSeven/toastr/blob/master/CHANGELOG.md + Copyright © 2012-2014 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.3.nupkg b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.3.nupkg new file mode 100644 index 0000000000..6389cdf62c Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.3.nupkg differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.3.nuspec b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.3.nuspec new file mode 100644 index 0000000000..1e6133a527 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/nuget/toastr.2.0.3.nuspec @@ -0,0 +1,41 @@ + + + + toastr + 2.0.3 + toastr + John Papa,Hans Fjällemark + John Papa,Hans Fjällemark + http://www.opensource.org/licenses/mit-license.php + http://toastrjs.com/ + http://johnpapa.net/wp-content/images/toastr-icon.png + false + 3 Easy Steps: + +(1) Link to toastr.css +(2) Link to toastr.js +(3) Use toastr to display a toast for info, success, warning or error + +// Display an info toast with no title +toastr.info('Are you the 6 fingered man?') + +*** For other API calls, see the demo + Toastr is a JavaScript library for non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. + Change log: https://github.com/CodeSeven/toastr/blob/master/CHANGELOG.md + Copyright © 2012-2014 Hans Fjällemark & John Papa. + en-US + toastr, toast, notification, dialog, jquery + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/package.json b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/package.json new file mode 100644 index 0000000000..b4a81e133f --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/package.json @@ -0,0 +1,68 @@ +{ + "name": "toastr", + "filename": "build/toastr.min.js", + "main": "toastr.js", + "style": "build/toastr.min.css", + "version": "2.1.3", + "description": "ToastrJS is a JavaScript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended.", + "homepage": "http://www.toastrjs.com", + "keywords": [ + "Toastr", + "ToastrJS", + "toastr.js" + ], + "maintainers": [ + { + "name": "John Papa", + "web": "http://www.johnpapa.net", + "twitter": "@john_papa" + }, + { + "name": "Tim Ferrell", + "web": "https://twitter.com/ferrell_tim", + "twitter": "@ferrell_tim" + } + ], + "repository": { + "type": "git", + "url": "git://github.com/CodeSeven/toastr.git" + }, + "bugs": "http://stackoverflow.com/questions/tagged/toastr", + "licenses": [ + { + "type": "MIT", + "url": "http://www.opensource.org/licenses/mit-license.php" + } + ], + "dependencies": { + "jquery": ">=1.12.0" + }, + "devDependencies": { + "gulp": "^3.8.10", + "gulp-bytediff": "^0.2.0", + "gulp-jscs": "^1.3.0", + "gulp-jshint": "^1.9.0", + "gulp-less": "^3.0.3", + "gulp-load-plugins": "^0.7.1", + "gulp-load-utils": "0.0.4", + "gulp-minify-css": "^0.3.11", + "gulp-rename": "^1.2.0", + "gulp-sourcemaps": "^1.2.8", + "gulp-task-listing": "^0.3.0", + "gulp-uglify": "^1.0.1", + "gulp-util": "^3.0.1", + "jquery": "^2.1.1", + "jshint-stylish": "^1.0.0", + "karma": "^0.12.25", + "karma-coverage": "^0.2.6", + "karma-phantomjs-launcher": "^0.1.4", + "karma-qunit": "^0.1.3", + "merge-stream": "^0.1.6", + "phantomjs": "^1.9.7-15", + "plato": "^1.2.2", + "qunitjs": "~1.14.0" + }, + "scripts": { + "test": "gulp test" + } +} diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/release checklist.md b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/release checklist.md new file mode 100644 index 0000000000..52e5a83f8f --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/release checklist.md @@ -0,0 +1,32 @@ +Toastr Release Checklist + +1. Update Toastr Version + * toastr.js + * bower.json (toastr-bower repo) + * package.json + * nuget versions and dependency versions + * readme file for github repo + * Consider HotTowel VSIX +2. Gulp + * run main demo + * `gulp analyze` + * `gulp test` + * `gulp` +3. Nuget + * Copy new files in + * Build + * Test +4. CDNJS + * Update CDNJS +5. Update Website with New Downloads +6. Publish Bower + * Include License and Readme + * Test Locally + * Update Github repo toastr-bower + * Github tag + * Register with Bower +7. Publish Nugets +8. Release on Github + * Tag with semver + * Attach all artifacts +9. Blog post \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/qunit/qunit.css b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/qunit/qunit.css new file mode 100644 index 0000000000..7ba3f9a30b --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/qunit/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; +} diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/qunit/qunit.js b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/qunit/qunit.js new file mode 100644 index 0000000000..84c73907de --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/qunit/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()) )); diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/toastr-tests.html b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/toastr-tests.html new file mode 100644 index 0000000000..1fe155b424 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/toastr-tests.html @@ -0,0 +1,21 @@ + + + + toastr QUnit Tests + + + + +
    +

    toastr QUnit Tests

    +

    +
    +

    +
      +
      test markup, will be hidden
      + + + + + + diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/unit/qunit-helper.js b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/unit/qunit-helper.js new file mode 100644 index 0000000000..42ce5e23f3 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/unit/qunit-helper.js @@ -0,0 +1,13 @@ +/** + * Hack to expose spec count from QUnit to Karma + */ + +var testCount = 0; +var qunitTest = QUnit.test; +QUnit.test = window.test = function () { + testCount += 1; + qunitTest.apply(this, arguments); +}; +QUnit.begin(function (args) { + args.totalTests = testCount; +}); diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/unit/toastr-tests.js b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/unit/toastr-tests.js new file mode 100644 index 0000000000..71b704e7ef --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/unit/toastr-tests.js @@ -0,0 +1,861 @@ +/// +/// +(function () { + var iconClasses = { + error: 'toast-error', + info: 'toast-info', + success: 'toast-success', + warning: 'toast-warning' + }; + var positionClasses = { + topRight: 'toast-top-right', + bottomRight: 'toast-bottom-right', + bottomLeft: 'toast-bottom-left', + topLeft: 'toast-top-left', + topCenter: 'toast-top-center', + bottomCenter: 'toast-bottom-center' + }; + var sampleMsg = 'I don\'t think they really exist'; + var sampleTitle = 'TEST'; + var selectors = { + container: 'div#toast-container', + toastInfo: 'div#toast-container > div.toast-info', + toastWarning: 'div#toast-container > div.toast-success', + toastError: 'div#toast-container > div.toast-error', + toastSuccess: 'div#toast-container > div.toast-success' + }; + + toastr.options = { + timeOut: 2000, + extendedTimeOut: 0, + fadeOut: 0, + fadeIn: 0, + showDuration: 0, + hideDuration: 0, + debug: false + }; + + var delay = toastr.options.timeOut + 500; + + // 'Clears' must go first + module('clear'); + asyncTest('clear - show 3 toasts, clear the 2nd', 1, function () { + //Arrange + var $toast = []; + $toast[0] = toastr.info(sampleMsg, sampleTitle + '-1'); + $toast[1] = toastr.info(sampleMsg, sampleTitle + '-2'); + $toast[2] = toastr.info(sampleMsg, sampleTitle + '-3'); + var $container = toastr.getContainer(); + //Act + toastr.clear($toast[1]); + //Assert + setTimeout(function () { + ok($container && $container.children().length === 2); + //Teardown + resetContainer(); + start(); + }, 1000); + }); + asyncTest('clear - show 3 toasts, clear all 3, 0 left', 1, function () { + //Arrange + var $toast = []; + $toast[0] = toastr.info(sampleMsg, sampleTitle + '-1'); + $toast[1] = toastr.info(sampleMsg, sampleTitle + '-2'); + $toast[2] = toastr.info(sampleMsg, sampleTitle + '-3'); + var $container = toastr.getContainer(); + //Act + toastr.clear(); + //Assert + setTimeout(function () { + ok($container && $container.children().length === 0); + //Teardown + resetContainer(); + start(); + }, delay); + }); + test('clear - after clear with force option toast with focus disappears', 1, function () { + //Arrange + var $toast; + var msg = sampleMsg + '

      '; + //Act + $toast = toastr.info(msg, sampleTitle + '-1'); + $toast.find('button').focus(); + toastr.clear($toast, { force: true }); + var $container = toastr.getContainer(); + //Assert + ok($container && $container.children().length === 0, 'Focused toast after a clear with force is not visible'); + //Teardown + resetContainer(); + }); + asyncTest('clear and show - show 2 toasts, clear both, then show 1 more', 2, function () { + //Arrange + var $toast = []; + $toast[0] = toastr.info(sampleMsg, sampleTitle + '-1'); + $toast[1] = toastr.info(sampleMsg, sampleTitle + '-2'); + var $container = toastr.getContainer(); + toastr.clear(); + //Act + setTimeout(function () { + $toast[2] = toastr.info(sampleMsg, sampleTitle + '-3-Visible'); + //Assert + equal($toast[2].find('div.toast-title').html(), sampleTitle + '-3-Visible', 'Finds toast after a clear'); + ok($toast[2].is(':visible'), 'Toast after a clear is visible'); + //Teardown + resetContainer(); + start(); + }, delay); + }); + asyncTest('clear and show - clear removes toast container', 2, function () { + //Arrange + var $toast = []; + $toast[0] = toastr.info(sampleMsg, sampleTitle + '-1'); + $toast[1] = toastr.info(sampleMsg, sampleTitle + '-2'); + var $container = toastr.getContainer(); + toastr.clear(); + //Act + setTimeout(function () { + //Assert + equal($(selectors.container).length, 0, 'Toast container does not exist'); + ok(!$toast[1].is(':visible'), 'Toast after a clear is visible'); + //Teardown + resetContainer(); + start(); + }, delay); + }); + asyncTest('clear and show - after clear new toast creates container', 1, function () { + //Arrange + var $toast = []; + $toast[0] = toastr.info(sampleMsg, sampleTitle + '-1'); + $toast[1] = toastr.info(sampleMsg, sampleTitle + '-2'); + var $container = toastr.getContainer(); + toastr.clear(); + //Act + setTimeout(function () { + $toast[2] = toastr.info(sampleMsg, sampleTitle + '-3-Visible'); + //Assert + equal($(selectors.container).find('div.toast-title').html(), sampleTitle + '-3-Visible', 'Finds toast after a clear'); //Teardown + resetContainer(); + start(); + }, delay); + }); + asyncTest('clear and show - clear toast after hover', 1, function () { + //Arrange + var $toast = toastr.info(sampleMsg, sampleTitle); + var $container = toastr.getContainer(); + $toast.trigger("mouseout"); + //Act + setTimeout(function () { + //Assert + ok($container.find('div.toast-title').length === 0, 'Toast clears after a mouse hover'); //Teardown + resetContainer(); + start(); + }, 500); + }); + asyncTest('clear and show - do not clear toast after hover', 1, function () { + //Arrange + var $toast = toastr.info(sampleMsg, sampleTitle, { closeOnHover: false }); + var $container = toastr.getContainer(); + $toast.trigger("mouseout"); + //Act + setTimeout(function () { + //Assert + ok($container.find('div.toast-title').length === 1, 'Toast does not clear after a mouse hover'); //Teardown + resetContainer(); + start(); + }, 500); + }); + test('clear and show - after clear all toasts new toast still appears', 1, function () { + //Arrange + var $toast = []; + //Act + $toast[0] = toastr.info(sampleMsg, sampleTitle + '-1'); + $toast[1] = toastr.info(sampleMsg, sampleTitle + '-2'); + toastr.clear(); + $toast[2] = toastr.info(sampleMsg, sampleTitle + '-3-Visible'); + //Assert + ok($toast[2].is(':visible'), 'Toast after a clear is visible'); + //Teardown + resetContainer(); + }); + module('info'); + test('info - pass title and message', 3, function () { + //Arrange + //Act + var $toast = toastr.info(sampleMsg, sampleTitle); + //Assert + equal($toast.find('div.toast-title').html(), sampleTitle, 'Sets title'); + equal($toast.find('div.toast-message').html(), sampleMsg, 'Sets message'); + ok($toast.hasClass(iconClasses.info), 'Sets info icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('info - pass message, but no title', 3, function () { + //Arrange + //Act + var $toast = toastr.info(sampleMsg); + //Assert + equal($toast.find('div.toast-title').length, 0, 'Sets null title'); + equal($toast.find('div.toast-message').html(), sampleMsg, 'Sets message'); + ok($toast.hasClass(iconClasses.info), 'Sets info icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('info - pass no message nor title', 3, function () { + //Arrange + //Act + var $toast = toastr.info(); //Assert + equal($toast.find('div.toast-title').length, 0, 'Sets null title'); + equal($toast.find('div.toast-message').html(), null, 'Sets message'); + ok($toast.hasClass(iconClasses.info), 'Sets info icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + module('warning'); + test('warning - pass message and title', 3, function () { + //Arrange + //Act + var $toast = toastr.warning(sampleMsg, sampleTitle); + //Assert + equal($toast.find('div.toast-title').html(), sampleTitle, 'Sets title'); + equal($toast.find('div.toast-message').html(), sampleMsg, 'Sets message'); + ok($toast.hasClass(iconClasses.warning), 'Sets warning icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('warning - pass message, but no title', 3, function () { + //Arrange + //Act + var $toast = toastr.warning(sampleMsg); + //Assert + equal($toast.find('div.toast-title').length, 0, 'Sets empty title'); + equal($toast.find('div.toast-message').html(), sampleMsg, 'Sets message'); + ok($toast.hasClass(iconClasses.warning), 'Sets warning icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('warning - no message nor title', 3, function () { + //Arrange + //Act + var $toast = toastr.warning(''); + //Assert + equal($toast.find('div.toast-title').length, 0, 'Sets null title'); + equal($toast.find('div.toast-message').length, 0, 'Sets empty message'); + ok($toast.hasClass(iconClasses.warning), 'Sets warning icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + module('error'); + test('error - pass message and title', 3, function () { + //Arrange + //Act + var $toast = toastr.error(sampleMsg, sampleTitle); + //Assert + equal($toast.find('div.toast-title').html(), sampleTitle, 'Sets title'); + equal($toast.find('div.toast-message').html(), sampleMsg, 'Sets message'); + ok($toast.hasClass(iconClasses.error), 'Sets error icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('error - pass message, but no title', 3, function () { + //Arrange + //Act + var $toast = toastr.error(sampleMsg); //Assert + equal($toast.find('div.toast-title').length, 0, 'Sets empty title'); + equal($toast.find('div.toast-message').html(), sampleMsg, 'Sets message'); + ok($toast.hasClass(iconClasses.error), 'Sets error icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('error - no message nor title', 3, function () { + //Arrange + //Act + var $toast = toastr.error(''); + //Assert + equal($toast.find('div.toast-title').length, 0, 'Sets empty title'); + equal($toast.find('div.toast-message').length, 0, 'Sets empty message'); + ok($toast.hasClass(iconClasses.error), 'Sets error icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + module('success'); + test('success - pass message and title', 3, function () { + //Arrange + //Act + var $toast = toastr.success(sampleMsg, sampleTitle); + //Assert + equal($toast.find('div.toast-title').html(), sampleTitle, 'Sets title'); + equal($toast.find('div.toast-message').html(), sampleMsg, 'Sets message'); + ok($toast.hasClass(iconClasses.success), 'Sets success icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('success - pass message, but no title', 3, function () { + //Arrange + //Act + var $toast = toastr.success(sampleMsg); + //Assert + equal($toast.find('div.toast-title').length, 0, 'Sets empty title'); + equal($toast.find('div.toast-message').html(), sampleMsg, 'Sets message'); + ok($toast.hasClass(iconClasses.success), 'Sets success icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('success - no message nor title', 3, function () { + //Arrange + //Act + var $toast = toastr.success(''); + //Assert + equal($toast.find('div.toast-title').length, 0, 'Sets null title'); + equal($toast.find('div.toast-message').length, 0, 'Sets empty message'); + ok($toast.hasClass(iconClasses.success), 'Sets success icon'); //Teardown + $toast.remove(); + clearContainerChildren(); + }); + + + module('escape html', { + teardown: function () { + toastr.options.escapeHtml = false; + } + }); + test('info - escape html', 2, function () { + //Arrange + toastr.options.escapeHtml = true; + //Act + var $toast = toastr.info('html message', 'html title'); + //Assert + equal($toast.find('div.toast-title').html(), 'html <u>title</u>', 'Title is escaped'); + equal($toast.find('div.toast-message').html(), 'html <strong>message</strong>', 'Message is escaped'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('warning - escape html', 2, function () { + //Arrange + toastr.options.escapeHtml = true; + //Act + var $toast = toastr.warning('html message', 'html title'); + //Assert + equal($toast.find('div.toast-title').html(), 'html <u>title</u>', 'Title is escaped'); + equal($toast.find('div.toast-message').html(), 'html <strong>message</strong>', 'Message is escaped'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('error - escape html', 2, function () { + //Arrange + toastr.options.escapeHtml = true; + //Act + var $toast = toastr.error('html message', 'html title'); + //Assert + equal($toast.find('div.toast-title').html(), 'html <u>title</u>', 'Title is escaped'); + equal($toast.find('div.toast-message').html(), 'html <strong>message</strong>', 'Message is escaped'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('success - escape html', 2, function () { + //Arrange + toastr.options.escapeHtml = true; + //Act + var $toast = toastr.success('html message', 'html title'); + //Assert + equal($toast.find('div.toast-title').html(), 'html <u>title</u>', 'Title is escaped'); + equal($toast.find('div.toast-message').html(), 'html <strong>message</strong>', 'Message is escaped'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + + module('closeButton', { + teardown: function () { + toastr.options.closeButton = false; + } + }); + test('close button disabled', 1, function () { + //Arrange + toastr.options.closeButton = false; + //Act + var $toast = toastr.success(''); + //Assert + equal($toast.find('button.toast-close-button').length, 0, 'close button should not exist with closeButton=false'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('close button enabled', 1, function () { + //Arrange + toastr.options.closeButton = true; + //Act + var $toast = toastr.success(''); + //Assert + equal($toast.find('button.toast-close-button').length, 1, 'close button should exist with closeButton=true'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('close button has type=button', 1, function () { + //Arrange + toastr.options.closeButton = true; + //Act + var $toast = toastr.success(''); + //Assert + equal($toast.find('button[type="button"].toast-close-button').length, 1, 'close button should have type=button'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + asyncTest('close button duration', 1, function () { + //Arrange + toastr.options.closeButton = true; + toastr.options.closeDuration = 0; + toastr.options.hideDuration = 2000; + var $container = toastr.getContainer(); + //Act + var $toast = toastr.success(''); + $toast.find('button.toast-close-button').click(); + setTimeout(function () { + //Assert + ok($container && $container.children().length === 0, 'close button should support own hide animation'); + //Teardown + toastr.options.hideDuration = 0; + resetContainer(); + start(); + }, 500); + }); + + module('progressBar', { + teardown: function () { + toastr.options.progressBar = false; + } + }); + test('progress bar disabled', 1, function () { + //Arrange + toastr.options.progressBar = false; + //Act + var $toast = toastr.success(''); + //Assert + equal($toast.find('div.toast-progress').length, 0, 'progress bar should not exist with progressBar=false'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('progress bar enabled', 1, function () { + //Arrange + toastr.options.progressBar = true; + //Act + var $toast = toastr.success(''); + //Assert + equal($toast.find('div.toast-progress').length, 1, 'progress bar should exist with progressBar=true'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + + module('rtl', { + teardown: function () { + toastr.options.rtl = false; + } + }); + test('toastr is ltr by default', 1, function () { + //Arrange + //Act + //Assert + toastr.subscribe(function(response) { + equal(response.options.rtl, false, 'ltr by default (i.e. rtl=false)'); + }); + var $toast = toastr.success(''); + //Teardown + toastr.subscribe(null); + $toast.remove(); + clearContainerChildren(); + }); + test('ltr toastr does not have .rtl class', 1, function () { + //Arrange + //Act + var $toast = toastr.success(''); + //Assert + ok($toast.hasClass('rtl') === false, 'ltr div container does not have .rtl class'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('rtl toastr has .rtl class', 1, function () { + //Arrange + toastr.options.rtl = true; + //Act + var $toast = toastr.success(''); + //Assert + ok($toast.hasClass('rtl'), 'rtl div container has .rtl class'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + + module('accessibility'); + test('toastr success has aria polite',1,function() { + // Arrange + var $toast = toastr.success(''); + + // Act + ok($toast.attr('aria-live')==='polite', 'success toast has aria-live of polite'); + + // Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('toastr info has aria polite',1,function() { + // Arrange + var $toast = toastr.info(''); + + // Act + ok($toast.attr('aria-live')==='polite', 'info toast has aria-live of polite'); + + // Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('toastr warning has aria assertive',1,function() { + // Arrange + var $toast = toastr.warning(''); + + // Act + ok($toast.attr('aria-live')==='assertive', 'warning toast has aria-live of assertive'); + + // Teardown + $toast.remove(); + clearContainerChildren(); + }); + test('toastr error has aria assertive',1,function() { + // Arrange + var $toast = toastr.error(''); + + // Act + ok($toast.attr('aria-live')==='assertive', 'error toast has aria-live of assertive'); + + // Teardown + $toast.remove(); + clearContainerChildren(); + }); + + module('event', { + teardown: function () { + toastr.options.closeButton = false; + toastr.options.hideDuration = 0; + } + }); + asyncTest('event - onShown is executed', 1, function () { + // Arrange + var run = false; + var onShown = function () { run = true; }; + toastr.options.onShown = onShown; + // Act + var $toast = toastr.success(sampleMsg, sampleTitle); + setTimeout(function () { + // Assert + ok(run); + //Teardown + $toast.remove(); + clearContainerChildren(); + start(); + }, delay); + }); + + asyncTest('event - onHidden is executed', 1, function () { + //Arrange + var run = false; + var onHidden = function () { run = true; }; + toastr.options.onHidden = onHidden; + toastr.options.timeOut = 1; + //Act + var $toast = toastr.success(sampleMsg, sampleTitle); + setTimeout(function () { + // Assert + ok(run); //Teardown + $toast.remove(); + clearContainerChildren(); + start(); + }, delay); + }); + + asyncTest('event - onShown and onHidden are both executed', 2, function () { + //Arrange + var onShowRun = false; + var onHideRun = false; + var onShow = function () { onShowRun = true; }; + var onHide = function () { onHideRun = true; }; + toastr.options.onShown = onShow; + toastr.options.onHidden = onHide; + toastr.options.timeOut = 1; + //Act + var $toast = toastr.success(sampleMsg, sampleTitle); + setTimeout(function () { + // Assert + ok(onShowRun); + ok(onHideRun); + //Teardown + $toast.remove(); + clearContainerChildren(); + start(); + }, delay); + }); + + asyncTest('event - onCloseClick is executed', 1, function () { + //Arrange + var run = false; + toastr.options.closeButton = true; + toastr.options.closeDuration = 0; + toastr.options.hideDuration = 2000; + var onCloseClick = function () { run = true; }; + toastr.options.onCloseClick = onCloseClick; + toastr.options.timeOut = 1; + //Act + var $toast = toastr.success(sampleMsg, sampleTitle); + $toast.find('button.toast-close-button').click(); + setTimeout(function () { + // Assert + ok(run); //Teardown + $toast.remove(); + clearContainerChildren(); + start(); + }, delay); + }); + + test('event - message appears when no show or hide method functions provided', 1, function () { + //Arrange + //Act + var $toast = toastr.success(sampleMsg, sampleTitle); + //Assert + ok($toast.hasClass(iconClasses.success), 'Sets success icon'); + //Teardown + $toast.remove(); + clearContainerChildren(); + }); + + test('event - prevent duplicate sequential toasts.', 1, function(){ + toastr.options.preventDuplicates = true; + + var $toast = []; + $toast[0] = toastr.info(sampleMsg, sampleTitle); + $toast[1] = toastr.info(sampleMsg, sampleTitle); + $toast[2] = toastr.info(sampleMsg + " 1", sampleTitle); + $toast[3] = toastr.info(sampleMsg, sampleTitle); + var $container = toastr.getContainer(); + + ok($container && $container.children().length === 3); + + clearContainerChildren(); + }); + + test('event - prevent duplicate sequential toasts, but allow previous after clear.', 1, function(){ + toastr.options.preventDuplicates = true; + + var $toast = []; + $toast[0] = toastr.info(sampleMsg, sampleTitle); + $toast[1] = toastr.info(sampleMsg, sampleTitle); + clearContainerChildren(); + $toast[3] = toastr.info(sampleMsg, sampleTitle); + var $container = toastr.getContainer(); + + ok($container && $container.children().length === 1); + + clearContainerChildren(); + }); + + test('event - allow duplicate sequential toasts.', 1, function(){ + toastr.options.preventDuplicates = false; + + var $toast = []; + $toast[0] = toastr.info(sampleMsg, sampleTitle); + $toast[1] = toastr.info(sampleMsg, sampleTitle); + $toast[1] = toastr.info(sampleMsg, sampleTitle); + var $container = toastr.getContainer(); + + ok($container && $container.children().length === 3); + + clearContainerChildren(); + }); + + test('event - allow preventDuplicates option to be overridden.', 1, function() { + var $toast = []; + + $toast[0] = toastr.info(sampleMsg, sampleTitle, { + preventDuplicates: true + }); + $toast[1] = toastr.info(sampleMsg, sampleTitle, { + preventDuplicates: true + }); + $toast[2] = toastr.info(sampleMsg, sampleTitle); + var $container = toastr.getContainer(); + + ok($container && $container.children().length === 2); + clearContainerChildren(); + }); + + module('subscription'); + asyncTest('subscribe - triggers 2 visible and 2 hidden response notifications while clicking on a toast', 1, function () { + //Arrange + var $toast = []; + var expectedReponses = []; + //Act + toastr.subscribe(function(response) { + if(response.options.testId) { + expectedReponses.push(response); + } + }) + + $toast[0] = toastr.info(sampleMsg, sampleTitle, {testId : 1}); + $toast[1] = toastr.info(sampleMsg, sampleTitle, {testId : 2}); + + $toast[1].click() + + setTimeout(function () { + // Assert + ok(expectedReponses.length === 4); + //Teardown + clearContainerChildren(); + toastr.subscribe(null); + start(); + }, delay); + }); + + module('order of appearance'); + test('Newest toast on top', 1, function () { + //Arrange + resetContainer(); + toastr.options.newestOnTop = true; + //Act + var $first = toastr.success("First toast"); + var $second = toastr.success("Second toast"); + //Assert + var containerHtml = toastr.getContainer().html(); + ok(containerHtml.indexOf("First toast") > containerHtml.indexOf("Second toast"), 'Newest toast is on top'); + //Teardown + $first.remove(); + $second.remove(); + resetContainer(); + }); + + test('Oldest toast on top', 1, function () { + //Arrange + resetContainer(); + toastr.options.newestOnTop = false; + //Act + var $first = toastr.success("First toast"); + var $second = toastr.success("Second toast"); + //Assert + var containerHtml = toastr.getContainer().html(); + ok(containerHtml.indexOf("First toast") < containerHtml.indexOf("Second toast"), 'Oldest toast is on top'); + //Teardown + $first.remove(); + $second.remove(); + resetContainer(); + }); + + // These must go last + module('positioning'); + test('Container - position top-right', 1, function () { + //Arrange + resetContainer(); + toastr.options.positionClass = positionClasses.topRight; + //Act + var $toast = toastr.success(sampleMsg); + var $container = toastr.getContainer(); + //Assert + ok($container.hasClass(positionClasses.topRight), 'Has position top right'); + //Teardown + $toast.remove(); + resetContainer(); + }); + test('Container - position bottom-right', 1, function () { + //Arrange + resetContainer(); + toastr.options.positionClass = positionClasses.bottomRight; + //Act + var $toast = toastr.success(sampleMsg); + var $container = toastr.getContainer(); + //Assert + ok($container.hasClass(positionClasses.bottomRight), 'Has position bottom right'); + //Teardown + $toast.remove(); + resetContainer(); + }); + test('Container - position bottom-left', 1, function () { + //Arrange + resetContainer(); + //$(selectors.container).remove() + toastr.options.positionClass = positionClasses.bottomLeft; + //Act + var $toast = toastr.success(sampleMsg); + var $container = toastr.getContainer(); + //Assert + ok($container.hasClass(positionClasses.bottomLeft), 'Has position bottom left'); + //Teardown + $toast.remove(); + resetContainer(); + }); + test('Container - position top-left', 1, function () { + //Arrange + resetContainer(); + toastr.options.positionClass = positionClasses.topLeft; + //Act + var $toast = toastr.success(sampleMsg); + var $container = toastr.getContainer(); + //Assert + ok($container.hasClass(positionClasses.topLeft), 'Has position top left'); + //Teardown + $toast.remove(); + resetContainer(); + }); + test('Container - position top-center', 1, function () { + //Arrange + resetContainer(); + toastr.options.positionClass = positionClasses.topCenter; + //Act + var $toast = toastr.success(sampleMsg); + var $container = toastr.getContainer(); + //Assert + ok($container.hasClass(positionClasses.topCenter), 'Has position top center'); + //Teardown + $toast.remove(); + resetContainer(); + }); + test('Container - position bottom-center', 1, function () { + //Arrange + resetContainer(); + toastr.options.positionClass = positionClasses.bottomCenter; + //Act + var $toast = toastr.success(sampleMsg); + var $container = toastr.getContainer(); + //Assert + ok($container.hasClass(positionClasses.bottomCenter), 'Has position bottom center'); + //Teardown + $toast.remove(); + resetContainer(); + }); + + function resetContainer() { + var $container = toastr.getContainer(); + if ($container) { + $container.remove(); + } + $(selectors.container).remove(); + clearContainerChildren(); + } + + function clearContainerChildren() { + toastr.clear(); + } + +})(); diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/unit/x.js b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/unit/x.js new file mode 100644 index 0000000000..b78dd48ac8 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/tests/unit/x.js @@ -0,0 +1,3 @@ + test('test test', 1, function () { + ok(1 === 1, '1 equals 1'); + }); diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/toastr-icon.png b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/toastr-icon.png new file mode 100644 index 0000000000..040102adcf Binary files /dev/null and b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/toastr-icon.png differ diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/toastr.js b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/toastr.js new file mode 100644 index 0000000000..f48cb73df3 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/toastr.js @@ -0,0 +1,476 @@ +/* + * Toastr + * Copyright 2012-2015 + * Authors: John Papa, Hans Fjällemark, and Tim Ferrell. + * All Rights Reserved. + * Use, reproduction, distribution, and modification of this code is subject to the terms and + * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php + * + * ARIA Support: Greta Krafsig + * + * Project: https://github.com/CodeSeven/toastr + */ +/* global define */ +(function (define) { + define(['jquery'], function ($) { + return (function () { + var $container; + var listener; + var toastId = 0; + var toastType = { + error: 'error', + info: 'info', + success: 'success', + warning: 'warning' + }; + + var toastr = { + clear: clear, + remove: remove, + error: error, + getContainer: getContainer, + info: info, + options: {}, + subscribe: subscribe, + success: success, + version: '2.1.3', + warning: warning + }; + + var previousToast; + + return toastr; + + //////////////// + + function error(message, title, optionsOverride) { + return notify({ + type: toastType.error, + iconClass: getOptions().iconClasses.error, + message: message, + optionsOverride: optionsOverride, + title: title + }); + } + + function getContainer(options, create) { + if (!options) { options = getOptions(); } + $container = $('#' + options.containerId); + if ($container.length) { + return $container; + } + if (create) { + $container = createContainer(options); + } + return $container; + } + + function info(message, title, optionsOverride) { + return notify({ + type: toastType.info, + iconClass: getOptions().iconClasses.info, + message: message, + optionsOverride: optionsOverride, + title: title + }); + } + + function subscribe(callback) { + listener = callback; + } + + function success(message, title, optionsOverride) { + return notify({ + type: toastType.success, + iconClass: getOptions().iconClasses.success, + message: message, + optionsOverride: optionsOverride, + title: title + }); + } + + function warning(message, title, optionsOverride) { + return notify({ + type: toastType.warning, + iconClass: getOptions().iconClasses.warning, + message: message, + optionsOverride: optionsOverride, + title: title + }); + } + + function clear($toastElement, clearOptions) { + var options = getOptions(); + if (!$container) { getContainer(options); } + if (!clearToast($toastElement, options, clearOptions)) { + clearContainer(options); + } + } + + function remove($toastElement) { + var options = getOptions(); + if (!$container) { getContainer(options); } + if ($toastElement && $(':focus', $toastElement).length === 0) { + removeToast($toastElement); + return; + } + if ($container.children().length) { + $container.remove(); + } + } + + // internal functions + + function clearContainer (options) { + var toastsToClear = $container.children(); + for (var i = toastsToClear.length - 1; i >= 0; i--) { + clearToast($(toastsToClear[i]), options); + } + } + + function clearToast ($toastElement, options, clearOptions) { + var force = clearOptions && clearOptions.force ? clearOptions.force : false; + if ($toastElement && (force || $(':focus', $toastElement).length === 0)) { + $toastElement[options.hideMethod]({ + duration: options.hideDuration, + easing: options.hideEasing, + complete: function () { removeToast($toastElement); } + }); + return true; + } + return false; + } + + function createContainer(options) { + $container = $('
      ') + .attr('id', options.containerId) + .addClass(options.positionClass); + + $container.appendTo($(options.target)); + return $container; + } + + function getDefaults() { + return { + tapToDismiss: true, + toastClass: 'toast', + containerId: 'toast-container', + debug: false, + + showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery + showDuration: 300, + showEasing: 'swing', //swing and linear are built into jQuery + onShown: undefined, + hideMethod: 'fadeOut', + hideDuration: 1000, + hideEasing: 'swing', + onHidden: undefined, + closeMethod: false, + closeDuration: false, + closeEasing: false, + closeOnHover: true, + + extendedTimeOut: 1000, + iconClasses: { + error: 'toast-error', + info: 'toast-info', + success: 'toast-success', + warning: 'toast-warning' + }, + iconClass: 'toast-info', + positionClass: 'toast-top-right', + timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky + titleClass: 'toast-title', + messageClass: 'toast-message', + escapeHtml: false, + target: 'body', + closeHtml: '', + closeClass: 'toast-close-button', + newestOnTop: true, + preventDuplicates: false, + progressBar: false, + progressClass: 'toast-progress', + rtl: false + }; + } + + function publish(args) { + if (!listener) { return; } + listener(args); + } + + function notify(map) { + var options = getOptions(); + var iconClass = map.iconClass || options.iconClass; + + if (typeof (map.optionsOverride) !== 'undefined') { + options = $.extend(options, map.optionsOverride); + iconClass = map.optionsOverride.iconClass || iconClass; + } + + if (shouldExit(options, map)) { return; } + + toastId++; + + $container = getContainer(options, true); + + var intervalId = null; + var $toastElement = $('
      '); + var $titleElement = $('
      '); + var $messageElement = $('
      '); + var $progressElement = $('
      '); + var $closeElement = $(options.closeHtml); + var progressBar = { + intervalId: null, + hideEta: null, + maxHideTime: null + }; + var response = { + toastId: toastId, + state: 'visible', + startTime: new Date(), + options: options, + map: map + }; + + personalizeToast(); + + displayToast(); + + handleEvents(); + + publish(response); + + if (options.debug && console) { + console.log(response); + } + + return $toastElement; + + function escapeHtml(source) { + if (source == null) { + source = ''; + } + + return source + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(/'/g, ''') + .replace(//g, '>'); + } + + function personalizeToast() { + setIcon(); + setTitle(); + setMessage(); + setCloseButton(); + setProgressBar(); + setRTL(); + setSequence(); + setAria(); + } + + function setAria() { + var ariaValue = ''; + switch (map.iconClass) { + case 'toast-success': + case 'toast-info': + ariaValue = 'polite'; + break; + default: + ariaValue = 'assertive'; + } + $toastElement.attr('aria-live', ariaValue); + } + + function handleEvents() { + if (options.closeOnHover) { + $toastElement.hover(stickAround, delayedHideToast); + } + + if (!options.onclick && options.tapToDismiss) { + $toastElement.click(hideToast); + } + + if (options.closeButton && $closeElement) { + $closeElement.click(function (event) { + if (event.stopPropagation) { + event.stopPropagation(); + } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) { + event.cancelBubble = true; + } + + if (options.onCloseClick) { + options.onCloseClick(event); + } + + hideToast(true); + }); + } + + if (options.onclick) { + $toastElement.click(function (event) { + options.onclick(event); + hideToast(); + }); + } + } + + function displayToast() { + $toastElement.hide(); + + $toastElement[options.showMethod]( + {duration: options.showDuration, easing: options.showEasing, complete: options.onShown} + ); + + if (options.timeOut > 0) { + intervalId = setTimeout(hideToast, options.timeOut); + progressBar.maxHideTime = parseFloat(options.timeOut); + progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime; + if (options.progressBar) { + progressBar.intervalId = setInterval(updateProgress, 10); + } + } + } + + function setIcon() { + if (map.iconClass) { + $toastElement.addClass(options.toastClass).addClass(iconClass); + } + } + + function setSequence() { + if (options.newestOnTop) { + $container.prepend($toastElement); + } else { + $container.append($toastElement); + } + } + + function setTitle() { + if (map.title) { + var suffix = map.title; + if (options.escapeHtml) { + suffix = escapeHtml(map.title); + } + $titleElement.append(suffix).addClass(options.titleClass); + $toastElement.append($titleElement); + } + } + + function setMessage() { + if (map.message) { + var suffix = map.message; + if (options.escapeHtml) { + suffix = escapeHtml(map.message); + } + $messageElement.append(suffix).addClass(options.messageClass); + $toastElement.append($messageElement); + } + } + + function setCloseButton() { + if (options.closeButton) { + $closeElement.addClass(options.closeClass).attr('role', 'button'); + $toastElement.prepend($closeElement); + } + } + + function setProgressBar() { + if (options.progressBar) { + $progressElement.addClass(options.progressClass); + $toastElement.prepend($progressElement); + } + } + + function setRTL() { + if (options.rtl) { + $toastElement.addClass('rtl'); + } + } + + function shouldExit(options, map) { + if (options.preventDuplicates) { + if (map.message === previousToast) { + return true; + } else { + previousToast = map.message; + } + } + return false; + } + + function hideToast(override) { + var method = override && options.closeMethod !== false ? options.closeMethod : options.hideMethod; + var duration = override && options.closeDuration !== false ? + options.closeDuration : options.hideDuration; + var easing = override && options.closeEasing !== false ? options.closeEasing : options.hideEasing; + if ($(':focus', $toastElement).length && !override) { + return; + } + clearTimeout(progressBar.intervalId); + return $toastElement[method]({ + duration: duration, + easing: easing, + complete: function () { + removeToast($toastElement); + clearTimeout(intervalId); + if (options.onHidden && response.state !== 'hidden') { + options.onHidden(); + } + response.state = 'hidden'; + response.endTime = new Date(); + publish(response); + } + }); + } + + function delayedHideToast() { + if (options.timeOut > 0 || options.extendedTimeOut > 0) { + intervalId = setTimeout(hideToast, options.extendedTimeOut); + progressBar.maxHideTime = parseFloat(options.extendedTimeOut); + progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime; + } + } + + function stickAround() { + clearTimeout(intervalId); + progressBar.hideEta = 0; + $toastElement.stop(true, true)[options.showMethod]( + {duration: options.showDuration, easing: options.showEasing} + ); + } + + function updateProgress() { + var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100; + $progressElement.width(percentage + '%'); + } + } + + function getOptions() { + return $.extend({}, getDefaults(), toastr.options); + } + + function removeToast($toastElement) { + if (!$container) { $container = getContainer(); } + if ($toastElement.is(':visible')) { + return; + } + $toastElement.remove(); + $toastElement = null; + if ($container.children().length === 0) { + $container.remove(); + previousToast = undefined; + } + } + + })(); + }); +}(typeof define === 'function' && define.amd ? define : function (deps, factory) { + if (typeof module !== 'undefined' && module.exports) { //Node + module.exports = factory(require('jquery')); + } else { + window.toastr = factory(window.jQuery); + } +})); diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/toastr.less b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/toastr.less new file mode 100644 index 0000000000..7a36d45f88 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/toastr.less @@ -0,0 +1,302 @@ +// Mix-ins +.borderRadius(@radius) { + -moz-border-radius: @radius; + -webkit-border-radius: @radius; + border-radius: @radius; +} + +.boxShadow(@boxShadow) { + -moz-box-shadow: @boxShadow; + -webkit-box-shadow: @boxShadow; + box-shadow: @boxShadow; +} + +.opacity(@opacity) { + @opacityPercent: (@opacity * 100); + opacity: @opacity; + -ms-filter: ~"progid:DXImageTransform.Microsoft.Alpha(Opacity=@{opacityPercent})"; + filter: ~"alpha(opacity=@{opacityPercent})"; +} + +.wordWrap(@wordWrap: break-word) { + -ms-word-wrap: @wordWrap; + word-wrap: @wordWrap; +} + +// Variables +@black: #000000; +@grey: #999999; +@light-grey: #CCCCCC; +@white: #FFFFFF; +@near-black: #030303; +@green: #51A351; +@red: #BD362F; +@blue: #2F96B4; +@orange: #F89406; +@default-container-opacity: .8; + +// Styles +.toast-title { + font-weight: bold; +} + +.toast-message { + .wordWrap(); + + a, + label { + color: @white; + } + + a:hover { + color: @light-grey; + text-decoration: none; + } +} + +.toast-close-button { + position: relative; + right: -0.3em; + top: -0.3em; + float: right; + font-size: 20px; + font-weight: bold; + color: @white; + -webkit-text-shadow: 0 1px 0 rgba(255,255,255,1); + text-shadow: 0 1px 0 rgba(255,255,255,1); + .opacity(0.8); + line-height: 1; + + &:hover, + &:focus { + color: @black; + text-decoration: none; + cursor: pointer; + .opacity(0.4); + } +} + +.rtl .toast-close-button { + left: -0.3em; + float: left; + right: 0.3em; +} + +/*Additional properties for button version + iOS requires the button element instead of an anchor tag. + If you want the anchor version, it requires `href="#"`.*/ +button.toast-close-button { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +//#endregion + +.toast-top-center { + top: 0; + right: 0; + width: 100%; +} + +.toast-bottom-center { + bottom: 0; + right: 0; + width: 100%; +} + +.toast-top-full-width { + top: 0; + right: 0; + width: 100%; +} + +.toast-bottom-full-width { + bottom: 0; + right: 0; + width: 100%; +} + +.toast-top-left { + top: 12px; + left: 12px; +} + +.toast-top-right { + top: 12px; + right: 12px; +} + +.toast-bottom-right { + right: 12px; + bottom: 12px; +} + +.toast-bottom-left { + bottom: 12px; + left: 12px; +} + +#toast-container { + position: fixed; + z-index: 999999; + // The container should not be clickable. + pointer-events: none; + * { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + } + + > div { + position: relative; + // The toast itself should be clickable. + pointer-events: auto; + overflow: hidden; + margin: 0 0 6px; + padding: 15px 15px 15px 50px; + width: 300px; + .borderRadius(3px 3px 3px 3px); + background-position: 15px center; + background-repeat: no-repeat; + .boxShadow(0 0 12px @grey); + color: @white; + .opacity(@default-container-opacity); + } + + > div.rtl { + direction: rtl; + padding: 15px 50px 15px 15px; + background-position: right 15px center; + } + + > div:hover { + .boxShadow(0 0 12px @black); + .opacity(1); + cursor: pointer; + } + + > .toast-info { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; + } + + > .toast-error { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; + } + + > .toast-success { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; + } + + > .toast-warning { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; + } + + /*overrides*/ + &.toast-top-center > div, + &.toast-bottom-center > div { + width: 300px; + margin-left: auto; + margin-right: auto; + } + + &.toast-top-full-width > div, + &.toast-bottom-full-width > div { + width: 96%; + margin-left: auto; + margin-right: auto; + } +} + +.toast { + background-color: @near-black; +} + +.toast-success { + background-color: @green; +} + +.toast-error { + background-color: @red; +} + +.toast-info { + background-color: @blue; +} + +.toast-warning { + background-color: @orange; +} + +.toast-progress { + position: absolute; + left: 0; + bottom: 0; + height: 4px; + background-color: @black; + .opacity(0.4); +} + +/*Responsive Design*/ + +@media all and (max-width: 240px) { + #toast-container { + + > div { + padding: 8px 8px 8px 50px; + width: 11em; + } + + > div.rtl { + padding: 8px 50px 8px 8px; + } + + & .toast-close-button { + right: -0.2em; + top: -0.2em; + } + + & .rtl .toast-close-button { + left: -0.2em; + right: 0.2em; + } + } +} + +@media all and (min-width: 241px) and (max-width: 480px) { + #toast-container { + > div { + padding: 8px 8px 8px 50px; + width: 18em; + } + + > div.rtl { + padding: 8px 50px 8px 8px; + } + + & .toast-close-button { + right: -0.2em; + top: -0.2em; + } + + & .rtl .toast-close-button { + left: -0.2em; + right: 0.2em; + } + } +} + +@media all and (min-width: 481px) and (max-width: 768px) { + #toast-container { + > div { + padding: 15px 15px 15px 50px; + width: 25em; + } + + > div.rtl { + padding: 15px 50px 15px 15px; + } + } +} diff --git a/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/toastr.scss b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/toastr.scss new file mode 100644 index 0000000000..b96d0cf724 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/toastr-master-998959b0/toastr.scss @@ -0,0 +1,201 @@ +.toast-title { + font-weight: bold; +} +.toast-message { + -ms-word-wrap: break-word; + word-wrap: break-word; +} +.toast-message a, +.toast-message label { + color: #ffffff; +} +.toast-message a:hover { + color: #cccccc; + text-decoration: none; +} +.toast-close-button { + position: relative; + right: -0.3em; + top: -0.3em; + float: right; + font-size: 20px; + font-weight: bold; + color: #ffffff; + -webkit-text-shadow: 0 1px 0 #ffffff; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); +} +.toast-close-button:hover, +.toast-close-button:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); + filter: alpha(opacity=40); +} +/*Additional properties for button version + iOS requires the button element instead of an anchor tag. + If you want the anchor version, it requires `href="#"`.*/ +button.toast-close-button { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.toast-top-center { + top: 0; + right: 0; + width: 100%; +} +.toast-bottom-center { + bottom: 0; + right: 0; + width: 100%; +} +.toast-top-full-width { + top: 0; + right: 0; + width: 100%; +} +.toast-bottom-full-width { + bottom: 0; + right: 0; + width: 100%; +} +.toast-top-left { + top: 12px; + left: 12px; +} +.toast-top-right { + top: 12px; + right: 12px; +} +.toast-bottom-right { + right: 12px; + bottom: 12px; +} +.toast-bottom-left { + bottom: 12px; + left: 12px; +} +#toast-container { + position: fixed; + z-index: 999999; + /*overrides*/ + +} +#toast-container * { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +#toast-container > div { + position: relative; + overflow: hidden; + margin: 0 0 6px; + padding: 15px 15px 15px 50px; + width: 300px; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + background-position: 15px center; + background-repeat: no-repeat; + -moz-box-shadow: 0 0 12px #999999; + -webkit-box-shadow: 0 0 12px #999999; + box-shadow: 0 0 12px #999999; + color: #ffffff; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); +} +#toast-container > div:hover { + -moz-box-shadow: 0 0 12px #000000; + -webkit-box-shadow: 0 0 12px #000000; + box-shadow: 0 0 12px #000000; + opacity: 1; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + filter: alpha(opacity=100); + cursor: pointer; +} +#toast-container > .toast-info { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; +} +#toast-container > .toast-error { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; +} +#toast-container > .toast-success { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; +} +#toast-container > .toast-warning { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; +} +#toast-container.toast-top-center > div, +#toast-container.toast-bottom-center > div { + width: 300px; + margin-left: auto; + margin-right: auto; +} +#toast-container.toast-top-full-width > div, +#toast-container.toast-bottom-full-width > div { + width: 96%; + margin-left: auto; + margin-right: auto; +} +.toast { + background-color: #030303; +} +.toast-success { + background-color: #51a351; +} +.toast-error { + background-color: #bd362f; +} +.toast-info { + background-color: #2f96b4; +} +.toast-warning { + background-color: #f89406; +} + +.toast-progress { + position: absolute; + left: 0; + bottom: 0; + height: 4px; + background-color: #000000; + opacity: 0.4; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); + filter: alpha(opacity=40); +} + +/*Responsive Design*/ +@media all and (max-width: 240px) { + #toast-container > div { + padding: 8px 8px 8px 50px; + width: 11em; + } + #toast-container .toast-close-button { + right: -0.2em; + top: -0.2em; + } +} +@media all and (min-width: 241px) and (max-width: 480px) { + #toast-container > div { + padding: 8px 8px 8px 50px; + width: 18em; + } + #toast-container .toast-close-button { + right: -0.2em; + top: -0.2em; + } +} +@media all and (min-width: 481px) and (max-width: 768px) { + #toast-container > div { + padding: 15px 15px 15px 50px; + width: 25em; + } +} diff --git a/mayan/apps/appearance/templates/appearance/base.html b/mayan/apps/appearance/templates/appearance/base.html index 34bd926549..2c20976365 100644 --- a/mayan/apps/appearance/templates/appearance/base.html +++ b/mayan/apps/appearance/templates/appearance/base.html @@ -29,9 +29,9 @@ + {% block stylesheets %}{% endblock %} - {% endcompress %} + - {% block javascript %}{% endblock %} {% endcompress %} + + + {% block javascript %}{% endblock %} {% endspaceless %} diff --git a/mayan/apps/appearance/templates/appearance/calculate_form_title.html b/mayan/apps/appearance/templates/appearance/calculate_form_title.html index da6f1c075a..ac3bf0dded 100644 --- a/mayan/apps/appearance/templates/appearance/calculate_form_title.html +++ b/mayan/apps/appearance/templates/appearance/calculate_form_title.html @@ -1,7 +1,11 @@ {% load i18n %} +{% load smart_settings_tags %} + +{% smart_setting 'APPEARANCE_MAXIMUM_TITLE_LENGTH' as maximum_title_length %} + {% if title %} - {{ title }} + {{ title|truncatechars:maximum_title_length }} {% else %} {% if read_only %} {% blocktrans %}Details for: {{ object }}{% endblocktrans %} diff --git a/mayan/apps/appearance/templates/appearance/generic_form_instance.html b/mayan/apps/appearance/templates/appearance/generic_form_instance.html index a65b594acd..ca3b586a82 100644 --- a/mayan/apps/appearance/templates/appearance/generic_form_instance.html +++ b/mayan/apps/appearance/templates/appearance/generic_form_instance.html @@ -22,7 +22,17 @@ {% for field in form.visible_fields %} {% if field.errors %}
      {% endif %} - {% render_field field class+="form-control" %} + {% if field|widget_type == 'radioselect' %} +
      + {% for option in field %} + + {% endfor %} +
      + {% else %} + {% render_field field class+="form-control" %} + {% endif %} {% if field.errors %}
      {% endif %} {% endfor %} @@ -38,7 +48,6 @@ {% if field|widget_type != 'checkboxinput' and not field.field.widget.attrs.hidden %} {% if not hide_labels %}{{ field.label_tag }}{% if field.field.required and not read_only %} ({% trans 'required' %}){% endif %}{% endif %} {% endif %} - {% if field|widget_type == 'checkboxinput' %}