diff --git a/update/.gitignore b/update/.gitignore new file mode 100644 index 00000000..a7e8642b --- /dev/null +++ b/update/.gitignore @@ -0,0 +1,40 @@ +config/* +vendor/* +userfiles/language/ +userfiles/css/ +userfiles/media/* +userfiles/export/* +userfiles/import/* +userfiles/cache/* +userfiles/templates/liteness +userfiles/templates/dream +userfiles/templates/bricksite +storage/cache/* +cache/.htaccess +cache/* +old_mw/ +phpinfo.php +.idea +.settings +.env +dwsync.xml +/userfiles/backup +/config/app.php +/config/database.php +/storage +/storage/.gitignore +/storage/.htaccess +/storage/app/.gitignore +/storage/framework/.gitignore +/storage/framework/cache/.gitignore +/storage/framework/sessions/.gitignore +/storage/framework/views/.gitignore +/storage/logs/.gitignore +/userfiles/img +/userfiles/install_log.txt +/userfiles/mw_content.json +/userfiles/install_item_log.txt +node_modules/ +/userfiles/mw_content.json +/.settings +/.project diff --git a/update/CHANGELOG.md b/update/CHANGELOG.md index 8872cfe4..bb95fbbb 100644 --- a/update/CHANGELOG.md +++ b/update/CHANGELOG.md @@ -2,6 +2,19 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). + +## [1.1.13] - 2019-10-25 +- Fixes on mw.dialog +- Fixes on Custom fields +- Fixes on Calendar module in Live Edit mode +- Fixes on Modal mw.tools.modal.get(...) is not a function when in mw.dialog +- Fixes on Testimonials module select image does not work +- Fixes on UI in RTL languages +- Fixes on Import from CSV +- Other fixes +- [see all changes....](https://github.com/microweber/microweber/compare/1.1.12...1.1.13 "") + + ## [1.1.12] - 2019-10-10 - Various live edit fixes - cannot save "edit as HTML" @@ -43,6 +56,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). - Other fixes - [see all changes....](https://github.com/microweber/microweber/compare/1.1.10...1.1.11 "") + ## [1.1.10] - 2019-08-02 - Various live edit fixes - Fixes on the new modal window @@ -88,7 +102,6 @@ This project adheres to [Semantic Versioning](http://semver.org/). - [see all changes....](https://github.com/microweber/microweber/compare/1.1.7...1.1.8 "") - ## [1.1.7] - 2019-06-21 - Icons for "Live Edit" sidebar - Visual editor bug fixes and impovememnts like padding editor, erc @@ -105,7 +118,6 @@ This project adheres to [Semantic Versioning](http://semver.org/). - [see all changes....](https://github.com/microweber/microweber/compare/1.1.6...1.1.7 "") - ## [1.1.6] - 2019-05-21 - Module presets fix - fix UI alignment of buttons @@ -123,7 +135,6 @@ This project adheres to [Semantic Versioning](http://semver.org/). - [see all changes....](https://github.com/microweber/microweber/compare/1.1.5...1.1.6 "") - ## [1.1.5] - 2019-05-02 - Sometimes the Dragging on Layouts doesn't work - Fix flicking of handles @@ -168,13 +179,13 @@ This project adheres to [Semantic Versioning](http://semver.org/). - [see all changes....](https://github.com/microweber/microweber/compare/1.1.2...1.1.3 "") - ## [1.1.2.1] - 2018-12-14 - Maintenance release - Some fixes on the live edit - Custom CSS editor now saves properly - Added compatibility with Gramarly and Naptha browser plugins + ## [1.1.2] - 2018-12-06 - Major update - Many overall system improvements diff --git a/update/composer.json b/update/composer.json new file mode 100644 index 00000000..0ff780bc --- /dev/null +++ b/update/composer.json @@ -0,0 +1,100 @@ +{ + "name": "microweber/microweber", + "type": "application", + "description": "New generation CMS with drag and drop", + "keywords": [ + "cms", + "drag and drop", + "shop", + "blog", + "framework", + "laravel" + ], + "repositories": [ + { + "type": "composer", + "url": "https://packages.microweberapi.com/" + }, { + "type": "composer", + "url": "https://private-packages.microweberapi.com/" + } + ], + "require": { + "composer/composer": "v1.8.5", + "composer/installers": "1.*", + "laravel/framework": "5.4.*", + "illuminate/contracts": "5.4.*", + "guzzlehttp/guzzle": "~6.0", + "laravel/socialite": "3.0.2", + "socialiteproviders/linkedin": "*", + "illuminate/support": "5.4.*", + "symfony/http-foundation": "3.4.*", + "vlucas/phpdotenv": "2.2", + "rcrowe/twigbridge": "^0.9.6", + "graham-campbell/markdown": "7.1.x-dev", + "keboola/csv": "1.1.*", + "league/omnipay": "2.*", + "omnipay/stripe": "~2.0", + "omnipay/paypal": "~2.0", + "omnipay/mollie": "3.*", + "ramsey/uuid": "3.0", + "paragonie/random_compat": "1.*", + "coduo/php-humanizer": "2.0.*", + "omnipay/common": "*", + "league/csv": "^7.2", + "giggsey/libphonenumber-for-php": "^7.6", + "laravelcollective/html": "5.4.*", + "ezyang/htmlpurifier": "^4.8", + "jeremeamia/superclosure": "2.*", + "arcanedev/seo-helper": "1.2", + "intervention/image": "^2.3", + "knplabs/knp-menu": "^2.2", + "jenssegers/agent": "~2.1", + "geoip2/geoip2": "~2.0", + "dompdf/dompdf": "0.8.2", + "nikic/php-parser": "3.1.5", + "doctrine/dbal": "2.5.3", + "microweber-templates/dream": "dev-master", + "microweber-templates/liteness": "dev-master", + "microweber-deps/recurr": "~3.1", + "microweber-deps/laravel-tagging": "~2.2", + "oyejorge/less.php": "1.*", + "aws/aws-sdk-php": "^3.0", + "mailerlite/mailerlite-api-v2-php-sdk": "*", + "finlet/flexmail": "*", + "phpoffice/phpspreadsheet": "*", + "nwidart/laravel-modules": "^1.27" + }, + "require-dev": { + "fzaninotto/faker": "^1.9" + }, + "autoload": { + "psr-4": { + "": "src/", + "App\\": "app/" + } + }, + "scripts": { + "post-create-project-cmd": [ + "php artisan key:generate" + ] + }, + "config": { + "preferred-install": "dist", + "platform": { + "php": "5.6.4" + }, + "github-protocols": [ + "https", + "http", + "git" + ] + }, + "minimum-stability": "dev", + "homepage": "http://microweber.com", + "license": "MIT", + "support": { + "email": "support@microweber.com", + "irc": "irc://irc.freenode.org/microweber" + } +} diff --git a/update/composer.lock b/update/composer.lock new file mode 100644 index 00000000..9721711f --- /dev/null +++ b/update/composer.lock @@ -0,0 +1,8145 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "e12159e4b7689db6b1e13a914017286f", + "packages": [ + { + "name": "arcanedev/seo-helper", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/ARCANEDEV/SEO-Helper.git", + "reference": "2fc2cced9061fdb817cbcae387da7098a5ba7a66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ARCANEDEV/SEO-Helper/zipball/2fc2cced9061fdb817cbcae387da7098a5ba7a66", + "reference": "2fc2cced9061fdb817cbcae387da7098a5ba7a66", + "shasum": "" + }, + "require": { + "arcanedev/support": "~3.0", + "php": ">=5.6" + }, + "require-dev": { + "phpunit/phpcov": "~2.0|~3.0", + "phpunit/phpunit": "~4.0|~5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Arcanedev\\SeoHelper\\": "src/" + }, + "files": [ + "helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "ARCANEDEV", + "email": "arcanedev.maroc@gmail.com", + "homepage": "https://github.com/arcanedev-maroc", + "role": "Developer" + } + ], + "description": "SEO Helper is a framework agnostic package that provides tools & helpers for SEO (Laravel supported).", + "homepage": "https://github.com/ARCANEDEV/SEO-Helper", + "keywords": [ + "Alexa", + "bing", + "description", + "google", + "helper", + "keywords", + "laravel", + "metas", + "og", + "opengraph", + "seo", + "tags", + "title", + "twitter", + "webmaster", + "yandex" + ], + "time": "2016-12-15T21:17:54+00:00" + }, + { + "name": "arcanedev/support", + "version": "3.21.4", + "source": { + "type": "git", + "url": "https://github.com/ARCANEDEV/Support.git", + "reference": "a4913355a537c71b22899ee9b932dbeb5ed229a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ARCANEDEV/Support/zipball/a4913355a537c71b22899ee9b932dbeb5ed229a9", + "reference": "a4913355a537c71b22899ee9b932dbeb5ed229a9", + "shasum": "" + }, + "require": { + "illuminate/filesystem": "~5.0", + "illuminate/support": "~5.0", + "php": ">=5.6.4" + }, + "require-dev": { + "phpunit/phpcov": "~3.0", + "phpunit/phpunit": "~5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Arcanedev\\Support\\": "src/" + }, + "files": [ + "constants.php", + "helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "ARCANEDEV", + "email": "arcanedev.maroc@gmail.com", + "homepage": "https://github.com/arcanedev-maroc" + } + ], + "description": "ARCANEDEV Support Helpers", + "homepage": "https://github.com/ARCANEDEV/Support", + "keywords": [ + "arcanedev", + "arcanesoft", + "laravel", + "support" + ], + "time": "2017-03-21T16:12:55+00:00" + }, + { + "name": "aws/aws-sdk-php", + "version": "3.108.3", + "source": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-php.git", + "reference": "5b2fda38f057bfab7ce74cc32d8c7d87b3e41437" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/5b2fda38f057bfab7ce74cc32d8c7d87b3e41437", + "reference": "5b2fda38f057bfab7ce74cc32d8c7d87b3e41437", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-pcre": "*", + "ext-simplexml": "*", + "guzzlehttp/guzzle": "^5.3.3|^6.2.1", + "guzzlehttp/promises": "~1.0", + "guzzlehttp/psr7": "^1.4.1", + "mtdowling/jmespath.php": "~2.2", + "php": ">=5.5" + }, + "require-dev": { + "andrewsville/php-token-reflection": "^1.4", + "aws/aws-php-sns-message-validator": "~1.0", + "behat/behat": "~3.0", + "doctrine/cache": "~1.4", + "ext-dom": "*", + "ext-openssl": "*", + "ext-pcntl": "*", + "ext-sockets": "*", + "nette/neon": "^2.3", + "phpunit/phpunit": "^4.8.35|^5.4.3", + "psr/cache": "^1.0", + "psr/simple-cache": "^1.0" + }, + "suggest": { + "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", + "doctrine/cache": "To use the DoctrineCacheAdapter", + "ext-curl": "To send requests using cURL", + "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", + "ext-sockets": "To use client-side monitoring" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Aws\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Amazon Web Services", + "homepage": "http://aws.amazon.com" + } + ], + "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", + "homepage": "http://aws.amazon.com/sdkforphp", + "keywords": [ + "amazon", + "aws", + "cloud", + "dynamodb", + "ec2", + "glacier", + "s3", + "sdk" + ], + "time": "2019-08-02T18:51:44+00:00" + }, + { + "name": "clue/stream-filter", + "version": "v1.4.1", + "source": { + "type": "git", + "url": "https://github.com/clue/php-stream-filter.git", + "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clue/php-stream-filter/zipball/5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71", + "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "^5.0 || ^4.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Clue\\StreamFilter\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@lueck.tv" + } + ], + "description": "A simple and modern approach to stream filtering in PHP", + "homepage": "https://github.com/clue/php-stream-filter", + "keywords": [ + "bucket brigade", + "callback", + "filter", + "php_user_filter", + "stream", + "stream_filter_append", + "stream_filter_register" + ], + "time": "2019-04-09T12:31:48+00:00" + }, + { + "name": "coduo/php-humanizer", + "version": "2.0.x-dev", + "source": { + "type": "git", + "url": "https://github.com/coduo/php-humanizer.git", + "reference": "11ccf452cd3e9ebd65d21d331dd9c83fa4d52cdf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/coduo/php-humanizer/zipball/11ccf452cd3e9ebd65d21d331dd9c83fa4d52cdf", + "reference": "11ccf452cd3e9ebd65d21d331dd9c83fa4d52cdf", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "symfony/config": "^2.3|^3.0", + "symfony/translation": "^2.3|^3.0", + "symfony/yaml": "^2.3|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2", + "phpunit/phpunit": "^4.5|^5.0", + "thunderer/shortcode": "~0.5" + }, + "suggest": { + "ext-intl": "Required if you are going to use humanizer with different locales than en_EN" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "": "src", + "Coduo\\PHPHumanizer\\Tests\\": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Norbert Orzechowicz", + "email": "norbert@orzechowicz.pl" + }, + { + "name": "Michał Dąbrowski", + "email": "dabrowski@brillante.pl" + } + ], + "keywords": [ + "humanize", + "humanizer", + "php" + ], + "time": "2019-02-25T09:53:32+00:00" + }, + { + "name": "composer/ca-bundle", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "f26a67e397be0e5c00d7c52ec7b5010098e15ce5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/f26a67e397be0e5c00d7c52ec7b5010098e15ce5", + "reference": "f26a67e397be0e5c00d7c52ec7b5010098e15ce5", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "time": "2019-08-02T09:05:43+00:00" + }, + { + "name": "composer/composer", + "version": "1.8.5", + "source": { + "type": "git", + "url": "https://github.com/composer/composer.git", + "reference": "949b116f9e7d98d8d276594fed74b580d125c0e6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/composer/zipball/949b116f9e7d98d8d276594fed74b580d125c0e6", + "reference": "949b116f9e7d98d8d276594fed74b580d125c0e6", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0", + "composer/semver": "^1.0", + "composer/spdx-licenses": "^1.2", + "composer/xdebug-handler": "^1.1", + "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0", + "seld/jsonlint": "^1.4", + "seld/phar-utils": "^1.0", + "symfony/console": "^2.7 || ^3.0 || ^4.0", + "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", + "symfony/finder": "^2.7 || ^3.0 || ^4.0", + "symfony/process": "^2.7 || ^3.0 || ^4.0" + }, + "conflict": { + "symfony/console": "2.8.38" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7", + "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" + }, + "suggest": { + "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", + "ext-zip": "Enabling the zip extension allows you to unzip archives", + "ext-zlib": "Allow gzip compression of HTTP requests" + }, + "bin": [ + "bin/composer" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\": "src/Composer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.", + "homepage": "https://getcomposer.org/", + "keywords": [ + "autoload", + "dependency", + "package" + ], + "time": "2019-04-09T15:46:48+00:00" + }, + { + "name": "composer/installers", + "version": "v1.6.0", + "source": { + "type": "git", + "url": "https://github.com/composer/installers.git", + "reference": "cfcca6b1b60bc4974324efb5783c13dca6932b5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/installers/zipball/cfcca6b1b60bc4974324efb5783c13dca6932b5b", + "reference": "cfcca6b1b60bc4974324efb5783c13dca6932b5b", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0" + }, + "replace": { + "roundcube/plugin-installer": "*", + "shama/baton": "*" + }, + "require-dev": { + "composer/composer": "1.0.*@dev", + "phpunit/phpunit": "^4.8.36" + }, + "type": "composer-plugin", + "extra": { + "class": "Composer\\Installers\\Plugin", + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Installers\\": "src/Composer/Installers" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kyle Robinson Young", + "email": "kyle@dontkry.com", + "homepage": "https://github.com/shama" + } + ], + "description": "A multi-framework Composer library installer", + "homepage": "https://composer.github.io/installers/", + "keywords": [ + "Craft", + "Dolibarr", + "Eliasis", + "Hurad", + "ImageCMS", + "Kanboard", + "Lan Management System", + "MODX Evo", + "Mautic", + "Maya", + "OXID", + "Plentymarkets", + "Porto", + "RadPHP", + "SMF", + "Thelia", + "WolfCMS", + "agl", + "aimeos", + "annotatecms", + "attogram", + "bitrix", + "cakephp", + "chef", + "cockpit", + "codeigniter", + "concrete5", + "croogo", + "dokuwiki", + "drupal", + "eZ Platform", + "elgg", + "expressionengine", + "fuelphp", + "grav", + "installer", + "itop", + "joomla", + "kohana", + "laravel", + "lavalite", + "lithium", + "magento", + "majima", + "mako", + "mediawiki", + "modulework", + "modx", + "moodle", + "osclass", + "phpbb", + "piwik", + "ppi", + "puppet", + "pxcms", + "reindex", + "roundcube", + "shopware", + "silverstripe", + "sydes", + "symfony", + "typo3", + "wordpress", + "yawik", + "zend", + "zikula" + ], + "time": "2018-08-27T06:10:37+00:00" + }, + { + "name": "composer/semver", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "37e4db276f38376a63ea67e96b09571d74312779" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/37e4db276f38376a63ea67e96b09571d74312779", + "reference": "37e4db276f38376a63ea67e96b09571d74312779", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.5 || ^5.0.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "time": "2019-04-14T09:35:30+00:00" + }, + { + "name": "composer/spdx-licenses", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/composer/spdx-licenses.git", + "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7ac1e6aec371357df067f8a688c3d6974df68fa5", + "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Spdx\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "SPDX licenses list and validation library.", + "keywords": [ + "license", + "spdx", + "validator" + ], + "time": "2019-07-29T10:31:59+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "1.3.3", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f", + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "time": "2019-05-27T17:52:04+00:00" + }, + { + "name": "doctrine/annotations", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "54cacc9b81758b14e3ce750f205a393d52339e97" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/54cacc9b81758b14e3ce750f205a393d52339e97", + "reference": "54cacc9b81758b14e3ce750f205a393d52339e97", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2017-02-24T16:22:25+00:00" + }, + { + "name": "doctrine/cache", + "version": "1.6.x-dev", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "eb152c5100571c7a45470ff2a35095ab3f3b900b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/eb152c5100571c7a45470ff2a35095ab3f3b900b", + "reference": "eb152c5100571c7a45470ff2a35095ab3f3b900b", + "shasum": "" + }, + "require": { + "php": "~5.5|~7.0" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "phpunit/phpunit": "~4.8|~5.0", + "predis/predis": "~1.0", + "satooshi/php-coveralls": "~0.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Caching library offering an object-oriented API for many cache backends", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ], + "time": "2017-07-22T12:49:21+00:00" + }, + { + "name": "doctrine/collections", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/1a4fb7e902202c33cce8c55989b945612943c2ba", + "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "doctrine/coding-standard": "~0.1@dev", + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Collections\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Collections Abstraction library", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "array", + "collections", + "iterator" + ], + "time": "2017-01-03T10:49:41+00:00" + }, + { + "name": "doctrine/common", + "version": "2.6.x-dev", + "source": { + "type": "git", + "url": "https://github.com/doctrine/common.git", + "reference": "7bce00698899aa2c06fe7365c76e4d78ddb15fa3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/common/zipball/7bce00698899aa2c06fe7365c76e4d78ddb15fa3", + "reference": "7bce00698899aa2c06fe7365c76e4d78ddb15fa3", + "shasum": "" + }, + "require": { + "doctrine/annotations": "1.*", + "doctrine/cache": "1.*", + "doctrine/collections": "1.*", + "doctrine/inflector": "1.*", + "doctrine/lexer": "1.*", + "php": "~5.5|~7.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8|~5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common Library for Doctrine projects", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "collections", + "eventmanager", + "persistence", + "spl" + ], + "time": "2016-11-30T16:50:46+00:00" + }, + { + "name": "doctrine/dbal", + "version": "v2.5.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "2fbcea96eae34a53183377cdbb0b9bec33974648" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/2fbcea96eae34a53183377cdbb0b9bec33974648", + "reference": "2fbcea96eae34a53183377cdbb0b9bec33974648", + "shasum": "" + }, + "require": { + "doctrine/common": ">=2.4,<2.7-dev", + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "4.*", + "symfony/console": "2.*" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\DBAL\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Database Abstraction Layer", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "dbal", + "persistence", + "queryobject" + ], + "time": "2015-12-25T16:28:24+00:00" + }, + { + "name": "doctrine/inflector", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", + "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "4.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Inflector\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common String Manipulations with regard to casing and singular/plural rules.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string" + ], + "time": "2015-11-06T14:35:42+00:00" + }, + { + "name": "doctrine/lexer", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "4ab6ea7c838ccb340883fd78915af079949cc64d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/4ab6ea7c838ccb340883fd78915af079949cc64d", + "reference": "4ab6ea7c838ccb340883fd78915af079949cc64d", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "^4.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "time": "2018-10-21T19:22:05+00:00" + }, + { + "name": "dompdf/dompdf", + "version": "v0.8.2", + "source": { + "type": "git", + "url": "https://github.com/dompdf/dompdf.git", + "reference": "5113accd9ae5d466077cce5208dcf3fb871bf8f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/5113accd9ae5d466077cce5208dcf3fb871bf8f6", + "reference": "5113accd9ae5d466077cce5208dcf3fb871bf8f6", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-gd": "*", + "ext-mbstring": "*", + "phenx/php-font-lib": "0.5.*", + "phenx/php-svg-lib": "0.3.*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "4.8.*", + "squizlabs/php_codesniffer": "2.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "0.7-dev" + } + }, + "autoload": { + "psr-4": { + "Dompdf\\": "src/" + }, + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + }, + { + "name": "Brian Sweeney", + "email": "eclecticgeek@gmail.com" + }, + { + "name": "Gabriel Bull", + "email": "me@gabrielbull.com" + } + ], + "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", + "homepage": "https://github.com/dompdf/dompdf", + "time": "2017-11-26T14:49:08+00:00" + }, + { + "name": "erusev/parsedown", + "version": "1.8.0-beta-7", + "source": { + "type": "git", + "url": "https://github.com/erusev/parsedown.git", + "reference": "fe7a50eceb4a3c867cc9fa9c0aa906b1067d1955" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/fe7a50eceb4a3c867cc9fa9c0aa906b1067d1955", + "reference": "fe7a50eceb4a3c867cc9fa9c0aa906b1067d1955", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35" + }, + "type": "library", + "autoload": { + "psr-0": { + "Parsedown": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", + "keywords": [ + "markdown", + "parser" + ], + "time": "2019-03-17T18:47:21+00:00" + }, + { + "name": "ezyang/htmlpurifier", + "version": "v4.11.0", + "source": { + "type": "git", + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "83ab08bc1af7d808a9e0fbf024f1c24bfd73c0a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/83ab08bc1af7d808a9e0fbf024f1c24bfd73c0a7", + "reference": "83ab08bc1af7d808a9e0fbf024f1c24bfd73c0a7", + "shasum": "" + }, + "require": { + "php": ">=5.2" + }, + "require-dev": { + "simpletest/simpletest": "dev-master#72de02a7b80c6bb8864ef9bf66d41d2f58f826bd" + }, + "type": "library", + "autoload": { + "psr-0": { + "HTMLPurifier": "library/" + }, + "files": [ + "library/HTMLPurifier.composer.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Edward Z. Yang", + "email": "admin@htmlpurifier.org", + "homepage": "http://ezyang.com" + } + ], + "description": "Standards compliant HTML filter written in PHP", + "homepage": "http://htmlpurifier.org/", + "keywords": [ + "html" + ], + "time": "2019-07-14T18:58:38+00:00" + }, + { + "name": "finlet/flexmail", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/Finlet/flexmail.git", + "reference": "458b08560a704e14e24165892caff3bf14993b00" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Finlet/flexmail/zipball/458b08560a704e14e24165892caff3bf14993b00", + "reference": "458b08560a704e14e24165892caff3bf14993b00", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Finlet\\flexmail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Rico van de Vin", + "email": "rico@finlet.eu" + } + ], + "description": "Flexmail API PHP Wrapper.", + "time": "2016-01-11T10:04:22+00:00" + }, + { + "name": "geoip2/geoip2", + "version": "v2.9.0", + "source": { + "type": "git", + "url": "https://github.com/maxmind/GeoIP2-php.git", + "reference": "a807fbf65212eef5d8d2db1a1b31082b53633d77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/a807fbf65212eef5d8d2db1a1b31082b53633d77", + "reference": "a807fbf65212eef5d8d2db1a1b31082b53633d77", + "shasum": "" + }, + "require": { + "maxmind-db/reader": "~1.0", + "maxmind/web-service-common": "~0.5", + "php": ">=5.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "2.*", + "phpunit/phpunit": "4.*", + "squizlabs/php_codesniffer": "3.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "GeoIp2\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Gregory J. Oschwald", + "email": "goschwald@maxmind.com", + "homepage": "http://www.maxmind.com/" + } + ], + "description": "MaxMind GeoIP2 PHP API", + "homepage": "https://github.com/maxmind/GeoIP2-php", + "keywords": [ + "IP", + "geoip", + "geoip2", + "geolocation", + "maxmind" + ], + "time": "2018-04-10T15:32:59+00:00" + }, + { + "name": "giggsey/libphonenumber-for-php", + "version": "7.7.5", + "source": { + "type": "git", + "url": "https://github.com/giggsey/libphonenumber-for-php.git", + "reference": "7137cef7f295d225aec2a290f6829c1c71a1ffb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/7137cef7f295d225aec2a290f6829c1c71a1ffb0", + "reference": "7137cef7f295d225aec2a290f6829c1c71a1ffb0", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "giggsey/locale": "^1.0", + "php": ">=5.3.2" + }, + "require-dev": { + "pear/pear-core-minimal": "^1.9", + "pear/pear_exception": "^1.0", + "pear/versioncontrol_git": "dev-master", + "phing/phing": "^2.7", + "phpunit/phpunit": "^4.8|^5.0", + "satooshi/php-coveralls": "^1.0", + "symfony/console": "^2.8|^3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-0": { + "libphonenumber": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Joshua Gigg", + "email": "giggsey@gmail.com", + "homepage": "http://giggsey.com/" + } + ], + "description": "PHP Port of Google's libphonenumber", + "homepage": "https://github.com/giggsey/libphonenumber-for-php", + "keywords": [ + "geocoding", + "geolocation", + "libphonenumber", + "mobile", + "phonenumber", + "validation" + ], + "time": "2016-11-23T15:39:02+00:00" + }, + { + "name": "giggsey/locale", + "version": "1.7.1", + "source": { + "type": "git", + "url": "https://github.com/giggsey/Locale.git", + "reference": "b8030fc8df13cdfbecba318588de2d52b49c9b50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/giggsey/Locale/zipball/b8030fc8df13cdfbecba318588de2d52b49c9b50", + "reference": "b8030fc8df13cdfbecba318588de2d52b49c9b50", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "pear/pear-core-minimal": "^1.9", + "pear/pear_exception": "^1.0", + "pear/versioncontrol_git": "^0.5", + "phing/phing": "~2.7", + "phpunit/phpunit": "^4.8|^5.0", + "satooshi/php-coveralls": "^1.0", + "symfony/console": "^2.8|^3.0|^4.0", + "symfony/filesystem": "^2.8|^3.0|^4.0", + "symfony/finder": "^2.8|^3.0|^4.0", + "symfony/process": "^2.8|^3.0|^4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Giggsey\\Locale\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joshua Gigg", + "email": "giggsey@gmail.com", + "homepage": "http://giggsey.com/" + } + ], + "description": "Locale functions required by libphonenumber-for-php", + "time": "2019-04-26T07:28:50+00:00" + }, + { + "name": "graham-campbell/markdown", + "version": "7.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Laravel-Markdown.git", + "reference": "507783993b40f4b118f201e8a8bec9e908b3ab1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Laravel-Markdown/zipball/507783993b40f4b118f201e8a8bec9e908b3ab1d", + "reference": "507783993b40f4b118f201e8a8bec9e908b3ab1d", + "shasum": "" + }, + "require": { + "illuminate/contracts": "5.1.*|5.2.*|5.3.*|5.4.*", + "illuminate/support": "5.1.*|5.2.*|5.3.*|5.4.*", + "illuminate/view": "5.1.*|5.2.*|5.3.*|5.4.*", + "league/commonmark": "^0.15", + "php": ">=5.5.9" + }, + "require-dev": { + "graham-campbell/testbench": "^3.1", + "league/commonmark-extras": "^0.1.2", + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.8|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.1-dev" + } + }, + "autoload": { + "psr-4": { + "GrahamCampbell\\Markdown\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + } + ], + "description": "Markdown Is A CommonMark Wrapper For Laravel 5", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Laravel Markdown", + "Laravel-Markdown", + "common mark", + "commonmark", + "framework", + "laravel", + "markdown" + ], + "time": "2017-01-01T13:30:44+00:00" + }, + { + "name": "guzzle/guzzle", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle3.git", + "reference": "f7778ed85e3db90009d79725afd6c3a82dab32fe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/f7778ed85e3db90009d79725afd6c3a82dab32fe", + "reference": "f7778ed85e3db90009d79725afd6c3a82dab32fe", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=5.3.3", + "symfony/event-dispatcher": "~2.1" + }, + "replace": { + "guzzle/batch": "self.version", + "guzzle/cache": "self.version", + "guzzle/common": "self.version", + "guzzle/http": "self.version", + "guzzle/inflection": "self.version", + "guzzle/iterator": "self.version", + "guzzle/log": "self.version", + "guzzle/parser": "self.version", + "guzzle/plugin": "self.version", + "guzzle/plugin-async": "self.version", + "guzzle/plugin-backoff": "self.version", + "guzzle/plugin-cache": "self.version", + "guzzle/plugin-cookie": "self.version", + "guzzle/plugin-curlauth": "self.version", + "guzzle/plugin-error-response": "self.version", + "guzzle/plugin-history": "self.version", + "guzzle/plugin-log": "self.version", + "guzzle/plugin-md5": "self.version", + "guzzle/plugin-mock": "self.version", + "guzzle/plugin-oauth": "self.version", + "guzzle/service": "self.version", + "guzzle/stream": "self.version" + }, + "require-dev": { + "doctrine/cache": "~1.3", + "monolog/monolog": "~1.0", + "phpunit/phpunit": "3.7.*", + "psr/log": "~1.0", + "symfony/class-loader": "~2.1", + "zendframework/zend-cache": "2.*,<2.3", + "zendframework/zend-log": "2.*,<2.3" + }, + "suggest": { + "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.9-dev" + } + }, + "autoload": { + "psr-0": { + "Guzzle": "src/", + "Guzzle\\Tests": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Guzzle Community", + "homepage": "https://github.com/guzzle/guzzle/contributors" + } + ], + "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "abandoned": "guzzlehttp/guzzle", + "time": "2016-10-26T18:22:07+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "ca2892a8c2778c1821899fd2c79932e3b895f2ad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ca2892a8c2778c1821899fd2c79932e3b895f2ad", + "reference": "ca2892a8c2778c1821899fd2c79932e3b895f2ad", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.4", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.1" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.3-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2019-05-12T12:35:22+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "17d36ed176c998839582c739ce0753381598edf0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/17d36ed176c998839582c739ce0753381598edf0", + "reference": "17d36ed176c998839582c739ce0753381598edf0", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.27 || ^7.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2019-07-02T14:54:06+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "239400de7a173fe9901b9ac7c06497751f00727a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", + "reference": "239400de7a173fe9901b9ac7c06497751f00727a", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" + }, + "suggest": { + "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2019-07-01T23:21:34+00:00" + }, + { + "name": "intervention/image", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/Intervention/image.git", + "reference": "39eaef720d082ecc54c64bf54541c55f10db546d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Intervention/image/zipball/39eaef720d082ecc54c64bf54541c55f10db546d", + "reference": "39eaef720d082ecc54c64bf54541c55f10db546d", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "guzzlehttp/psr7": "~1.1", + "php": ">=5.4.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.2", + "phpunit/phpunit": "^4.8 || ^5.7" + }, + "suggest": { + "ext-gd": "to use GD library based image processing.", + "ext-imagick": "to use Imagick based image processing.", + "intervention/imagecache": "Caching extension for the Intervention Image library" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + }, + "laravel": { + "providers": [ + "Intervention\\Image\\ImageServiceProvider" + ], + "aliases": { + "Image": "Intervention\\Image\\Facades\\Image" + } + } + }, + "autoload": { + "psr-4": { + "Intervention\\Image\\": "src/Intervention/Image" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Vogel", + "email": "oliver@olivervogel.com", + "homepage": "http://olivervogel.com/" + } + ], + "description": "Image handling and manipulation library with support for Laravel integration", + "homepage": "http://image.intervention.io/", + "keywords": [ + "gd", + "image", + "imagick", + "laravel", + "thumbnail", + "watermark" + ], + "time": "2019-06-24T14:06:31+00:00" + }, + { + "name": "jaybizzle/crawler-detect", + "version": "v1.2.84", + "source": { + "type": "git", + "url": "https://github.com/JayBizzle/Crawler-Detect.git", + "reference": "b7f35477a56609dd0d753c07ada912b66af3df01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/b7f35477a56609dd0d753c07ada912b66af3df01", + "reference": "b7f35477a56609dd0d753c07ada912b66af3df01", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8|^5.5|^6.5", + "satooshi/php-coveralls": "1.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "Jaybizzle\\CrawlerDetect\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Beech", + "email": "m@rkbee.ch", + "role": "Developer" + } + ], + "description": "CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent", + "homepage": "https://github.com/JayBizzle/Crawler-Detect/", + "keywords": [ + "crawler", + "crawler detect", + "crawler detector", + "crawlerdetect", + "php crawler detect" + ], + "time": "2019-06-14T21:10:21+00:00" + }, + { + "name": "jenssegers/agent", + "version": "v2.6.3", + "source": { + "type": "git", + "url": "https://github.com/jenssegers/agent.git", + "reference": "bcb895395e460478e101f41cdab139c48dc721ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jenssegers/agent/zipball/bcb895395e460478e101f41cdab139c48dc721ce", + "reference": "bcb895395e460478e101f41cdab139c48dc721ce", + "shasum": "" + }, + "require": { + "jaybizzle/crawler-detect": "^1.2", + "mobiledetect/mobiledetectlib": "^2.7.6", + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5.0|^6.0|^7.0" + }, + "suggest": { + "illuminate/support": "^4.0|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + }, + "laravel": { + "providers": [ + "Jenssegers\\Agent\\AgentServiceProvider" + ], + "aliases": { + "Agent": "Jenssegers\\Agent\\Facades\\Agent" + } + } + }, + "autoload": { + "psr-4": { + "Jenssegers\\Agent\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jens Segers", + "homepage": "https://jenssegers.com" + } + ], + "description": "Desktop/mobile user agent parser with support for Laravel, based on Mobiledetect", + "homepage": "https://github.com/jenssegers/agent", + "keywords": [ + "Agent", + "browser", + "desktop", + "laravel", + "mobile", + "platform", + "user agent", + "useragent" + ], + "time": "2019-01-19T21:32:55+00:00" + }, + { + "name": "jeremeamia/SuperClosure", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/jeremeamia/super_closure.git", + "reference": "5707d5821b30b9a07acfb4d76949784aaa0e9ce9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jeremeamia/super_closure/zipball/5707d5821b30b9a07acfb4d76949784aaa0e9ce9", + "reference": "5707d5821b30b9a07acfb4d76949784aaa0e9ce9", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^1.2|^2.0|^3.0|^4.0", + "php": ">=5.4", + "symfony/polyfill-php56": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "autoload": { + "psr-4": { + "SuperClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia", + "role": "Developer" + } + ], + "description": "Serialize Closure objects, including their context and binding", + "homepage": "https://github.com/jeremeamia/super_closure", + "keywords": [ + "closure", + "function", + "lambda", + "parser", + "serializable", + "serialize", + "tokenizer" + ], + "time": "2018-03-21T22:21:57+00:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "dcb6e1006bb5fd1e392b4daa68932880f37550d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/dcb6e1006bb5fd1e392b4daa68932880f37550d4", + "reference": "dcb6e1006bb5fd1e392b4daa68932880f37550d4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2.2.20", + "json-schema/json-schema-test-suite": "1.2.0", + "phpunit/phpunit": "^4.8.35" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "time": "2019-01-14T23:55:14+00:00" + }, + { + "name": "keboola/csv", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/keboola/php-csv.git", + "reference": "d7e257096c42eab09b54b7b46a905ca953a8eb6f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/keboola/php-csv/zipball/d7e257096c42eab09b54b7b46a905ca953a8eb6f", + "reference": "d7e257096c42eab09b54b7b46a905ca953a8eb6f", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "~3.7" + }, + "type": "library", + "autoload": { + "psr-0": { + "Keboola\\Csv": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Keboola CSV reader and writer", + "homepage": "http://keboola.com", + "time": "2016-04-21T20:46:22+00:00" + }, + { + "name": "knplabs/knp-menu", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/KnpLabs/KnpMenu.git", + "reference": "168b66298d87c28521dddc5276efeef08ab654cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/KnpLabs/KnpMenu/zipball/168b66298d87c28521dddc5276efeef08ab654cd", + "reference": "168b66298d87c28521dddc5276efeef08ab654cd", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "conflict": { + "twig/twig": "<1.40|>=2,<2.9" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/http-foundation": "~2.4|~3.0|^4.0", + "symfony/phpunit-bridge": "~3.3|^4.0", + "symfony/routing": "~2.3|~3.0|^4.0", + "twig/twig": "^1.40|^2.9" + }, + "suggest": { + "twig/twig": "for the TwigRenderer and the integration with your templates" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "autoload": { + "psr-4": { + "Knp\\Menu\\": "src/Knp/Menu" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KnpLabs", + "homepage": "https://knplabs.com" + }, + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + }, + { + "name": "Symfony Community", + "homepage": "https://github.com/KnpLabs/KnpMenu/contributors" + } + ], + "description": "An object oriented menu library", + "homepage": "https://knplabs.com", + "keywords": [ + "menu", + "tree" + ], + "time": "2019-07-30T14:52:35+00:00" + }, + { + "name": "kylekatarnls/update-helper", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/kylekatarnls/update-helper.git", + "reference": "5786fa188e0361b9adf9e8199d7280d1b2db165e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kylekatarnls/update-helper/zipball/5786fa188e0361b9adf9e8199d7280d1b2db165e", + "reference": "5786fa188e0361b9adf9e8199d7280d1b2db165e", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1.0 || ^2.0.0", + "php": ">=5.3.0" + }, + "require-dev": { + "codeclimate/php-test-reporter": "dev-master", + "composer/composer": "2.0.x-dev || ^2.0.0-dev", + "phpunit/phpunit": ">=4.8.35 <6.0" + }, + "type": "composer-plugin", + "extra": { + "class": "UpdateHelper\\ComposerPlugin" + }, + "autoload": { + "psr-0": { + "UpdateHelper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kyle", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Update helper", + "time": "2019-07-29T11:03:54+00:00" + }, + { + "name": "laravel/framework", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "5042846eb0bdd0ade2e760015b1e5c57013225d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/5042846eb0bdd0ade2e760015b1e5c57013225d5", + "reference": "5042846eb0bdd0ade2e760015b1e5c57013225d5", + "shasum": "" + }, + "require": { + "doctrine/inflector": "~1.1", + "erusev/parsedown": "~1.6", + "ext-mbstring": "*", + "ext-openssl": "*", + "league/flysystem": "~1.0", + "monolog/monolog": "~1.11", + "mtdowling/cron-expression": "~1.0", + "nesbot/carbon": "~1.20", + "paragonie/random_compat": "~1.4|~2.0", + "php": ">=5.6.4", + "ramsey/uuid": "~3.0", + "swiftmailer/swiftmailer": "~5.4", + "symfony/console": "~3.2", + "symfony/debug": "~3.2", + "symfony/finder": "~3.2", + "symfony/http-foundation": "~3.2", + "symfony/http-kernel": "~3.2", + "symfony/process": "~3.2", + "symfony/routing": "~3.2", + "symfony/var-dumper": "~3.2", + "tijsverkoyen/css-to-inline-styles": "~2.2", + "vlucas/phpdotenv": "~2.2" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/exception": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version", + "tightenco/collect": "self.version" + }, + "require-dev": { + "aws/aws-sdk-php": "~3.0", + "doctrine/dbal": "~2.5", + "mockery/mockery": "~0.9.4", + "pda/pheanstalk": "~3.0", + "phpunit/phpunit": "~5.7", + "predis/predis": "~1.0", + "symfony/css-selector": "~3.2", + "symfony/dom-crawler": "~3.2" + }, + "suggest": { + "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.5).", + "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", + "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).", + "laravel/tinker": "Required to use the tinker console command (~1.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", + "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", + "nexmo/client": "Required to use the Nexmo transport (~1.0).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", + "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).", + "symfony/css-selector": "Required to use some of the crawler integration testing tools (~3.2).", + "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~3.2).", + "symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "time": "2018-12-21T20:42:21+00:00" + }, + { + "name": "laravel/socialite", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/socialite.git", + "reference": "d3aaffa5e122395e54eb2c26062fde3a848c40fd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/socialite/zipball/d3aaffa5e122395e54eb2c26062fde3a848c40fd", + "reference": "d3aaffa5e122395e54eb2c26062fde3a848c40fd", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "~6.0", + "illuminate/contracts": "~5.4", + "illuminate/http": "~5.4", + "illuminate/support": "~5.4", + "league/oauth1-client": "~1.0", + "php": ">=5.4.0" + }, + "require-dev": { + "mockery/mockery": "~0.9", + "phpunit/phpunit": "~4.0|~5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Socialite\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "description": "Laravel wrapper around OAuth 1 & OAuth 2 libraries.", + "keywords": [ + "laravel", + "oauth" + ], + "time": "2017-01-25T17:58:13+00:00" + }, + { + "name": "laravelcollective/html", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/LaravelCollective/html.git", + "reference": "efc821ad9c3719c71b4cbb9aa263b252b6a28f36" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/LaravelCollective/html/zipball/efc821ad9c3719c71b4cbb9aa263b252b6a28f36", + "reference": "efc821ad9c3719c71b4cbb9aa263b252b6a28f36", + "shasum": "" + }, + "require": { + "illuminate/http": "5.4.*", + "illuminate/routing": "5.4.*", + "illuminate/session": "5.4.*", + "illuminate/support": "5.4.*", + "illuminate/view": "5.4.*", + "php": ">=5.6.4" + }, + "require-dev": { + "illuminate/database": "5.4.*", + "mockery/mockery": "~0.9.4", + "phpunit/phpunit": "~5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Collective\\Html\\": "src/" + }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + }, + { + "name": "Adam Engebretson", + "email": "adam@laravelcollective.com" + } + ], + "description": "HTML and Form Builders for the Laravel Framework", + "homepage": "http://laravelcollective.com", + "time": "2018-02-04T21:53:06+00:00" + }, + { + "name": "league/commonmark", + "version": "0.15.7", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "36d82f166e441dfa28643f8d01dd8bdd3a579adf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/36d82f166e441dfa28643f8d01dd8bdd3a579adf", + "reference": "36d82f166e441dfa28643f8d01dd8bdd3a579adf", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.4.8" + }, + "replace": { + "colinodell/commonmark-php": "*" + }, + "require-dev": { + "cebe/markdown": "~1.0", + "erusev/parsedown": "~1.0", + "jgm/commonmark": "0.28", + "michelf/php-markdown": "~1.4", + "mikehaertl/php-shellcommand": "~1.2.0", + "phpunit/phpunit": "~4.3|~5.0", + "scrutinizer/ocular": "~1.1", + "symfony/finder": "~2.3|~3.0" + }, + "suggest": { + "league/commonmark-extras": "Library of useful extensions including smart punctuation" + }, + "bin": [ + "bin/commonmark" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.16-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Markdown parser for PHP based on the CommonMark spec", + "homepage": "https://github.com/thephpleague/commonmark", + "keywords": [ + "commonmark", + "markdown", + "parser" + ], + "time": "2017-10-26T15:41:07+00:00" + }, + { + "name": "league/csv", + "version": "7.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/csv.git", + "reference": "69bafa6ff924fbf9effe4275d6eb16be81a853ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/69bafa6ff924fbf9effe4275d6eb16be81a853ef", + "reference": "69bafa6ff924fbf9effe4275d6eb16be81a853ef", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "fabpot/php-cs-fixer": "^1.9", + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Csv\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://github.com/nyamsprod/", + "role": "Developer" + } + ], + "description": "Csv data manipulation made easy in PHP", + "homepage": "http://csv.thephpleague.com", + "keywords": [ + "csv", + "export", + "filter", + "import", + "read", + "write" + ], + "time": "2015-11-02T07:36:25+00:00" + }, + { + "name": "league/flysystem", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "c8834a9fea0d5ba34003d9ef69e1fa9f6eaedd7d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/c8834a9fea0d5ba34003d9ef69e1fa9f6eaedd7d", + "reference": "c8834a9fea0d5ba34003d9ef69e1fa9f6eaedd7d", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": ">=5.5.9" + }, + "conflict": { + "league/flysystem-sftp": "<1.0.6" + }, + "require-dev": { + "phpspec/phpspec": "^3.4", + "phpunit/phpunit": "^5.7.10" + }, + "suggest": { + "ext-fileinfo": "Required for MimeType", + "ext-ftp": "Allows you to use FTP server storage", + "ext-openssl": "Allows you to use FTPS server storage", + "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", + "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", + "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", + "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", + "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", + "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", + "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", + "league/flysystem-webdav": "Allows you to use WebDAV storage", + "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", + "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", + "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Filesystem abstraction: Many filesystems, one API.", + "keywords": [ + "Cloud Files", + "WebDAV", + "abstraction", + "aws", + "cloud", + "copy.com", + "dropbox", + "file systems", + "files", + "filesystem", + "filesystems", + "ftp", + "rackspace", + "remote", + "s3", + "sftp", + "storage" + ], + "time": "2019-07-29T07:48:12+00:00" + }, + { + "name": "league/oauth1-client", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/oauth1-client.git", + "reference": "fca5f160650cb74d23fc11aa570dd61f86dcf647" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/fca5f160650cb74d23fc11aa570dd61f86dcf647", + "reference": "fca5f160650cb74d23fc11aa570dd61f86dcf647", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^6.0", + "php": ">=5.5.0" + }, + "require-dev": { + "mockery/mockery": "^0.9", + "phpunit/phpunit": "^4.0", + "squizlabs/php_codesniffer": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "League\\OAuth1\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Corlett", + "email": "bencorlett@me.com", + "homepage": "http://www.webcomm.com.au", + "role": "Developer" + } + ], + "description": "OAuth 1.0 Client Library", + "keywords": [ + "Authentication", + "SSO", + "authorization", + "bitbucket", + "identity", + "idp", + "oauth", + "oauth1", + "single sign on", + "trello", + "tumblr", + "twitter" + ], + "time": "2016-08-17T00:36:58+00:00" + }, + { + "name": "league/omnipay", + "version": "2.3.x-dev", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay.git", + "reference": "cc04bd22b4149c94c52b002181d4993e4f8fe812" + }, + "require": { + "omnipay/2checkout": "~2.0", + "omnipay/authorizenet": "~2.0", + "omnipay/buckaroo": "~2.0", + "omnipay/cardsave": "~2.0", + "omnipay/coinbase": "~2.0", + "omnipay/common": "~2.3", + "omnipay/dummy": "~2.0", + "omnipay/eway": "~2.0", + "omnipay/firstdata": "~2.0", + "omnipay/gocardless": "~2.0", + "omnipay/manual": "~2.0", + "omnipay/migs": "~2.0", + "omnipay/mollie": "~3.0", + "omnipay/multisafepay": "~2.0", + "omnipay/netaxept": "~2.0", + "omnipay/netbanx": "~2.0", + "omnipay/payfast": "~2.0", + "omnipay/payflow": "~2.0", + "omnipay/paymentexpress": "~2.0", + "omnipay/paypal": "~2.0", + "omnipay/pin": "~2.0", + "omnipay/sagepay": "~2.0", + "omnipay/securepay": "~2.0", + "omnipay/stripe": "~2.0", + "omnipay/targetpay": "~2.0", + "omnipay/worldpay": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "suggest": { + "academe/omnipay-helcim": "Helcim", + "agmscode/omnipay-agms": "Agms", + "alfaproject/omnipay-neteller": "Neteller", + "alfaproject/omnipay-skrill": "Skrill", + "andreas22/omnipay-fasapay": "Fasapay", + "andylibrian/omnipay-veritrans": "Veritrans", + "cardgate/omnipay-cardgate": "CardGate", + "coatesap/omnipay-datacash": "DataCash", + "coatesap/omnipay-paymentsense": "PaymentSense", + "coatesap/omnipay-realex": "Realex", + "dabsquared/omnipay-cybersource-soap": "Cybersource SOAP", + "delatbabel/omnipay-fatzebra": "Fat Zebra", + "dercoder/omnipay-ecopayz": "ecoPayz", + "dercoder/omnipay-globalcloudpay": "Globalcloudpay", + "descubraomundo/omnipay-pagarme": "Pagar.me", + "dioscouri/omnipay-cybersource": "Cybersource", + "fotografde/omnipay-checkoutcom": "Checkout.com", + "fruitcakestudio/omnipay-sisow": "Sisow", + "igaponov/omnipay-wirecard": "Wirecard", + "justinbusschau/omnipay-secpay": "SecPay", + "lokielse/omnipay-alipay": "Alipay", + "lokielse/omnipay-global-alipay": "Global Alipay", + "lokielse/omnipay-unionpay": "UnionPay", + "lokielse/omnipay-wechatpay": "WechatPay", + "mfauveau/omnipay-nmi": "Network Merchants Inc. (NMI)", + "mfauveau/omnipay-pacnet": "Pacnet", + "omnipay/payu": "PayU", + "paypronl/omnipay-paypro": "PayPro", + "samvaughton/omnipay-barclays-epdq": "Barclays ePDQ", + "teaandcode/omnipay-worldpay-xml": "WorldPay XML Direct" + }, + "type": "metapackage", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Kayla Daniels", + "email": "kayladnls@gmail.com" + }, + { + "name": "Omnipay Community", + "homepage": "https://github.com/thephpleague/omnipay/graphs/contributors" + } + ], + "description": "Includes Omnipay payment processing library and all officially supported gateways", + "homepage": "https://github.com/thephpleague/omnipay", + "keywords": [ + "2checkout", + "2co", + "auth.net", + "authorize", + "authorize.net", + "buckaroo", + "cardsave", + "checkoutcom", + "coinbase", + "commweb", + "cybersource", + "dps", + "egate", + "eway", + "express", + "first data", + "firstdata", + "gateway", + "gocardless", + "ideal", + "merchant", + "migs", + "mollie", + "multisafepay", + "netaxept", + "netbanx", + "pagarme", + "pay", + "payfast", + "payflow", + "payment", + "paymentexpress", + "payone", + "paypal", + "payu", + "pin", + "purchase", + "rapid", + "sagepay", + "securepay", + "stripe", + "tala", + "tala-payments", + "targetpay", + "twocheckout", + "worldpay" + ], + "time": "2017-03-21T09:24:49+00:00" + }, + { + "name": "mailerlite/mailerlite-api-v2-php-sdk", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/mailerlite/mailerlite-api-v2-php-sdk.git", + "reference": "2f4b874d245473bd964183e52a91a906d591c8c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mailerlite/mailerlite-api-v2-php-sdk/zipball/2f4b874d245473bd964183e52a91a906d591c8c6", + "reference": "2f4b874d245473bd964183e52a91a906d591c8c6", + "shasum": "" + }, + "require": { + "guzzlehttp/psr7": "~1.2", + "php": "^5.5|^7.0", + "php-http/curl-client": "^1.4", + "php-http/httplug": "^1.0", + "php-http/message": "^1.2" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "php-http/guzzle6-adapter": "^1.0", + "phpunit/phpunit": "5.3.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "MailerLiteApi\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justinas Pošiūnas", + "role": "Developer", + "email": "justinas.posiunas@mailerlite.com", + "homepage": "https://mailerlite.com" + } + ], + "description": "MailerLite API v2 PHP SDK", + "homepage": "https://github.com/mailerlite/mailerlite-api-v2-php-sdk", + "keywords": [ + "email", + "mailerlite", + "marketing", + "sdk" + ], + "time": "2019-07-11T10:12:28+00:00" + }, + { + "name": "markbaker/complex", + "version": "1.4.7", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPComplex.git", + "reference": "1ea674a8308baf547cbcbd30c5fcd6d301b7c000" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/1ea674a8308baf547cbcbd30c5fcd6d301b7c000", + "reference": "1ea674a8308baf547cbcbd30c5fcd6d301b7c000", + "shasum": "" + }, + "require": { + "php": "^5.6.0|^7.0.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3", + "phpcompatibility/php-compatibility": "^8.0", + "phpdocumentor/phpdocumentor": "2.*", + "phploc/phploc": "2.*", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^4.8.35|^5.4.0", + "sebastian/phpcpd": "2.*", + "squizlabs/php_codesniffer": "^3.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Complex\\": "classes/src/" + }, + "files": [ + "classes/src/functions/abs.php", + "classes/src/functions/acos.php", + "classes/src/functions/acosh.php", + "classes/src/functions/acot.php", + "classes/src/functions/acoth.php", + "classes/src/functions/acsc.php", + "classes/src/functions/acsch.php", + "classes/src/functions/argument.php", + "classes/src/functions/asec.php", + "classes/src/functions/asech.php", + "classes/src/functions/asin.php", + "classes/src/functions/asinh.php", + "classes/src/functions/atan.php", + "classes/src/functions/atanh.php", + "classes/src/functions/conjugate.php", + "classes/src/functions/cos.php", + "classes/src/functions/cosh.php", + "classes/src/functions/cot.php", + "classes/src/functions/coth.php", + "classes/src/functions/csc.php", + "classes/src/functions/csch.php", + "classes/src/functions/exp.php", + "classes/src/functions/inverse.php", + "classes/src/functions/ln.php", + "classes/src/functions/log2.php", + "classes/src/functions/log10.php", + "classes/src/functions/negative.php", + "classes/src/functions/pow.php", + "classes/src/functions/rho.php", + "classes/src/functions/sec.php", + "classes/src/functions/sech.php", + "classes/src/functions/sin.php", + "classes/src/functions/sinh.php", + "classes/src/functions/sqrt.php", + "classes/src/functions/tan.php", + "classes/src/functions/tanh.php", + "classes/src/functions/theta.php", + "classes/src/operations/add.php", + "classes/src/operations/subtract.php", + "classes/src/operations/multiply.php", + "classes/src/operations/divideby.php", + "classes/src/operations/divideinto.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@lange.demon.co.uk" + } + ], + "description": "PHP Class for working with complex numbers", + "homepage": "https://github.com/MarkBaker/PHPComplex", + "keywords": [ + "complex", + "mathematics" + ], + "time": "2018-10-13T23:28:42+00:00" + }, + { + "name": "markbaker/matrix", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPMatrix.git", + "reference": "6ea97472b5baf12119b4f31f802835b820dd6d64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/6ea97472b5baf12119b4f31f802835b820dd6d64", + "reference": "6ea97472b5baf12119b4f31f802835b820dd6d64", + "shasum": "" + }, + "require": { + "php": "^5.6.0|^7.0.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3", + "phpcompatibility/php-compatibility": "^8.0", + "phpdocumentor/phpdocumentor": "2.*", + "phploc/phploc": "2.*", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^4.8.35|^5.4.0", + "sebastian/phpcpd": "2.*", + "squizlabs/php_codesniffer": "^3.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Matrix\\": "classes/src/" + }, + "files": [ + "classes/src/functions/adjoint.php", + "classes/src/functions/antidiagonal.php", + "classes/src/functions/cofactors.php", + "classes/src/functions/determinant.php", + "classes/src/functions/diagonal.php", + "classes/src/functions/identity.php", + "classes/src/functions/inverse.php", + "classes/src/functions/minors.php", + "classes/src/functions/trace.php", + "classes/src/functions/transpose.php", + "classes/src/operations/add.php", + "classes/src/operations/directsum.php", + "classes/src/operations/subtract.php", + "classes/src/operations/multiply.php", + "classes/src/operations/divideby.php", + "classes/src/operations/divideinto.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@lange.demon.co.uk" + } + ], + "description": "PHP Class for working with matrices", + "homepage": "https://github.com/MarkBaker/PHPMatrix", + "keywords": [ + "mathematics", + "matrix", + "vector" + ], + "time": "2018-11-04T22:12:12+00:00" + }, + { + "name": "maxmind-db/reader", + "version": "v1.4.1", + "source": { + "type": "git", + "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git", + "reference": "eb83d0ee1c1f9b8a340206302136bc81ee02ae74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/eb83d0ee1c1f9b8a340206302136bc81ee02ae74", + "reference": "eb83d0ee1c1f9b8a340206302136bc81ee02ae74", + "shasum": "" + }, + "require": { + "php": ">=5.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "2.*", + "phpunit/phpunit": "4.* || 5.*", + "satooshi/php-coveralls": "1.0.*", + "squizlabs/php_codesniffer": "3.*" + }, + "suggest": { + "ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", + "ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", + "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups" + }, + "type": "library", + "autoload": { + "psr-4": { + "MaxMind\\Db\\": "src/MaxMind/Db" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Gregory J. Oschwald", + "email": "goschwald@maxmind.com", + "homepage": "http://www.maxmind.com/" + } + ], + "description": "MaxMind DB Reader API", + "homepage": "https://github.com/maxmind/MaxMind-DB-Reader-php", + "keywords": [ + "database", + "geoip", + "geoip2", + "geolocation", + "maxmind" + ], + "time": "2019-01-04T19:55:56+00:00" + }, + { + "name": "maxmind/web-service-common", + "version": "v0.5.0", + "source": { + "type": "git", + "url": "https://github.com/maxmind/web-service-common-php.git", + "reference": "61a9836fa3bb1743ab89752bae5005d71e78c73b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/61a9836fa3bb1743ab89752bae5005d71e78c73b", + "reference": "61a9836fa3bb1743ab89752bae5005d71e78c73b", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0.3", + "ext-curl": "*", + "ext-json": "*", + "php": ">=5.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "2.*", + "phpunit/phpunit": "4.*", + "squizlabs/php_codesniffer": "3.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "MaxMind\\Exception\\": "src/Exception", + "MaxMind\\WebService\\": "src/WebService" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Gregory Oschwald", + "email": "goschwald@maxmind.com" + } + ], + "description": "Internal MaxMind Web Service API", + "homepage": "https://github.com/maxmind/web-service-common-php", + "time": "2018-02-12T22:31:54+00:00" + }, + { + "name": "microweber-deps/laravel-tagging", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/microweber-deps/laravel-tagging.git", + "reference": "ce928fbd43ed011847e0c245033b7447f54bf0c6" + }, + "dist": { + "type": "zip", + "url": "https://packages.microweberapi.com/dist/microweber-deps/laravel-tagging/microweber-deps-laravel-tagging-ce928fbd43ed011847e0c245033b7447f54bf0c6-zip-0b3356.zip", + "reference": "ce928fbd43ed011847e0c245033b7447f54bf0c6", + "shasum": "395bba348bfb2bb7acf0f420142df4fad3b9e77c" + }, + "require": { + "illuminate/database": ">= 5.0", + "illuminate/support": ">= 5.0", + "php": ">=5.5.0" + }, + "require-dev": { + "mockery/mockery": "~0.9", + "orchestra/testbench": "~3.0", + "phpunit/phpunit": "~4.0", + "vlucas/phpdotenv": "~2.0" + }, + "type": "library", + "extra": { + "_meta": { + "readme": "https://packages.microweberapi.com/meta/meta-microweber-deps-laravel-tagging-2.2.1-477a6bbb424f0726e01a366ccfeb66b5d51a90223bc56d64350b0499b9b7f69d/README.md", + "avatar": "https://favicon.microweberapi.com/https://smartersoftware.net/packages/laravel-tagging-taggable" + } + }, + "autoload": { + "psr-4": { + "Conner\\Tagging\\": "src/" + } + }, + "autoload-dev": { + "classmap": [ + "tests/TestCase.php" + ] + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Robert Conner", + "email": "rtconner@smarter.bz" + } + ], + "description": "Use PHP traits to extend Laravel Eloquent Models to allow Tags. Models can be marked as Taggable.", + "homepage": "https://smartersoftware.net/packages/laravel-tagging-taggable", + "keywords": [ + "eloquent", + "laravel", + "laravel5", + "tag", + "taggable", + "tagged", + "tagging", + "tags" + ], + "support": { + "source": "https://github.com/microweber-deps/laravel-tagging/tree/2.2.1" + }, + "time": "2016-09-12T21:50:32+00:00" + }, + { + "name": "microweber-deps/recurr", + "version": "v3.1.0", + "source": { + "type": "git", + "url": "https://github.com/microweber-deps/recurr.git", + "reference": "971af786bfb89511c3f815bdd9ebad6c3259e1fc" + }, + "dist": { + "type": "zip", + "url": "https://packages.microweberapi.com/dist/microweber-deps/recurr/microweber-deps-recurr-971af786bfb89511c3f815bdd9ebad6c3259e1fc-zip-481640.zip", + "reference": "971af786bfb89511c3f815bdd9ebad6c3259e1fc", + "shasum": "d2b7770a8dd9306da73041fb44a94769add3fe14" + }, + "require": { + "doctrine/collections": "*", + "php": ">=5.6.3" + }, + "require-dev": { + "phpunit/phpunit": ">=4.5" + }, + "type": "library", + "extra": { + "_meta": { + "readme": "https://packages.microweberapi.com/meta/meta-microweber-deps-recurr-v3.1.0-ae504b0d0781d1505be4711d060cefd25c44ea292b9c134edeec1d498bd4d3b1/README.md", + "avatar": "https://favicon.microweberapi.com/https://github.com/selfworks/recurr" + } + }, + "autoload": { + "psr-4": { + "Recurr\\": "src/Recurr/", + "Recurr\\Test\\": "tests/" + } + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Shaun Simmons", + "email": "shaun@envysphere.com", + "homepage": "http://envysphere.com" + }, + { + "name": "Bozhidar Slaveykov", + "email": "selfworksbg@gmail.com", + "homepage": "" + } + ], + "description": "PHP library for working with recurrence rules", + "homepage": "https://github.com/selfworks/recurr", + "keywords": [ + "dates", + "events", + "recurrence", + "recurring", + "rrule" + ], + "support": { + "source": "https://github.com/microweber-deps/recurr/tree/v3.1.0" + }, + "time": "2018-09-27T19:16:00+00:00" + }, + { + "name": "microweber-templates/dream", + "version": "dev-master", + "target-dir": "dream", + "source": { + "type": "git", + "url": "https://github.com/microweber-templates/dream.git", + "reference": "609220a50be8cc53cbb6b7b277842a51fc24b1be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/microweber-templates/dream/zipball/609220a50be8cc53cbb6b7b277842a51fc24b1be", + "reference": "609220a50be8cc53cbb6b7b277842a51fc24b1be", + "shasum": "" + }, + "type": "microweber-template", + "extra": { + "preview_url": "https://templates.microweber.com/dream/", + "_meta": { + "avatar": "https://favicon.microweberapi.com/https://microweber.com/" + } + }, + "license": [ + "MIT" + ], + "description": "Dream", + "homepage": "https://microweber.com/", + "keywords": [ + "dream", + "ecommerce", + "microweber" + ], + "support": { + "source": "https://github.com/microweber-templates/dream/tree/2.5", + "issues": "https://github.com/microweber-templates/dream/issues" + }, + "time": "2019-08-07T13:51:19+00:00" + }, + { + "name": "microweber-templates/liteness", + "version": "dev-master", + "target-dir": "liteness", + "source": { + "type": "git", + "url": "https://github.com/microweber-templates/liteness.git", + "reference": "596d1c63ac89e310a1fa1c5653a3e347029c97cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/microweber-templates/liteness/zipball/596d1c63ac89e310a1fa1c5653a3e347029c97cc", + "reference": "596d1c63ac89e310a1fa1c5653a3e347029c97cc", + "shasum": "" + }, + "type": "microweber-template", + "extra": { + "preview_url": "https://templates.microweber.com/liteness/", + "_meta": { + "avatar": "https://favicon.microweberapi.com/https://microweber.com/" + } + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "MW Team", + "email": "contacts@microweber.com" + } + ], + "description": "Liteness", + "homepage": "https://microweber.com/", + "keywords": [ + "ecommerce", + "liteness", + "microweber" + ], + "support": { + "source": "https://github.com/microweber-templates/liteness/tree/1.1", + "issues": "https://github.com/microweber-templates/liteness/issues" + }, + "time": "2019-06-26T14:24:57+00:00" + }, + { + "name": "mobiledetect/mobiledetectlib", + "version": "2.8.33", + "source": { + "type": "git", + "url": "https://github.com/serbanghita/Mobile-Detect.git", + "reference": "cd385290f9a0d609d2eddd165a1e44ec1bf12102" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/cd385290f9a0d609d2eddd165a1e44ec1bf12102", + "reference": "cd385290f9a0d609d2eddd165a1e44ec1bf12102", + "shasum": "" + }, + "require": { + "php": ">=5.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8.35||~5.7" + }, + "type": "library", + "autoload": { + "classmap": [ + "Mobile_Detect.php" + ], + "psr-0": { + "Detection": "namespaced/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Serban Ghita", + "email": "serbanghita@gmail.com", + "homepage": "http://mobiledetect.net", + "role": "Developer" + } + ], + "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.", + "homepage": "https://github.com/serbanghita/Mobile-Detect", + "keywords": [ + "detect mobile devices", + "mobile", + "mobile detect", + "mobile detector", + "php mobile detect" + ], + "time": "2018-09-01T15:05:15+00:00" + }, + { + "name": "monolog/monolog", + "version": "1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "17cbfb8b9ccf56c03a32cb72d4a5ec466961eaa3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/17cbfb8b9ccf56c03a32cb72d4a5ec466961eaa3", + "reference": "17cbfb8b9ccf56c03a32cb72d4a5ec466961eaa3", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2019-07-06T13:03:00+00:00" + }, + { + "name": "mtdowling/cron-expression", + "version": "v1.2.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/mtdowling/cron-expression.git", + "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad", + "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0|~5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "time": "2017-01-23T04:29:33+00:00" + }, + { + "name": "mtdowling/jmespath.php", + "version": "2.4.0", + "source": { + "type": "git", + "url": "https://github.com/jmespath/jmespath.php.git", + "reference": "adcc9531682cf87dfda21e1fd5d0e7a41d292fac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/adcc9531682cf87dfda21e1fd5d0e7a41d292fac", + "reference": "adcc9531682cf87dfda21e1fd5d0e7a41d292fac", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "bin": [ + "bin/jp.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "JmesPath\\": "src/" + }, + "files": [ + "src/JmesPath.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Declaratively specify how to extract elements from a JSON document", + "keywords": [ + "json", + "jsonpath" + ], + "time": "2016-12-03T22:08:25+00:00" + }, + { + "name": "nesbot/carbon", + "version": "1.39.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "dd62a58af4e0775a45ea5f99d0363d81b7d9a1e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/dd62a58af4e0775a45ea5f99d0363d81b7d9a1e0", + "reference": "dd62a58af4e0775a45ea5f99d0363d81b7d9a1e0", + "shasum": "" + }, + "require": { + "kylekatarnls/update-helper": "^1.1", + "php": ">=5.3.9", + "symfony/translation": "~2.6 || ~3.0 || ~4.0" + }, + "require-dev": { + "composer/composer": "^1.2", + "friendsofphp/php-cs-fixer": "~2", + "phpunit/phpunit": "^4.8.35 || ^5.7" + }, + "bin": [ + "bin/upgrade-carbon" + ], + "type": "library", + "extra": { + "update-helper": "Carbon\\Upgrade", + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" + } + ], + "description": "A simple API extension for DateTime.", + "homepage": "http://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "time": "2019-06-11T09:07:59+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v3.1.5", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", + "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "~4.0|~5.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "time": "2018-02-28T20:30:58+00:00" + }, + { + "name": "nwidart/laravel-modules", + "version": "1.27.2", + "source": { + "type": "git", + "url": "https://github.com/nWidart/laravel-modules.git", + "reference": "5f149198bd3d4cf9c9323a301d5b8b0aabc44591" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nWidart/laravel-modules/zipball/5f149198bd3d4cf9c9323a301d5b8b0aabc44591", + "reference": "5f149198bd3d4cf9c9323a301d5b8b0aabc44591", + "shasum": "" + }, + "require": { + "laravel/framework": "5.1.*|5.2.*|5.3.*|5.4.*|5.5.*", + "php": ">=5.5" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.4", + "mockery/mockery": "~0.9.3", + "orchestra/testbench": "^3.1|^3.2|^3.3|^3.4", + "phpro/grumphp": "^0.11", + "phpunit/phpunit": "~5.7" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Nwidart\\Modules\\LaravelModulesServiceProvider" + ], + "aliases": { + "Module": "Nwidart\\Modules\\Facades\\Module" + } + } + }, + "autoload": { + "psr-4": { + "Nwidart\\Modules\\": "src" + }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Widart", + "email": "n.widart@gmail.com", + "homepage": "https://nicolaswidart.com", + "role": "Developer" + } + ], + "description": "Laravel Module management", + "keywords": [ + "laravel", + "module", + "modules", + "nwidart", + "rad" + ], + "time": "2017-08-31T16:09:16+00:00" + }, + { + "name": "omnipay/2checkout", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-2checkout.git", + "reference": "31394ce58d5999b6f49b321cb3547747837c1297" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-2checkout/zipball/31394ce58d5999b6f49b321cb3547747837c1297", + "reference": "31394ce58d5999b6f49b321cb3547747837c1297", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\TwoCheckout\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-2checkout/contributors" + } + ], + "description": "2Checkout driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-2checkout", + "keywords": [ + "2checkout", + "2co", + "gateway", + "merchant", + "omnipay", + "pay", + "payment", + "twocheckout" + ], + "time": "2014-09-17T00:35:37+00:00" + }, + { + "name": "omnipay/authorizenet", + "version": "2.6.x-dev", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-authorizenet.git", + "reference": "f199e182cc1b0a70ccae115824e130682d93a58d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-authorizenet/zipball/f199e182cc1b0a70ccae115824e130682d93a58d", + "reference": "f199e182cc1b0a70ccae115824e130682d93a58d", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.2" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\AuthorizeNet\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-authorizenet/contributors" + } + ], + "description": "Authorize.Net gateway for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-authorizenet", + "keywords": [ + "authorize", + "authorize net", + "authorize.net", + "gateway", + "merchant", + "omnipay", + "pay", + "payment" + ], + "time": "2018-05-18T11:01:21+00:00" + }, + { + "name": "omnipay/buckaroo", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-buckaroo.git", + "reference": "b1d74b4121a9c889fe8cc77715e6cffb14b8833c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-buckaroo/zipball/b1d74b4121a9c889fe8cc77715e6cffb14b8833c", + "reference": "b1d74b4121a9c889fe8cc77715e6cffb14b8833c", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\Buckaroo\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-buckaroo/contributors" + } + ], + "description": "Buckaroo driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-buckaroo", + "keywords": [ + "buckaroo", + "gateway", + "merchant", + "omnipay", + "pay", + "payment" + ], + "time": "2017-05-30T09:43:42+00:00" + }, + { + "name": "omnipay/cardsave", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-cardsave.git", + "reference": "368fb2f56adb5be2ffcb3c29a7ddcd585cb41a04" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-cardsave/zipball/368fb2f56adb5be2ffcb3c29a7ddcd585cb41a04", + "reference": "368fb2f56adb5be2ffcb3c29a7ddcd585cb41a04", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\CardSave\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-cardsave/contributors" + } + ], + "description": "CardSave driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-cardsave", + "keywords": [ + "card save", + "cardsave", + "gateway", + "merchant", + "omnipay", + "pay", + "payment" + ], + "time": "2014-09-21T02:27:16+00:00" + }, + { + "name": "omnipay/coinbase", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-coinbase.git", + "reference": "1046f0a40de69281d413ac191689e8c1329b76d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-coinbase/zipball/1046f0a40de69281d413ac191689e8c1329b76d4", + "reference": "1046f0a40de69281d413ac191689e8c1329b76d4", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\Coinbase\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-coinbase/contributors" + } + ], + "description": "Coinbase driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-coinbase", + "keywords": [ + "coinbase", + "gateway", + "merchant", + "omnipay", + "pay", + "payment" + ], + "time": "2017-07-01T03:37:43+00:00" + }, + { + "name": "omnipay/common", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-common.git", + "reference": "b1440bd7c0b4fb28ba8250d93695c61ac887685d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-common/zipball/b1440bd7c0b4fb28ba8250d93695c61ac887685d", + "reference": "b1440bd7c0b4fb28ba8250d93695c61ac887685d", + "shasum": "" + }, + "require": { + "guzzle/guzzle": "~3.9", + "php": ">=5.3.2", + "symfony/http-foundation": "~2.1|~3.0" + }, + "require-dev": { + "omnipay/tests": "~2.0", + "squizlabs/php_codesniffer": "~1.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5.x-dev" + }, + "gateways": [ + "AuthorizeNet_AIM", + "AuthorizeNet_SIM", + "Buckaroo_CreditCard", + "Buckaroo_Ideal", + "Buckaroo_PayPal", + "CardSave", + "Coinbase", + "Dummy", + "Eway_Rapid", + "FirstData_Connect", + "GoCardless", + "Manual", + "Migs_ThreeParty", + "Migs_TwoParty", + "Mollie", + "MultiSafepay", + "Netaxept", + "NetBanx", + "PayFast", + "Payflow_Pro", + "PaymentExpress_PxPay", + "PaymentExpress_PxPost", + "PayPal_Express", + "PayPal_Pro", + "Pin", + "SagePay_Direct", + "SagePay_Server", + "SecurePay_DirectPost", + "Stripe", + "TargetPay_Directebanking", + "TargetPay_Ideal", + "TargetPay_Mrcash", + "WorldPay" + ] + }, + "autoload": { + "psr-0": { + "Omnipay\\Common\\": "src/" + }, + "classmap": [ + "src/Omnipay/Omnipay.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-common/contributors" + } + ], + "description": "Common components for Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-common", + "keywords": [ + "gateway", + "merchant", + "omnipay", + "pay", + "payment", + "purchase" + ], + "time": "2017-01-08T16:58:11+00:00" + }, + { + "name": "omnipay/dummy", + "version": "2.2.x-dev", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-dummy.git", + "reference": "0ced02379aff446011ccde1392e641d9da436442" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-dummy/zipball/0ced02379aff446011ccde1392e641d9da436442", + "reference": "0ced02379aff446011ccde1392e641d9da436442", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\Dummy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-dummy/contributors" + } + ], + "description": "Dummy driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-dummy", + "keywords": [ + "Dummy", + "gateway", + "merchant", + "omnipay", + "pay", + "payment" + ], + "time": "2018-04-17T09:57:18+00:00" + }, + { + "name": "omnipay/eway", + "version": "v2.2.2", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-eway.git", + "reference": "480153441ad2e7aff9c26cf55e398c88da3e7eb1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-eway/zipball/480153441ad2e7aff9c26cf55e398c88da3e7eb1", + "reference": "480153441ad2e7aff9c26cf55e398c88da3e7eb1", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\Eway\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-eway/contributors" + } + ], + "description": "eWay driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-eway", + "keywords": [ + "eway", + "gateway", + "merchant", + "omnipay", + "pay", + "payment" + ], + "time": "2017-05-12T08:17:12+00:00" + }, + { + "name": "omnipay/firstdata", + "version": "v2.4.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-firstdata.git", + "reference": "addb59b381cb31609071201506ad54bf2402668a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-firstdata/zipball/addb59b381cb31609071201506ad54bf2402668a", + "reference": "addb59b381cb31609071201506ad54bf2402668a", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\FirstData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-firstdata/contributors" + } + ], + "description": "First Data driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-firstdata", + "keywords": [ + "first data", + "firstdata", + "gateway", + "merchant", + "omnipay", + "pay", + "payment" + ], + "time": "2019-01-27T20:05:45+00:00" + }, + { + "name": "omnipay/gocardless", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-gocardless.git", + "reference": "1c0bebdcc32d89fd243e1183028d2d50316e8bb1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-gocardless/zipball/1c0bebdcc32d89fd243e1183028d2d50316e8bb1", + "reference": "1c0bebdcc32d89fd243e1183028d2d50316e8bb1", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\GoCardless\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-gocardless/contributors" + } + ], + "description": "GoCardless driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-gocardless", + "keywords": [ + "gateway", + "go cardless", + "gocardless", + "merchant", + "omnipay", + "pay", + "payment" + ], + "time": "2015-09-24T14:44:29+00:00" + }, + { + "name": "omnipay/manual", + "version": "v2.2.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-manual.git", + "reference": "d896909093422f25a9deec13232b31ea69a72994" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-manual/zipball/d896909093422f25a9deec13232b31ea69a72994", + "reference": "d896909093422f25a9deec13232b31ea69a72994", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\Manual\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-manual/contributors" + } + ], + "description": "Manual driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-manual", + "keywords": [ + "gateway", + "manual", + "merchant", + "omnipay", + "pay", + "payment" + ], + "time": "2016-12-28T03:02:15+00:00" + }, + { + "name": "omnipay/migs", + "version": "v2.2.2", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-migs.git", + "reference": "0f79c818a150e73497efbe5e097ac4377d8f9717" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-migs/zipball/0f79c818a150e73497efbe5e097ac4377d8f9717", + "reference": "0f79c818a150e73497efbe5e097ac4377d8f9717", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\Migs\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-migs/contributors" + } + ], + "description": "MIGS driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-migs", + "keywords": [ + "gateway", + "mastercard internet gateway service", + "merchant", + "migs", + "omnipay", + "pay", + "payment" + ], + "time": "2017-06-07T07:52:47+00:00" + }, + { + "name": "omnipay/mollie", + "version": "3.2.x-dev", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-mollie.git", + "reference": "8a81a9980a3de726e6badb2ca0edc3728bba6c95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-mollie/zipball/8a81a9980a3de726e6badb2ca0edc3728bba6c95", + "reference": "8a81a9980a3de726e6badb2ca0edc3728bba6c95", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.2" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\Mollie\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-mollie/contributors" + } + ], + "description": "Mollie driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-mollie", + "keywords": [ + "gateway", + "merchant", + "mollie", + "omnipay", + "pay", + "payment" + ], + "time": "2016-10-11T09:44:09+00:00" + }, + { + "name": "omnipay/multisafepay", + "version": "v2.3.6", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-multisafepay.git", + "reference": "6d7a6d64fa0e124b90767e505ea105f4c3ecbadd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-multisafepay/zipball/6d7a6d64fa0e124b90767e505ea105f4c3ecbadd", + "reference": "6d7a6d64fa0e124b90767e505ea105f4c3ecbadd", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\MultiSafepay\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-multisafepay/contributors" + } + ], + "description": "MultiSafepay driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-multisafepay", + "keywords": [ + "gateway", + "merchant", + "multi safepay", + "multisafepay", + "omnipay", + "pay", + "payment" + ], + "time": "2017-05-28T06:28:10+00:00" + }, + { + "name": "omnipay/netaxept", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-netaxept.git", + "reference": "4cefa26d47af97fc1fefa2a651ea5eea25d23af8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-netaxept/zipball/4cefa26d47af97fc1fefa2a651ea5eea25d23af8", + "reference": "4cefa26d47af97fc1fefa2a651ea5eea25d23af8", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\Netaxept\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-netaxept/contributors" + } + ], + "description": "Netaxept driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-netaxept", + "keywords": [ + "gateway", + "merchant", + "netaxept", + "omnipay", + "pay", + "payment" + ], + "time": "2018-05-14T08:46:15+00:00" + }, + { + "name": "omnipay/netbanx", + "version": "v2.2", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-netbanx.git", + "reference": "3684bbbf0dbdb977c1484d7252d776d81c68c813" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-netbanx/zipball/3684bbbf0dbdb977c1484d7252d776d81c68c813", + "reference": "3684bbbf0dbdb977c1484d7252d776d81c68c813", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\NetBanx\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-netbanx/contributors" + } + ], + "description": "NetBanx driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-netbanx", + "keywords": [ + "gateway", + "merchant", + "netbanx", + "omnipay", + "pay", + "payment" + ], + "time": "2016-09-21T10:52:03+00:00" + }, + { + "name": "omnipay/payfast", + "version": "v2.2", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-payfast.git", + "reference": "c3ff0de9d02c5ac1b502eefb29e6aa6f12a374d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-payfast/zipball/c3ff0de9d02c5ac1b502eefb29e6aa6f12a374d2", + "reference": "c3ff0de9d02c5ac1b502eefb29e6aa6f12a374d2", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\PayFast\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-payfast/contributors" + } + ], + "description": "PayFast driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-payfast", + "keywords": [ + "gateway", + "merchant", + "omnipay", + "pay", + "payfast", + "payment" + ], + "time": "2018-02-02T17:02:45+00:00" + }, + { + "name": "omnipay/payflow", + "version": "v2.3.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-payflow.git", + "reference": "88fb22e1203caff81e106abd4a9b77fc32bb1708" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-payflow/zipball/88fb22e1203caff81e106abd4a9b77fc32bb1708", + "reference": "88fb22e1203caff81e106abd4a9b77fc32bb1708", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\Payflow\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-payflow/contributors" + } + ], + "description": "Payflow driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-payflow", + "keywords": [ + "gateway", + "merchant", + "omnipay", + "pay", + "payflow", + "payment" + ], + "time": "2018-04-11T04:19:09+00:00" + }, + { + "name": "omnipay/paymentexpress", + "version": "2.x-dev", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-paymentexpress.git", + "reference": "d8f19103df0c3105872b105507b079822ab32c96" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-paymentexpress/zipball/d8f19103df0c3105872b105507b079822ab32c96", + "reference": "d8f19103df0c3105872b105507b079822ab32c96", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\PaymentExpress\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-paymentexpress/contributors" + } + ], + "description": "Payment Express (DPS) driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-paymentexpress", + "keywords": [ + "direct payment solutions", + "dps", + "gateway", + "merchant", + "omnipay", + "pay", + "payment", + "payment express", + "paymentexpress", + "pxaccess", + "pxpay", + "pxpost" + ], + "time": "2018-05-14T09:09:08+00:00" + }, + { + "name": "omnipay/paypal", + "version": "2.x-dev", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-paypal.git", + "reference": "207f602699d021ffc89c7b3dea99b5d0d6713221" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-paypal/zipball/207f602699d021ffc89c7b3dea99b5d0d6713221", + "reference": "207f602699d021ffc89c7b3dea99b5d0d6713221", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\PayPal\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-paypal/contributors" + } + ], + "description": "PayPal gateway for Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-paypal", + "keywords": [ + "gateway", + "merchant", + "omnipay", + "pay", + "payment", + "paypal", + "purchase" + ], + "time": "2018-03-28T16:14:31+00:00" + }, + { + "name": "omnipay/pin", + "version": "v2.2.2", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-pin.git", + "reference": "8c859bc71de8def70623eacd1b3ec6da1829a445" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-pin/zipball/8c859bc71de8def70623eacd1b3ec6da1829a445", + "reference": "8c859bc71de8def70623eacd1b3ec6da1829a445", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\Pin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-pin/contributors" + } + ], + "description": "Pin Payments driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-pin", + "keywords": [ + "gateway", + "merchant", + "omnipay", + "pay", + "payment", + "pin" + ], + "time": "2016-03-25T18:06:33+00:00" + }, + { + "name": "omnipay/sagepay", + "version": "2.x-dev", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-sagepay.git", + "reference": "3f47213f3227cbabb183348f387b7a0a938b6f09" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-sagepay/zipball/3f47213f3227cbabb183348f387b7a0a938b6f09", + "reference": "3f47213f3227cbabb183348f387b7a0a938b6f09", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.4", + "php": ">=5.4" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Omnipay\\SagePay\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-sagepay/contributors" + } + ], + "description": "Sage Pay driver for the Omnipay PHP payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-sagepay", + "keywords": [ + "gateway", + "merchant", + "omnipay", + "pay", + "payment", + "purchase", + "sage pay", + "sagepay" + ], + "time": "2018-09-17T21:45:59+00:00" + }, + { + "name": "omnipay/securepay", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-securepay.git", + "reference": "ac2982c4b5382e233d620bdfec345a54b0394977" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-securepay/zipball/ac2982c4b5382e233d620bdfec345a54b0394977", + "reference": "ac2982c4b5382e233d620bdfec345a54b0394977", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\SecurePay\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-securepay/contributors" + } + ], + "description": "SecurePay driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-securepay", + "keywords": [ + "gateway", + "merchant", + "omnipay", + "pay", + "payment", + "securepay" + ], + "time": "2018-05-25T07:49:11+00:00" + }, + { + "name": "omnipay/stripe", + "version": "2.x-dev", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-stripe.git", + "reference": "bc6afb30d84a33ef845c69290785810f14d66cb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-stripe/zipball/bc6afb30d84a33ef845c69290785810f14d66cb8", + "reference": "bc6afb30d84a33ef845c69290785810f14d66cb8", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\Stripe\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-stripe/contributors" + } + ], + "description": "Stripe driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-stripe", + "keywords": [ + "gateway", + "merchant", + "omnipay", + "pay", + "payment", + "stripe" + ], + "time": "2018-05-14T08:46:06+00:00" + }, + { + "name": "omnipay/targetpay", + "version": "v2.2.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-targetpay.git", + "reference": "fc74d5d0f7929ce86298faec9e195985d7d4afe0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-targetpay/zipball/fc74d5d0f7929ce86298faec9e195985d7d4afe0", + "reference": "fc74d5d0f7929ce86298faec9e195985d7d4afe0", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\TargetPay\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-targetpay/contributors" + } + ], + "description": "TargetPay driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-targetpay", + "keywords": [ + "gateway", + "merchant", + "omnipay", + "pay", + "payment", + "targetpay" + ], + "time": "2014-09-17T00:38:39+00:00" + }, + { + "name": "omnipay/worldpay", + "version": "v2.2.2", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/omnipay-worldpay.git", + "reference": "522fbac76b1baa65cb62192fedff227fe37a8cf0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/omnipay-worldpay/zipball/522fbac76b1baa65cb62192fedff227fe37a8cf0", + "reference": "522fbac76b1baa65cb62192fedff227fe37a8cf0", + "shasum": "" + }, + "require": { + "omnipay/common": "~2.0" + }, + "require-dev": { + "omnipay/tests": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Omnipay\\WorldPay\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrian Macneil", + "email": "adrian@adrianmacneil.com" + }, + { + "name": "Omnipay Contributors", + "homepage": "https://github.com/thephpleague/omnipay-worldpay/contributors" + } + ], + "description": "WorldPay driver for the Omnipay payment processing library", + "homepage": "https://github.com/thephpleague/omnipay-worldpay", + "keywords": [ + "gateway", + "merchant", + "omnipay", + "pay", + "payment", + "worldpay" + ], + "time": "2017-10-23T08:31:50+00:00" + }, + { + "name": "oyejorge/less.php", + "version": "1.7.x-dev", + "source": { + "type": "git", + "url": "https://github.com/oyejorge/less.php.git", + "reference": "8f77f13bbc4d5997c76322523e1fb28376acf080" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/oyejorge/less.php/zipball/8f77f13bbc4d5997c76322523e1fb28376acf080", + "reference": "8f77f13bbc4d5997c76322523e1fb28376acf080", + "shasum": "" + }, + "require": { + "php": ">=5.2" + }, + "bin": [ + "bin/lessc" + ], + "type": "library", + "autoload": { + "psr-0": { + "Less": "lib/" + }, + "classmap": [ + "lessc.inc.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Matt Agar", + "homepage": "https://github.com/agar" + }, + { + "name": "Martin Jantošovič", + "homepage": "https://github.com/Mordred" + }, + { + "name": "Josh Schmidt", + "homepage": "https://github.com/oyejorge" + } + ], + "description": "PHP port of the Javascript version of LESS http://lesscss.org", + "homepage": "http://lessphp.gpeasy.com", + "keywords": [ + "css", + "less", + "less.js", + "lesscss", + "php", + "stylesheet" + ], + "time": "2014-03-04T18:49:54+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "9fc1472f86f806eb1f0801c7e027f53c24e08bff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/9fc1472f86f806eb1f0801c7e027f53c24e08bff", + "reference": "9fc1472f86f806eb1f0801c7e027f53c24e08bff", + "shasum": "" + }, + "require": { + "php": ">=5.2.0" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "autoload": { + "files": [ + "lib/random.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "pseudorandom", + "random" + ], + "time": "2018-04-04T21:56:13+00:00" + }, + { + "name": "phenx/php-font-lib", + "version": "0.5.1", + "source": { + "type": "git", + "url": "https://github.com/PhenX/php-font-lib.git", + "reference": "760148820110a1ae0936e5cc35851e25a938bc97" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/760148820110a1ae0936e5cc35851e25a938bc97", + "reference": "760148820110a1ae0936e5cc35851e25a938bc97", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "^4.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "FontLib\\": "src/FontLib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + } + ], + "description": "A library to read, parse, export and make subsets of different types of font files.", + "homepage": "https://github.com/PhenX/php-font-lib", + "time": "2017-09-13T16:14:37+00:00" + }, + { + "name": "phenx/php-svg-lib", + "version": "v0.3.2", + "source": { + "type": "git", + "url": "https://github.com/PhenX/php-svg-lib.git", + "reference": "ccc46ef6340d4b8a4a68047e68d8501ea961442c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/ccc46ef6340d4b8a4a68047e68d8501ea961442c", + "reference": "ccc46ef6340d4b8a4a68047e68d8501ea961442c", + "shasum": "" + }, + "require": { + "sabberworm/php-css-parser": "8.1.*" + }, + "require-dev": { + "phpunit/phpunit": "~5.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Svg\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + } + ], + "description": "A library to read, parse and export to PDF SVG files.", + "homepage": "https://github.com/PhenX/php-svg-lib", + "time": "2018-06-03T10:10:03+00:00" + }, + { + "name": "php-http/curl-client", + "version": "1.7.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-http/curl-client.git", + "reference": "4a818d3b7edf2406712b8004dcf1670d224cbcc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/curl-client/zipball/4a818d3b7edf2406712b8004dcf1670d224cbcc4", + "reference": "4a818d3b7edf2406712b8004dcf1670d224cbcc4", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": "^5.5 || ^7.0", + "php-http/discovery": "^1.0", + "php-http/httplug": "^1.0", + "php-http/message": "^1.2", + "php-http/message-factory": "^1.0.2" + }, + "provide": { + "php-http/async-client-implementation": "1.0", + "php-http/client-implementation": "1.0" + }, + "require-dev": { + "guzzlehttp/psr7": "^1.0", + "php-http/client-integration-tests": "^0.6", + "phpunit/phpunit": "^4.8.27", + "zendframework/zend-diactoros": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Http\\Client\\Curl\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Михаил Красильников", + "email": "m.krasilnikov@yandex.ru" + } + ], + "description": "cURL client for PHP-HTTP", + "homepage": "http://php-http.org", + "keywords": [ + "curl", + "http" + ], + "time": "2018-10-06T07:55:59+00:00" + }, + { + "name": "php-http/discovery", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/php-http/discovery.git", + "reference": "684855f2c2e9d0a61868b8f8d6bd0295c8a4b651" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/discovery/zipball/684855f2c2e9d0a61868b8f8d6bd0295c8a4b651", + "reference": "684855f2c2e9d0a61868b8f8d6bd0295c8a4b651", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0" + }, + "conflict": { + "nyholm/psr7": "<1.0" + }, + "require-dev": { + "php-http/httplug": "^1.0 || ^2.0", + "php-http/message-factory": "^1.0", + "phpspec/phpspec": "^2.4", + "puli/composer-plugin": "1.0.0-beta10" + }, + "suggest": { + "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories", + "puli/composer-plugin": "Sets up Puli which is recommended for Discovery to work. Check http://docs.php-http.org/en/latest/discovery.html for more details." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Discovery\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Finds installed HTTPlug implementations and PSR-7 message factories", + "homepage": "http://php-http.org", + "keywords": [ + "adapter", + "client", + "discovery", + "factory", + "http", + "message", + "psr7" + ], + "time": "2019-02-23T07:42:53+00:00" + }, + { + "name": "php-http/httplug", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/httplug.git", + "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/httplug/zipball/1c6381726c18579c4ca2ef1ec1498fdae8bdf018", + "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "php-http/promise": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "henrikbjorn/phpspec-code-coverage": "^1.0", + "phpspec/phpspec": "^2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eric GELOEN", + "email": "geloen.eric@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "HTTPlug, the HTTP client abstraction for PHP", + "homepage": "http://httplug.io", + "keywords": [ + "client", + "http" + ], + "time": "2016-08-31T08:30:17+00:00" + }, + { + "name": "php-http/message", + "version": "1.7.2", + "source": { + "type": "git", + "url": "https://github.com/php-http/message.git", + "reference": "b159ffe570dffd335e22ef0b91a946eacb182fa1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/message/zipball/b159ffe570dffd335e22ef0b91a946eacb182fa1", + "reference": "b159ffe570dffd335e22ef0b91a946eacb182fa1", + "shasum": "" + }, + "require": { + "clue/stream-filter": "^1.4", + "php": "^5.4 || ^7.0", + "php-http/message-factory": "^1.0.2", + "psr/http-message": "^1.0" + }, + "provide": { + "php-http/message-factory-implementation": "1.0" + }, + "require-dev": { + "akeneo/phpspec-skip-example-extension": "^1.0", + "coduo/phpspec-data-provider-extension": "^1.0", + "ext-zlib": "*", + "guzzlehttp/psr7": "^1.0", + "henrikbjorn/phpspec-code-coverage": "^1.0", + "phpspec/phpspec": "^2.4", + "slim/slim": "^3.0", + "zendframework/zend-diactoros": "^1.0" + }, + "suggest": { + "ext-zlib": "Used with compressor/decompressor streams", + "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", + "slim/slim": "Used with Slim Framework PSR-7 implementation", + "zendframework/zend-diactoros": "Used with Diactoros Factories" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Message\\": "src/" + }, + "files": [ + "src/filters.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "HTTP Message related tools", + "homepage": "http://php-http.org", + "keywords": [ + "http", + "message", + "psr-7" + ], + "time": "2018-11-01T09:32:41+00:00" + }, + { + "name": "php-http/message-factory", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/php-http/message-factory.git", + "reference": "597f30e6dfd32a85fd7dbe58cb47554b5bad910e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/message-factory/zipball/597f30e6dfd32a85fd7dbe58cb47554b5bad910e", + "reference": "597f30e6dfd32a85fd7dbe58cb47554b5bad910e", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Factory interfaces for PSR-7 HTTP Message", + "homepage": "http://php-http.org", + "keywords": [ + "factory", + "http", + "message", + "stream", + "uri" + ], + "time": "2018-12-06T18:41:41+00:00" + }, + { + "name": "php-http/promise", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/php-http/promise.git", + "reference": "1cc44dc01402d407fc6da922591deebe4659826f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/promise/zipball/1cc44dc01402d407fc6da922591deebe4659826f", + "reference": "1cc44dc01402d407fc6da922591deebe4659826f", + "shasum": "" + }, + "require-dev": { + "henrikbjorn/phpspec-code-coverage": "^1.0", + "phpspec/phpspec": "^2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + }, + { + "name": "Joel Wurtz", + "email": "joel.wurtz@gmail.com" + } + ], + "description": "Promise used for asynchronous HTTP requests", + "homepage": "http://httplug.io", + "keywords": [ + "promise" + ], + "time": "2017-11-22T21:24:54+00:00" + }, + { + "name": "phpoffice/phpspreadsheet", + "version": "1.8.2", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", + "reference": "0c1346a1956347590b7db09533966307d20cb7cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/0c1346a1956347590b7db09533966307d20cb7cc", + "reference": "0c1346a1956347590b7db09533966307d20cb7cc", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-gd": "*", + "ext-iconv": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-xml": "*", + "ext-xmlreader": "*", + "ext-xmlwriter": "*", + "ext-zip": "*", + "ext-zlib": "*", + "markbaker/complex": "^1.4", + "markbaker/matrix": "^1.1", + "php": "^5.6|^7.0", + "psr/simple-cache": "^1.0" + }, + "require-dev": { + "doctrine/instantiator": "^1.0.0", + "dompdf/dompdf": "^0.8.0", + "friendsofphp/php-cs-fixer": "@stable", + "jpgraph/jpgraph": "^4.0", + "mpdf/mpdf": "^7.0.0", + "phpcompatibility/php-compatibility": "^8.0", + "phpunit/phpunit": "^5.7", + "squizlabs/php_codesniffer": "^3.3", + "tecnickcom/tcpdf": "^6.2" + }, + "suggest": { + "dompdf/dompdf": "Option for rendering PDF with PDF Writer", + "jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", + "mpdf/mpdf": "Option for rendering PDF with PDF Writer", + "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Erik Tilt" + }, + { + "name": "Adrien Crivelli" + }, + { + "name": "Maarten Balliauw", + "homepage": "https://blog.maartenballiauw.be" + }, + { + "name": "Mark Baker", + "homepage": "https://markbakeruk.net" + }, + { + "name": "Franck Lefevre", + "homepage": "https://rootslabs.net" + } + ], + "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", + "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", + "keywords": [ + "OpenXML", + "excel", + "gnumeric", + "ods", + "php", + "spreadsheet", + "xls", + "xlsx" + ], + "time": "2019-07-08T21:21:25+00:00" + }, + { + "name": "psr/http-message", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/log", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "c4421fcac1edd5a324fda73e589a5cf96e52ffd0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/c4421fcac1edd5a324fda73e589a5cf96e52ffd0", + "reference": "c4421fcac1edd5a324fda73e589a5cf96e52ffd0", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2018-11-21T13:42:00+00:00" + }, + { + "name": "psr/simple-cache", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "time": "2017-10-23T01:57:42+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/uuid", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "0c0ac34e867219bb9936cc5b823f8a5af840d7eb" + }, + "dist": { + "type": "zip", + "url": "https://packages.microweberapi.com/dist/ramsey/uuid/ramsey-uuid-0c0ac34e867219bb9936cc5b823f8a5af840d7eb-zip-3f4cdd.zip", + "reference": "0c0ac34e867219bb9936cc5b823f8a5af840d7eb", + "shasum": "33eeaa9d74cb2526676b0758b14b7246092602ec" + }, + "require": { + "php": ">=5.4" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "apigen/apigen": "^4.1", + "ircmaxell/random-lib": "^1.1", + "jakub-onderka/php-parallel-lint": "^0.9.0", + "moontoast/math": "^1.1", + "phpunit/phpunit": "^4.7", + "satooshi/php-coveralls": "^0.6.1", + "squizlabs/php_codesniffer": "^2.3" + }, + "suggest": { + "ircmaxell/random-lib": "Provides RandomLib to use with the RandomLibAdapter", + "moontoast/math": "Support for converting UUID to 128-bit integer (in string form).", + "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", + "ramsey/uuid-doctrine": "Allow the use of a UUID as Doctrine field type." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://installreport.services.microweberapi.com", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + }, + { + "name": "Marijn Huizendveld", + "email": "marijn.huizendveld@gmail.com" + }, + { + "name": "Thibaud Fabre", + "email": "thibaud@aztech.io" + } + ], + "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", + "homepage": "https://github.com/ramsey/uuid", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid" + }, + "time": "2015-09-28T16:27:51+00:00" + }, + { + "name": "rcrowe/twigbridge", + "version": "v0.9.6", + "source": { + "type": "git", + "url": "https://github.com/rcrowe/TwigBridge.git", + "reference": "c3579440a3ca47ca45bfb0ed854bc0ff9b086bf5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rcrowe/TwigBridge/zipball/c3579440a3ca47ca45bfb0ed854bc0ff9b086bf5", + "reference": "c3579440a3ca47ca45bfb0ed854bc0ff9b086bf5", + "shasum": "" + }, + "require": { + "illuminate/support": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*", + "illuminate/view": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*", + "php": ">=5.4.0", + "twig/twig": "~1.30" + }, + "require-dev": { + "laravel/framework": "5.0.*", + "mockery/mockery": "0.9.*", + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "~0.6", + "squizlabs/php_codesniffer": "~1.5" + }, + "suggest": { + "laravelcollective/html": "For bringing back html/form in Laravel 5.x", + "twig/extensions": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.10-dev" + }, + "laravel": { + "providers": [ + "TwigBridge\\ServiceProvider" + ], + "aliases": { + "Twig": "TwigBridge\\Facade\\Twig" + } + } + }, + "autoload": { + "psr-4": { + "TwigBridge\\": "src", + "TwigBridge\\Tests\\": "tests" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + }, + { + "name": "Rob Crowe", + "email": "hello@vivalacrowe.com" + } + ], + "description": "Adds the power of Twig to Laravel", + "keywords": [ + "laravel", + "twig" + ], + "time": "2018-02-08T15:59:23+00:00" + }, + { + "name": "sabberworm/php-css-parser", + "version": "8.1.0", + "source": { + "type": "git", + "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", + "reference": "850cbbcbe7fbb155387a151ea562897a67e242ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/850cbbcbe7fbb155387a151ea562897a67e242ef", + "reference": "850cbbcbe7fbb155387a151ea562897a67e242ef", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "*" + }, + "type": "library", + "autoload": { + "psr-0": { + "Sabberworm\\CSS": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Raphael Schweikert" + } + ], + "description": "Parser for CSS Files written in PHP", + "homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser", + "keywords": [ + "css", + "parser", + "stylesheet" + ], + "time": "2016-07-19T19:14:21+00:00" + }, + { + "name": "seld/jsonlint", + "version": "1.7.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38", + "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "time": "2018-01-24T12:46:19+00:00" + }, + { + "name": "seld/phar-utils", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a", + "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\PharUtils\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "PHAR file format utilities, for when PHP phars you up", + "keywords": [ + "phra" + ], + "time": "2015-10-13T18:44:15+00:00" + }, + { + "name": "socialiteproviders/linkedin", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/SocialiteProviders/LinkedIn.git", + "reference": "87457ddf6fa55bd4f91dc9c5e2cf20bd7a2000cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SocialiteProviders/LinkedIn/zipball/87457ddf6fa55bd4f91dc9c5e2cf20bd7a2000cc", + "reference": "87457ddf6fa55bd4f91dc9c5e2cf20bd7a2000cc", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "socialiteproviders/manager": "~2.0 || ~3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "SocialiteProviders\\LinkedIn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Faust", + "email": "hello@brianfaust.de" + } + ], + "description": "LinkedIn OAuth2 Provider for Laravel Socialite", + "time": "2019-03-26T16:25:43+00:00" + }, + { + "name": "socialiteproviders/manager", + "version": "v3.3.7", + "source": { + "type": "git", + "url": "https://github.com/SocialiteProviders/Manager.git", + "reference": "4c509ae86e133125f4db084446aecbb9eb331858" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/4c509ae86e133125f4db084446aecbb9eb331858", + "reference": "4c509ae86e133125f4db084446aecbb9eb331858", + "shasum": "" + }, + "require": { + "illuminate/support": "~5.4|~5.7.0|~5.8.0", + "laravel/socialite": "~3.0|~4.0", + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "SocialiteProviders\\Manager\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "SocialiteProviders\\Manager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andy Wendt", + "email": "andy@awendt.com" + }, + { + "name": "Anton Komarev", + "email": "a.komarev@cybercog.su" + } + ], + "description": "Easily add new or override built-in providers in Laravel Socialite.", + "time": "2019-07-02T10:24:56+00:00" + }, + { + "name": "swiftmailer/swiftmailer", + "version": "5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950", + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "mockery/mockery": "~0.9.1", + "symfony/phpunit-bridge": "~3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", + "keywords": [ + "email", + "mail", + "mailer" + ], + "time": "2018-07-31T09:26:32+00:00" + }, + { + "name": "symfony/config", + "version": "3.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "8f3c9480dab1d039c426bffedb37ef9793022e91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/8f3c9480dab1d039c426bffedb37ef9793022e91", + "reference": "8f3c9480dab1d039c426bffedb37ef9793022e91", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/filesystem": "~2.8|~3.0|~4.0", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/dependency-injection": "<3.3", + "symfony/finder": "<3.3" + }, + "require-dev": { + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/event-dispatcher": "~3.3|~4.0", + "symfony/finder": "~3.3|~4.0", + "symfony/yaml": "~3.0|~4.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Config Component", + "homepage": "https://symfony.com", + "time": "2019-08-01T22:48:42+00:00" + }, + { + "name": "symfony/console", + "version": "3.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ce9e68b963a7854fba454e584dab203a68815266" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ce9e68b963a7854fba454e584dab203a68815266", + "reference": "ce9e68b963a7854fba454e584dab203a68815266", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/debug": "~2.8|~3.0|~4.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.3|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.3|~4.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2019-08-01T22:48:42+00:00" + }, + { + "name": "symfony/css-selector", + "version": "3.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "ef9d317b290d40cf4daa36df2a2e832a87e92e24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ef9d317b290d40cf4daa36df2a2e832a87e92e24", + "reference": "ef9d317b290d40cf4daa36df2a2e832a87e92e24", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony CssSelector Component", + "homepage": "https://symfony.com", + "time": "2019-08-01T22:48:42+00:00" + }, + { + "name": "symfony/debug", + "version": "3.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "bef2cd01a15eb8cdf6e00daafb07ccd944ecbbe1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/bef2cd01a15eb8cdf6e00daafb07ccd944ecbbe1", + "reference": "bef2cd01a15eb8cdf6e00daafb07ccd944ecbbe1", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + }, + "require-dev": { + "symfony/http-kernel": "~2.8|~3.0|~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Debug Component", + "homepage": "https://symfony.com", + "time": "2019-08-01T22:48:42+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "2.8.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a77e974a5fecb4398833b0709210e3d5e334ffb0", + "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^2.0.5|~3.0.0", + "symfony/dependency-injection": "~2.6|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/stopwatch": "~2.3|~3.0.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2018-11-21T14:20:20+00:00" + }, + { + "name": "symfony/filesystem", + "version": "3.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "d7ca5826d2300d3efb70e945f250ac9715bb247b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/d7ca5826d2300d3efb70e945f250ac9715bb247b", + "reference": "d7ca5826d2300d3efb70e945f250ac9715bb247b", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-ctype": "~1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "time": "2019-08-01T22:48:42+00:00" + }, + { + "name": "symfony/finder", + "version": "3.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "1f89d091583024698c80ced3e6ed12ec56c4c153" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/1f89d091583024698c80ced3e6ed12ec56c4c153", + "reference": "1f89d091583024698c80ced3e6ed12ec56c4c153", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "time": "2019-08-01T22:48:42+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "3.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "c8b6934f07abf8642a9110a53d551a1e78ff7778" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c8b6934f07abf8642a9110a53d551a1e78ff7778", + "reference": "c8b6934f07abf8642a9110a53d551a1e78ff7778", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php70": "~1.6" + }, + "require-dev": { + "symfony/expression-language": "~2.8|~3.0|~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpFoundation Component", + "homepage": "https://symfony.com", + "time": "2019-08-01T22:48:42+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "3.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "ee1c13da14d786c0da69bae212cc94b8e1d009fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/ee1c13da14d786c0da69bae212cc94b8e1d009fc", + "reference": "ee1c13da14d786c0da69bae212cc94b8e1d009fc", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "psr/log": "~1.0", + "symfony/debug": "^3.3.3|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/config": "<2.8", + "symfony/dependency-injection": "<3.4.10|<4.0.10,>=4", + "symfony/var-dumper": "<3.3", + "twig/twig": "<1.34|<2.4,>=2" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/cache": "~1.0", + "symfony/browser-kit": "~2.8|~3.0|~4.0", + "symfony/class-loader": "~2.8|~3.0", + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/console": "~2.8|~3.0|~4.0", + "symfony/css-selector": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "^3.4.10|^4.0.10", + "symfony/dom-crawler": "~2.8|~3.0|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/process": "~2.8|~3.0|~4.0", + "symfony/routing": "~3.4|~4.0", + "symfony/stopwatch": "~2.8|~3.0|~4.0", + "symfony/templating": "~2.8|~3.0|~4.0", + "symfony/translation": "~2.8|~3.0|~4.0", + "symfony/var-dumper": "~3.3|~4.0" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "", + "symfony/finder": "", + "symfony/var-dumper": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpKernel Component", + "homepage": "https://symfony.com", + "time": "2019-08-01T22:48:42+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "82ebae02209c21113908c229e9883c419720738a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", + "reference": "82ebae02209c21113908c229e9883c419720738a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2019-02-06T07:57:58+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "626bb16c799983996863d1243eadf5bcb2cbb5bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/626bb16c799983996863d1243eadf5bcb2cbb5bd", + "reference": "626bb16c799983996863d1243eadf5bcb2cbb5bd", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2019-08-01T10:49:16+00:00" + }, + { + "name": "symfony/polyfill-php56", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php56.git", + "reference": "f4dddbc5c3471e1b700a147a20ae17cdb72dbe42" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/f4dddbc5c3471e1b700a147a20ae17cdb72dbe42", + "reference": "f4dddbc5c3471e1b700a147a20ae17cdb72dbe42", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-util": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php56\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-02-06T07:57:58+00:00" + }, + { + "name": "symfony/polyfill-php70", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "bc4858fb611bda58719124ca079baff854149c89" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/bc4858fb611bda58719124ca079baff854149c89", + "reference": "bc4858fb611bda58719124ca079baff854149c89", + "shasum": "" + }, + "require": { + "paragonie/random_compat": "~1.0|~2.0|~9.99", + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php70\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-02-06T07:57:58+00:00" + }, + { + "name": "symfony/polyfill-util", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-util.git", + "reference": "b46c6cae28a3106735323f00a0c38eccf2328897" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/b46c6cae28a3106735323f00a0c38eccf2328897", + "reference": "b46c6cae28a3106735323f00a0c38eccf2328897", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Util\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony utilities for portability of PHP codes", + "homepage": "https://symfony.com", + "keywords": [ + "compat", + "compatibility", + "polyfill", + "shim" + ], + "time": "2019-02-08T14:16:39+00:00" + }, + { + "name": "symfony/process", + "version": "3.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "294250e473559baf6ed5d62d413f4e0abbf30737" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/294250e473559baf6ed5d62d413f4e0abbf30737", + "reference": "294250e473559baf6ed5d62d413f4e0abbf30737", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "time": "2019-08-01T22:48:42+00:00" + }, + { + "name": "symfony/routing", + "version": "3.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "53c529c48c6a40e0e37ff2384d450bde57e4da77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/53c529c48c6a40e0e37ff2384d450bde57e4da77", + "reference": "53c529c48c6a40e0e37ff2384d450bde57e4da77", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "conflict": { + "symfony/config": "<3.3.1", + "symfony/dependency-injection": "<3.3", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "psr/log": "~1.0", + "symfony/config": "^3.3.1|~4.0", + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/http-foundation": "~2.8|~3.0|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Routing Component", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "time": "2019-08-01T23:40:18+00:00" + }, + { + "name": "symfony/translation", + "version": "3.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "4ef68298c63549ce80a63ff08347767e84d79084" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/4ef68298c63549ce80a63ff08347767e84d79084", + "reference": "4ef68298c63549ce80a63ff08347767e84d79084", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/config": "<2.8", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/intl": "^2.8.18|^3.2.5|~4.0", + "symfony/var-dumper": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Translation Component", + "homepage": "https://symfony.com", + "time": "2019-08-01T22:48:42+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "3.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "db13a5247fd774050609dacb3bb60f5a2b40abe5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/db13a5247fd774050609dacb3bb60f5a2b40abe5", + "reference": "db13a5247fd774050609dacb3bb60f5a2b40abe5", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + }, + "require-dev": { + "ext-iconv": "*", + "twig/twig": "~1.34|~2.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "ext-symfony_debug": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony mechanism for exploring and dumping PHP variables", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "time": "2019-08-01T07:40:28+00:00" + }, + { + "name": "symfony/yaml", + "version": "3.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "dab2c2e24f8a708b0d85d02a9f1be2e6e18419a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/dab2c2e24f8a708b0d85d02a9f1be2e6e18419a9", + "reference": "dab2c2e24f8a708b0d85d02a9f1be2e6e18419a9", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2019-08-01T22:48:42+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", + "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "time": "2017-11-27T11:13:29+00:00" + }, + { + "name": "twig/twig", + "version": "1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "18458930a587bca98d857f203559610db982a58b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/18458930a587bca98d857f203559610db982a58b", + "reference": "18458930a587bca98d857f203559610db982a58b", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "symfony/polyfill-ctype": "^1.8" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/debug": "^2.7", + "symfony/phpunit-bridge": "^3.4.19|^4.1.8|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.42-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + }, + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "role": "Lead Developer", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org" + }, + { + "name": "Twig Team", + "role": "Contributors", + "homepage": "https://twig.symfony.com/contributors" + }, + { + "name": "Armin Ronacher", + "role": "Project Founder", + "email": "armin.ronacher@active-4.com" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "time": "2019-08-02T08:08:07+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "9caf304153dc2288e4970caec6f1f3b3bc205412" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/9caf304153dc2288e4970caec6f1f3b3bc205412", + "reference": "9caf304153dc2288e4970caec6f1f3b3bc205412", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "phpunit/phpunit": "^4.8|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD" + ], + "authors": [ + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "http://www.vancelucas.com" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "homepage": "http://github.com/vlucas/phpdotenv", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "time": "2015-12-29T15:10:30+00:00" + } + ], + "packages-dev": [ + { + "name": "fzaninotto/faker", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/fzaninotto/Faker.git", + "reference": "fb218ada627f7c750c6e0e41cae486d2db48e911" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/fb218ada627f7c750c6e0e41cae486d2db48e911", + "reference": "fb218ada627f7c750c6e0e41cae486d2db48e911", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "ext-intl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7", + "squizlabs/php_codesniffer": "^1.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "time": "2019-04-16T09:48:34+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": { + "graham-campbell/markdown": 20, + "microweber-templates/dream": 20, + "microweber-templates/liteness": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "platform-overrides": { + "php": "5.6.4" + } +} diff --git a/update/src/Microweber/App/LoginAttempt.php b/update/src/Microweber/App/LoginAttempt.php deleted file mode 100644 index 04f39667..00000000 --- a/update/src/Microweber/App/LoginAttempt.php +++ /dev/null @@ -1,11 +0,0 @@ -app->content_manager->get_by_url($page_url); $page_exact = $this->app->content_manager->get_by_url($page_url, true); + //dd($page,$page_exact,$page_url); $page_url_segment_1 = $this->app->url_manager->segment(0, $page_url); if ($preview_module != false) { $page_url = $preview_module; @@ -1392,12 +1393,15 @@ public function frontend() } if ($page_exact == false and $found_mod == false and $this->app->modules->is_installed($page_url) and $page_url != 'settings' and $page_url != 'admin') { - $found_mod = true; - - } + if(!$page_exact and !$page and stristr($page_url,'index.php')){ + // prevent loading of non exisitng page at index.php/somepage + $response = \Response::make('Error 404 The webpage cannot be found'); + $response->setStatusCode(404); + return $response; + } // if ($found_mod == false) { if (empty($page)) { @@ -1751,6 +1755,13 @@ public function frontend() if (defined('CATEGORY_ID')) { $category = $this->app->category_manager->get_by_id(CATEGORY_ID); } + if ($is_editmode == true and !defined('IN_EDIT')) { + define('IN_EDIT', true); + } + + if (isset($is_quick_edit) and $is_quick_edit == true and !defined('QUICK_EDIT')) { + define('QUICK_EDIT', true); + } if ($render_file) { $render_params = array(); @@ -1821,13 +1832,7 @@ public function frontend() } $modify_content = event_trigger('on_load', $content); - if ($is_editmode == true and !defined('IN_EDIT')) { - define('IN_EDIT', true); - } - if (isset($is_quick_edit) and $is_quick_edit == true and !defined('QUICK_EDIT')) { - define('QUICK_EDIT', true); - } $l = $this->app->parser->process($l, $options = false); diff --git a/update/src/Microweber/Controllers/InstallController.php b/update/src/Microweber/Controllers/InstallController.php deleted file mode 100644 index 045634bf..00000000 --- a/update/src/Microweber/Controllers/InstallController.php +++ /dev/null @@ -1,505 +0,0 @@ -app)) { - if (is_object($app)) { - $this->app = $app; - } else { - $this->app = mw(); - } - } - } - - public function index($input = null) - { - if (!is_array($input) || empty($input)) { - $input = Input::all(); - } - $is_installed = mw_is_installed(); - if ($is_installed) { - return 'Microweber is already installed!'; - } - - $allowed_configs = array('database', 'microweber'); - - - $env = $this->app->environment(); - - $view = MW_PATH . 'Views/install.php'; - - $install_step = null; - if (isset($input['install_step'])) { - $install_step = trim($input['install_step']); - - } - - $connection = Config::get('database.connections'); - - $this->log('Preparing to install'); - if (isset($input['make_install'])) { - $config_only = false; - if (isset($input['config_only']) and $input['config_only']) { - $config_only = true; - } - if (!isset($input['db_pass'])) { - $input['db_pass'] = ''; - } - if (!isset($input['table_prefix'])) { - $input['table_prefix'] = ''; - } - - if (is_numeric(substr($input['table_prefix'], 0, 1)) - ) { - $input['table_prefix'] = 'p' . $input['table_prefix']; - } - - $input['table_prefix'] = str_replace(':', '', $input['table_prefix']); - - - $errors = array(); - if (!isset($input['db_host'])) { - $errors[] = 'Parameter "db_host" is required'; - } else { - $input['db_host'] = trim($input['db_host']); - } - if (!isset($input['db_name'])) { - $errors[] = 'Parameter "db_name" is required'; - } else { - $input['db_name'] = trim($input['db_name']); - } - if (!isset($input['db_user'])) { - $errors[] = 'Parameter "db_user" is required'; - } else { - $input['db_user'] = trim($input['db_user']); - } - - if (!empty($errors)) { - return implode("\n", $errors); - } - if (isset($input['db_driver'])) { - $dbDriver = $input['db_driver']; - } else { - $dbDriver = 'mysql'; - } - - - Config::set('database.default', $dbDriver); - if ($dbDriver == 'sqlite') { - if (isset($input['db_name_sqlite'])) { - $input['db_name'] = $input['db_name_sqlite']; - $input['db_name'] = str_replace(':.', '.', $input['db_name']); - } - Config::set("database.connections.$dbDriver.database", $input['db_name']); - if (!file_exists($input['db_name'])) { - touch($input['db_name']); - } - } - - Config::set("database.connections.$dbDriver.host", $input['db_host']); - Config::set("database.connections.$dbDriver.username", $input['db_user']); - Config::set("database.connections.$dbDriver.password", $input['db_pass']); - Config::set("database.connections.$dbDriver.database", $input['db_name']); - Config::set("database.connections.$dbDriver.prefix", $input['table_prefix']); - - if (defined('MW_VERSION')) { - Config::set('microweber.version', MW_VERSION); - } - - if (isset($input['default_template']) and $input['default_template'] != false) { - Config::set('microweber.install_default_template', $input['default_template']); - } - if (isset($input['with_default_content']) and $input['with_default_content'] != false) { - Config::set('microweber.install_default_template_content', 1); - } - - if (!isset($input['developer_mode'])) { - Config::set('microweber.compile_assets', 1); - } - if (isset($input['clean_pre_configured'])) { - Config::set('microweber.pre_configured', null); - Config::set('microweber.pre_configured_input', null); - } - - if (isset($input['admin_url'])) { - Config::set('microweber.admin_url', $input['admin_url']); - } - - if (isset($input['site_lang'])) { - Config::set('microweber.site_lang', $input['site_lang']); - } - - if (Config::get('app.key') == 'YourSecretKey!!!') { - if (!is_cli()) { - $_SERVER['argv'] = array(); - } - $this->log('Generating key'); - /*if ($this->_can_i_use_artisan_key_generate_command()) { - Artisan::call('key:generate', [ - '--force' => true, - ]); - }*/ - $fallback_key = str_random(32); - $fallback_key_str = 'base64:' . base64_encode($fallback_key); - Config::set('app.key', $fallback_key_str); - $allowed_configs[] = 'app'; - } - - $this->log('Saving config'); - Config::save($allowed_configs); - Cache::flush(); - - if ($config_only) { - Config::set('microweber.pre_configured', 1); - Config::set('microweber.pre_configured_input', $input); - } else { - - - try { - DB::connection()->getPdo(); - } catch (\Exception $e) { - $this->log("error"); - - // return ("Error: Could not connect to the database. Please check your configuration. Error: " . $e->getMessage() .' on ' . $e->getLine() . " – " . $e->getFile() ); - return ("Error: Could not connect to the database. Please check your configuration. " . $e->getMessage()); - } - - - try { - DB::connection($dbDriver)->getDatabaseName(); - } catch (\Exception $e) { - $this->log('Error in database connection'); - return 'Error: ' . $e->getMessage() . "\n"; - } - - - $install_finished = false; - try { - DB::connection($dbDriver)->getDatabaseName(); - } catch (\PDOException $e) { - return 'Error: ' . $e->getMessage() . "\n"; - } catch (\Exception $e) { - return 'Error: ' . $e->getMessage() . "\n"; - } - - if (function_exists('set_time_limit')) { - @set_time_limit(0); - } - - if (!$install_step or $install_step == 1) { - $this->log('Setting up database'); - $installer = new Install\DbInstaller(); - $installer->logger = $this; - $installer->run(); - } - - - if (!$install_step or $install_step == 2) { - $installer = new Install\WebserverInstaller(); - $installer->run(); - } - - - if (!$install_step or $install_step == 3) { - $this->log('Setting up modules'); - $installer = new Install\ModulesInstaller(); - $installer->logger = $this; - $installer->run(); - } - - if (!$install_step or $install_step == 4) { - $this->log('Setting up template'); - $installer = new Install\TemplateInstaller(); - $installer->logger = $this; - $installer->run(); - } - if (!$install_step or $install_step == 5) { - $this->log('Setting up default options'); - $installer = new Install\DefaultOptionsInstaller(); - if (isset($input['site_lang'])) { - $installer->setLanguage($input['site_lang']); - } - $installer->run(); - } - - if (!$install_step or $install_step == 6) { - $this->log('Setting up modules after template install'); - $installer = new Install\ModulesInstaller(); - $installer->logger = $this; - $installer->run(); - } - - if ($install_step) { - if ($install_step != 'finalize') { - $install_step_return = array('install_step' => $install_step + 1); - if ($install_step == 6) { - if (isset($input['admin_email']) and isset($input['subscribe_for_update_notification'])) { - $this->reportInstall($input['admin_email'], $input['subscribe_for_update_notification']); - } - $install_step_return['finalize'] = true; - $install_step_return['install_step'] = 'finalize'; - } - - return $install_step_return; - } - } elseif (!$install_step) { - if (isset($input['admin_email']) and isset($input['subscribe_for_update_notification'])) { - $this->reportInstall($input['admin_email'], $input['subscribe_for_update_notification']); - } - } - - - if (isset($input['admin_password']) && strlen($input['admin_password'])) { - if (isset($input['admin_email']) or isset($input['admin_username'])) { - if (!isset($input['admin_username'])) { - $input['admin_username'] = 'admin'; - } - if (!isset($input['admin_email'])) { - $input['admin_email'] = 'noreply@localhost'; - } - - $this->log('Adding admin user'); - - $adminUser = new \User(); - $adminUser->username = $input['admin_username']; - $adminUser->email = $input['admin_email']; - $adminUser->password = $input['admin_password']; - $adminUser->is_admin = 1; - $adminUser->is_active = 1; - $adminUser->save(); - $admin_user_id = $adminUser->id; - Config::set('microweber.has_admin', 1); - } - } - - $this->log('Saving ready config'); - - Config::set('microweber.is_installed', 1); - - } - - - Config::save($allowed_configs); - - if (Config::get('microweber.has_admin') and !is_cli() and isset($admin_user_id)) { - mw()->user_manager->make_logged($admin_user_id); - } - - event_trigger('mw.install.complete', $input); - - return 'done'; - } - - $layout = new View($view); - - $defaultDbEngine = Config::get('database.default'); - - if (!$defaultDbEngine) { - $defaultDbEngine = 'mysql'; - } - if (extension_loaded('pdo_sqlite')) { - // $defaultDbEngine = 'sqlite'; - } - - $dbEngines = Config::get('database.connections'); - - if (!$dbEngines) { - $dbEngines = json_decode('{"sqlite":{"driver":"sqlite","database":"","prefix":""},"mysql":{"driver":"mysql","host":"localhost","database":"forge","username":"forge","password":"","charset":"utf8","collation":"utf8_unicode_ci","prefix":"","strict":false},"pgsql":{"driver":"pgsql","host":"localhost","database":"forge","username":"forge","password":"","charset":"utf8","prefix":"","schema":"public"},"sqlsrv":{"driver":"sqlsrv","host":"localhost","database":"database","username":"root","password":"","prefix":""}}', true); - } - foreach ($dbEngines as $driver => $v) { - if (!extension_loaded("pdo_$driver") and isset($dbEngines[$driver])) { - unset($dbEngines[$driver]); - } - } - if (!isset($dbEngines[$defaultDbEngine])) { - $dbEngines[$defaultDbEngine] = false; - } - - $config = array(); - if (isset($dbEngines[$defaultDbEngine]) and is_array($dbEngines[$defaultDbEngine])) { - $config = $dbEngines[$defaultDbEngine]; - } - $viewData = [ - 'config' => $config, - 'dbDefaultEngine' => $defaultDbEngine, - 'dbEngines' => array_keys($dbEngines), - 'dbEngineNames' => [ - 'mysql' => 'MySQL', - 'sqlite' => 'SQLite', - 'sqlsrv' => 'Microsoft SQL Server', - 'pgsql' => 'PostgreSQL', - ], - ]; - - $domain = false; - if (isset($_SERVER['HTTP_HOST'])) { - $domain = $_SERVER['HTTP_HOST']; - $domain = str_replace('www.', '', $domain); - $domain = str_replace('.', '_', $domain); - $domain = str_replace('-', '_', $domain); - $domain = substr($domain, 0, 10); - } - - if ((!isset($viewData['config']['prefix']) or !$viewData['config']['prefix']) and $domain) { - $pre = $domain; - if (is_numeric(substr($pre, 0, 1))) { - $pre = 'p' . $pre; - } - $viewData['config']['prefix'] = $pre . '_'; - } - if (extension_loaded('pdo_sqlite') and $domain) { - $sqlite_path = normalize_path(storage_path() . DS . $domain . '.sqlite', false); - $viewData['config']['db_name_sqlite'] = $sqlite_path; - } - if (Config::get('microweber.pre_configured')) { - $viewData['pre_configured'] = Config::get('microweber.pre_configured'); - if (Config::get('microweber.pre_configured_input') and is_array(Config::get('microweber.pre_configured_input'))) { - $viewData['config'] = array_merge($viewData['config'], Config::get('microweber.pre_configured_input')); - } - } - $layout->set($viewData); - - $is_installed = mw_is_installed(); - if ($is_installed) { - App::abort(403, 'Unauthorized action. Microweber is already installed.'); - } - - $layout->assign('done', $is_installed); - $layout = $layout->__toString(); - Cache::flush(); - return $layout; - } - - private function reportInstall($email, $sendMail = false) - { - $um = new \Microweber\Providers\UpdateManager(app()); - $data = $um->collect_local_data(); - if ($sendMail) { - $data['email'] = $email; - } - $postData = array(); - $postData['postdata'] = base64_encode(@json_encode($data)); - $http = new \Microweber\Utils\Http(app()); - - try { - $http->url('http://installreport.services.microweberapi.com')->set_timeout(10)->post($postData); - } catch (\Exception $e) { - //maybe internet connection problem - } - - } - - public function log($text) - { - $log_file = userfiles_path() . 'install_log.txt'; - if (!is_file($log_file)) { - @touch($log_file); - } - - if ($this->command_line_logger and is_object($this->command_line_logger) and method_exists($this->command_line_logger, 'info')) { - $this->command_line_logger->info($text); - } - if (is_file($log_file)) { - $json = array('date' => date('H:i:s'), 'msg' => $text); - - if ($text == 'done' or $text == 'Preparing to install') { - @file_put_contents($log_file, $text . "\n"); - } else { - @file_put_contents($log_file, $text . "\n", FILE_APPEND); - } - } - } - - - private function _can_i_use_artisan_key_generate_command() - { - $yes_i_can = true; - if (!$this->_is_escapeshellarg_available()) { - $yes_i_can = false; - } - - if (!$this->_is_putenv_available()) { - $yes_i_can = false; - } - - - if (!$this->_is_shell_exec_available()) { - $yes_i_can = false; - } - - - if (!file_exists(base_path() . DIRECTORY_SEPARATOR . '.env')) { - $yes_i_can = false; - } - $basedir = @ini_get('open_basedir'); - if ($basedir) { - $yes_i_can = false; - } - - if (!is_writable(base_path() . DIRECTORY_SEPARATOR . '.env')) { - $yes_i_can = false; - } - - return $yes_i_can; - - } - - private function _is_escapeshellarg_available() - { - - return php_can_use_func('escapeshellarg'); - - - } - - private function _is_putenv_available() - { - - - return php_can_use_func('putenv'); - } - - - private function _is_shell_exec_available() - { - - - $available = true; - if (ini_get('safe_mode')) { - $available = false; - } else { - $d = ini_get('disable_functions'); - $s = ini_get('suhosin.executor.func.blacklist'); - - - if ("$d$s") { - $array = preg_split('/,\s*/', "$d,$s"); - if (in_array('shell_exec', $array)) { - $available = false; - } - if (in_array('exec', $array)) { - $available = false; - } - } - } - - return $available; - } -} diff --git a/update/src/Microweber/Controllers/JsCompileController.php b/update/src/Microweber/Controllers/JsCompileController.php deleted file mode 100644 index eed3309a..00000000 --- a/update/src/Microweber/Controllers/JsCompileController.php +++ /dev/null @@ -1,359 +0,0 @@ -app)) { - if (is_object($app)) { - $this->app = $app; - } else { - $this->app = mw(); - } - } - } - - - public function apijs() - { - if (!defined('MW_NO_SESSION')) { - define('MW_NO_SESSION', 1); - } - - $ref_page = false; - if (isset($_REQUEST['id'])) { - $ref_page = $this->app->content_manager->get_by_id($_REQUEST['id']); - } elseif (isset($_SERVER['HTTP_REFERER'])) { - $ref_page = $_SERVER['HTTP_REFERER']; - if ($ref_page != '') { - $ref_page = $this->app->content_manager->get_by_url($ref_page); - $page_id = $ref_page['id']; - } - } - if (isset($_SERVER['HTTP_REFERER'])) { - $cat_url = mw()->category_manager->get_category_id_from_url($_SERVER['HTTP_REFERER']); - if ($cat_url != false) { - if (!defined('CATEGORY_ID')) { - define('CATEGORY_ID', intval($cat_url)); - } - } - } - $file = mw_includes_path() . 'api' . DS . 'api.js'; - - $last_modified_time = $lastModified = filemtime($file); - - $ifModifiedSince = (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false); - $etagHeader = (isset($_SERVER['HTTP_IF_NONE_MATCH']) ? trim($_SERVER['HTTP_IF_NONE_MATCH']) : false); - if (defined('MW_VERSION')) { - $etag = md5(filemtime($file) . MW_VERSION); - } else { - $etag = filemtime($file); - } - - $this->app->content_manager->define_constants($ref_page); - $l = new \Microweber\View($file); - - $l = $l->__toString(); - $l = str_replace('{SITE_URL}', $this->app->url_manager->site(), $l); - $l = str_replace('{MW_SITE_URL}', $this->app->url_manager->site(), $l); - $l = str_replace('%7BSITE_URL%7D', $this->app->url_manager->site(), $l); - - - - $compile_assets = \Config::get('microweber.compile_assets'); - if ($compile_assets and defined('MW_VERSION')) { - $l = $this->minify_js($l); - - $userfiles_dir = userfiles_path(); - $hash = md5(site_url()); - $userfiles_cache_dir = normalize_path($userfiles_dir . 'cache' . DS . 'apijs'); - $userfiles_cache_filename = $userfiles_cache_dir . 'api.' . $hash . '.' . MW_VERSION . '.js'; - if (!is_file($userfiles_cache_filename)) { - if (!is_dir($userfiles_cache_dir)) { - mkdir_recursive($userfiles_cache_dir); - } - if (is_dir($userfiles_cache_dir)) { - @file_put_contents($userfiles_cache_filename, $l); - } - } else { - $fmd5 = md5_file($userfiles_cache_filename); - $fmd = md5($l); - if ($fmd5 != $fmd) { - @file_put_contents($userfiles_cache_filename, $l); - } - } - } - $response = \Response::make($l); - $response->header('Content-Type', 'application/javascript'); - if (!$this->app->make('config')->get('app.debug')) { - // enable caching if in not in debug mode - $response->header('Etag', $etag); - $response->header('Last-Modified', gmdate('D, d M Y H:i:s', $last_modified_time) . ' GMT'); - $response->setTtl(30); - } - - return $response; - } - - - public function apijs_settings() - { - if (!defined('MW_NO_SESSION')) { - define('MW_NO_SESSION', 1); - } - $lastModified = time() - 120; - $etagFile = md5(serialize($_REQUEST)); - $ifModifiedSince = (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false); - - //get the HTTP_IF_NONE_MATCH header if set (etag: unique file hash) - $etagHeader = (isset($_SERVER['HTTP_IF_NONE_MATCH']) ? trim($_SERVER['HTTP_IF_NONE_MATCH']) : false); - - //set last-modified header - // header("Last-Modified: " . gmdate("D, d M Y H:i:s", $lastModified) . " GMT"); - // header('Cache-Control: public'); - // header("Etag: $etagFile"); - - if (@strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == $lastModified || $etagHeader == $etagFile) { - // header("HTTP/1.1 304 Not Modified"); - // return; - // exit; - } - - $ref_page = false; - - if (isset($_REQUEST['id'])) { - $ref_page = $this->app->content_manager->get_by_id($_REQUEST['id']); - } elseif (isset($_SERVER['HTTP_REFERER'])) { - $ref_page = $_SERVER['HTTP_REFERER']; - if ($ref_page != '') { - $ref_page = $this->app->content_manager->get_by_url($ref_page); - $page_id = $ref_page['id']; - } - } - - $cat_url = false; - if (isset($_REQUEST['category_id'])) { - $cat_url = intval($_REQUEST['category_id']); - } elseif (isset($_SERVER['HTTP_REFERER'])) { - $cat_url = mw()->category_manager->get_category_id_from_url($_SERVER['HTTP_REFERER']); - $cat_url = intval($cat_url); - } - - if ($cat_url != false) { - if (!defined('CATEGORY_ID')) { - define('CATEGORY_ID', intval($cat_url)); - } - } - - // header("Content-type: text/javascript"); - - $file = mw_includes_path() . 'api' . DS . 'api_settings.js'; - - $this->app->content_manager->define_constants($ref_page); - $l = new \Microweber\View($file); - - $l = $l->__toString(); - - $compile_assets = \Config::get('microweber.compile_assets'); - if ($compile_assets and defined('MW_VERSION')) { - $l = $this->minify_js($l); - - $userfiles_dir = userfiles_path(); - $userfiles_cache_dir = normalize_path($userfiles_dir . 'cache' . DS . 'apijs'); - $userfiles_cache_filename = $userfiles_cache_dir . 'api_settings.' . md5(site_url() . template_dir()) . '.' . MW_VERSION . '.js'; - if (!is_file($userfiles_cache_filename)) { - if (!is_dir($userfiles_cache_dir)) { - mkdir_recursive($userfiles_cache_dir); - } - if (is_dir($userfiles_cache_dir)) { - @file_put_contents($userfiles_cache_filename, $l); - } - } else { - $fmd5 = md5_file($userfiles_cache_filename); - $fmd = md5($l); - if ($fmd5 != $fmd) { - @file_put_contents($userfiles_cache_filename, $l); - } - } - } - - $response = \Response::make($l); - - $response->header('Content-Type', 'application/javascript'); - return $response; - - } - - - public function apijs_liveedit() - { - if (!defined('MW_NO_SESSION')) { - define('MW_NO_SESSION', 1); - } - - $file = mw_includes_path() . 'api' . DS . 'liveedit.js'; - - $last_modified_time = $lastModified = filemtime($file); - - $ifModifiedSince = (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false); - $etagHeader = (isset($_SERVER['HTTP_IF_NONE_MATCH']) ? trim($_SERVER['HTTP_IF_NONE_MATCH']) : false); - if (defined('MW_VERSION')) { - $etag = md5(filemtime($file) . MW_VERSION); - } else { - $etag = filemtime($file); - } - - - $l = new \Microweber\View($file); - - $l = $l->__toString(); - $l = str_replace('{SITE_URL}', $this->app->url_manager->site(), $l); - $l = str_replace('{MW_SITE_URL}', $this->app->url_manager->site(), $l); - $l = str_replace('%7BSITE_URL%7D', $this->app->url_manager->site(), $l); - - - - - - - $compile_assets = \Config::get('microweber.compile_assets'); - if ($compile_assets and defined('MW_VERSION')) { - $l = $this->minify_js($l); - - $userfiles_dir = userfiles_path(); - $hash = md5(site_url()); - $userfiles_cache_dir = normalize_path($userfiles_dir . 'cache' . DS . 'apijs'); - $userfiles_cache_filename = $userfiles_cache_dir . 'api.liveedit.' . $hash . '.' . MW_VERSION . '.js'; - if (!is_file($userfiles_cache_filename)) { - if (!is_dir($userfiles_cache_dir)) { - mkdir_recursive($userfiles_cache_dir); - } - if (is_dir($userfiles_cache_dir)) { - @file_put_contents($userfiles_cache_filename, $l); - } - } else { - $fmd5 = md5_file($userfiles_cache_filename); - $fmd = md5($l); - if ($fmd5 != $fmd) { - @file_put_contents($userfiles_cache_filename, $l); - } - } - } - - $response = \Response::make($l); - $response->header('Content-Type', 'application/javascript'); - if (!$this->app->make('config')->get('app.debug')) { - // enable caching if in not in debug mode - $response->header('Etag', $etag); - $response->header('Last-Modified', gmdate('D, d M Y H:i:s', $last_modified_time) . ' GMT'); - $response->setTtl(30); - } - - return $response; - } - - - public function get_apijs_url() - { - - - $url = $this->app->url_manager->site('apijs') . '?mwv=' . MW_VERSION; - $compile_assets = \Config::get('microweber.compile_assets'); - if ($compile_assets and defined('MW_VERSION')) { - $userfiles_dir = userfiles_path(); - $userfiles_cache_dir = normalize_path($userfiles_dir . 'cache' . DS . 'apijs' . DS); - $hash = md5(site_url()); - $userfiles_cache_filename = $userfiles_cache_dir . 'api.' . $hash . '.' . MW_VERSION . '.js'; - if (is_file($userfiles_cache_filename)) { - $url = userfiles_url() . 'cache/apijs/' . 'api.' . $hash . '.' . MW_VERSION . '.js'; - } - } - - return $url; - } - - - public function get_apijs_settings_url() - { - $url = $this->app->url_manager->site('apijs_settings') . '?mwv=' . MW_VERSION;; - $compile_assets = \Config::get('microweber.compile_assets'); - if ($compile_assets and defined('MW_VERSION')) { - $userfiles_dir = userfiles_path(); - $file = mw_includes_path() . 'api' . DS . 'api_settings.js'; - $mtime = false; - if (is_file($file)) { - $mtime = filemtime($file); - } - - $userfiles_cache_dir = normalize_path($userfiles_dir . 'cache' . DS . 'apijs' . DS); - $fn = 'api_settings.' . md5(site_url() . template_dir() . $mtime) . '.' . MW_VERSION . '.js'; - $userfiles_cache_filename = $userfiles_cache_dir . $fn; - if (is_file($userfiles_cache_filename)) { - if (is_file($userfiles_cache_filename)) { - $url = userfiles_url() . 'cache/apijs/' . $fn; - } - } - } - - return $url; - } - - - public function get_liveeditjs_url() - { - $url = $this->app->url_manager->site('apijs_liveedit') . '?mwv=' . MW_VERSION;; - $compile_assets = \Config::get('microweber.compile_assets'); - if ($compile_assets and defined('MW_VERSION')) { - $userfiles_dir = userfiles_path(); - $file = mw_includes_path() . 'api' . DS . 'liveedit.js'; - $mtime = false; - if (is_file($file)) { - $mtime = filemtime($file); - } - - $userfiles_cache_dir = normalize_path($userfiles_dir . 'cache' . DS . 'apijs' . DS); - $fn = 'api.liveedit.' . md5(site_url() . template_dir() . $mtime) . '.' . MW_VERSION . '.js'; - $userfiles_cache_filename = $userfiles_cache_dir . $fn; - if (is_file($userfiles_cache_filename)) { - if (is_file($userfiles_cache_filename)) { - $url = userfiles_url() . 'cache/apijs/' . $fn; - } - } - } - - return $url; - } - - - public function minify_js($layout) - { - $optimize_asset_loading = get_option('optimize_asset_loading', 'website'); - if ($optimize_asset_loading == 'y') { - $minifier = normalize_path(MW_PATH . 'Utils/lib/JShrink/Minifier.php', false); - if (is_file($minifier)) { - include_once $minifier; - - - $layout = \JShrink\Minifier::minify($layout); - - } - } - return $layout; - } - -} \ No newline at end of file diff --git a/update/src/Microweber/Install/DefaultOptionsInstaller.php b/update/src/Microweber/Install/DefaultOptionsInstaller.php deleted file mode 100644 index f657af7b..00000000 --- a/update/src/Microweber/Install/DefaultOptionsInstaller.php +++ /dev/null @@ -1,156 +0,0 @@ -setDefault(); - $this->setCommentsEnabled(); - $this->setShippingEnabled(); - $this->setPaymentsEnabled(); - } catch (\PDOException $e) { - return false; - } - return true; - } - - public function setDefault() - { - $existing = DB::table('options')->where('option_key', 'website_title') - ->where('option_group', 'website')->first(); - if ($existing == false) { - $option = new Option(); - $option->option_key = 'website_title'; - $option->option_group = 'website'; - $option->option_value = 'Microweber'; - $option->is_system = 1; - $option->save(); - } - - } - - public function setLanguage($language) - { - $existing = Option::where('option_key', 'language')->where('option_group', 'website')->first(); - if ($existing) { - $existing->option_value = $language; - $existing->save(); - } else { - $option = new Option(); - $option->option_key = 'language'; - $option->option_group = 'website'; - $option->option_value = $language; - $option->is_system = 1; - $option->save(); - } - } - - public function setCommentsEnabled() - { - $existing = DB::table('options')->where('option_key', 'enable_comments') - ->where('option_group', 'comments')->count(); - - if ($existing == false) { - $save = array( - 'option_key' => 'enable_comments', - 'option_group' => 'comments', - 'option_value' => 'y' - ); - $engine = mw()->database_manager->get_sql_engine(); - if ($engine == 'pgsql') { - // PQSQL has error Unique violation: 7 ERROR: duplicate key value violates unique constraint .... :( - $highestId = DB::table('options')->select(DB::raw('MAX(id)'))->first(); - $save['id'] = $highestId->max + 1; - } - DB::table('options')->insert($save); - } - } - - public function setShippingEnabled() - { - $existing = DB::table('options')->where('option_key', 'shipping_gw_shop/shipping/gateways/country') - ->where('option_group', 'shipping')->first(); - if ($existing == false) { - $save = array( - 'option_key' => 'shipping_gw_shop/shipping/gateways/country', - 'option_group' => 'shipping', - 'option_value' => 'y' - ); - $engine = mw()->database_manager->get_sql_engine(); - if ($engine == 'pgsql') { - $highestId = DB::table('options')->select(DB::raw('MAX(id)'))->first(); - $save['id'] = $highestId->max + 1; - } - DB::table('options')->insert($save); - } - - - $existing = DB::table('cart_shipping')->where('shipping_country', 'Worldwide')->first(); - - if ($existing == false) { - $save = array( - 'shipping_country' => 'Worldwide', - 'shipping_type' => 'fixed', - 'is_active' => 1, - 'shipping_cost' => 0 - ); - $engine = mw()->database_manager->get_sql_engine(); - if ($engine == 'pgsql') { - $highestId = DB::table('cart_shipping')->select(DB::raw('MAX(id)'))->first(); - $save['id'] = $highestId->max + 1; - } - DB::table('cart_shipping')->insert($save); - } - - } - - public function setPaymentsEnabled() - { - - - $existing = DB::table('options')->where('option_key', 'payment_gw_shop/payments/gateways/paypal') - ->where('option_group', 'payments')->first(); - - - if ($existing == false) { - $save = array( - 'option_key' => 'payment_gw_shop/payments/gateways/paypal', - 'option_group' => 'payments', - 'option_value' => 1 - ); - $engine = mw()->database_manager->get_sql_engine(); - if ($engine == 'pgsql') { - $highestId = DB::table('options')->select(DB::raw('MAX(id)'))->first(); - $save['id'] = $highestId->max + 1; - } - DB::table('options')->insert($save); - } - - - $existing = DB::table('options')->where('option_key', 'currency') - ->where('option_group', 'payments')->first(); - - - if ($existing == false) { - $save = array( - 'option_key' => 'currency', - 'option_group' => 'payments', - 'option_value' => 'USD' - ); - $engine = mw()->database_manager->get_sql_engine(); - if ($engine == 'pgsql') { - $highestId = DB::table('options')->select(DB::raw('MAX(id)'))->first(); - $save['id'] = $highestId->max + 1; - } - DB::table('options')->insert($save); - } - - } -} diff --git a/update/src/Microweber/Install/Schema/Base.php b/update/src/Microweber/Install/Schema/Base.php deleted file mode 100644 index 8717b3a0..00000000 --- a/update/src/Microweber/Install/Schema/Base.php +++ /dev/null @@ -1,181 +0,0 @@ - 'dateTime', - 'created_at' => 'dateTime', - 'expires_on' => 'dateTime', - 'created_by' => 'integer', - 'edited_by' => 'integer', - 'name' => 'text', - 'parent_id' => 'integer', - 'module_id' => 'text', - 'module' => 'text', - 'description' => 'text', - 'icon' => 'text', - 'author' => 'text', - 'website' => 'text', - 'help' => 'text', - 'type' => 'text', - 'installed' => 'integer', - 'ui' => 'integer', - 'position' => 'integer', - 'as_element' => 'integer', - 'allow_caching' => 'integer', - 'ui_admin' => 'integer', - 'ui_admin_iframe' => 'integer', - 'is_system' => 'integer', - 'version' => 'string', - 'notifications' => 'integer', - 'settings' => 'text', - 'categories' => 'text', - - ]; - - return [ - 'modules' => $modulesSchema, - - 'elements' => array_merge($modulesSchema, ['layout_type' => 'string']), - - 'module_templates' => [ - 'updated_at' => 'dateTime', - 'created_at' => 'dateTime', - 'created_by' => 'integer', - 'edited_by' => 'integer', - 'module_id' => 'text', - 'name' => 'text', - 'module' => 'text', - 'module_attrs' => 'text', - ], - - 'system_licenses' => [ - 'updated_at' => 'dateTime', - 'created_at' => 'dateTime', - 'created_by' => 'integer', - 'edited_by' => 'integer', - 'rel_type' => 'text', - 'rel_id' => 'text', - 'local_key' => 'text', - 'local_key_hash' => 'text', - 'registered_name' => 'text', - 'company_name' => 'text', - 'domains' => 'text', - 'status' => 'text', - 'product_id' => 'integer', - 'service_id' => 'integer', - 'billing_cycle' => 'text', - 'reg_on' => 'dateTime', - 'due_on' => 'dateTime', - ], - - 'users' => [ - 'updated_at' => 'dateTime', - 'created_at' => 'dateTime', - 'expires_on' => 'dateTime', - 'last_login' => 'dateTime', - 'last_login_ip' => 'string', - 'created_by' => 'integer', - 'edited_by' => 'integer', - 'username' => 'string', - 'password' => 'string', - 'email' => 'string', - 'remember_token' => 'string', - 'is_active' => 'integer', - 'is_admin' => 'integer', - 'is_verified' => 'integer', - 'is_public' => 'integer', - 'basic_mode' => 'string', - 'first_name' => 'string', - 'middle_name' => 'string', - 'last_name' => 'string', - 'thumbnail' => 'string', - 'parent_id' => 'integer', - 'api_key' => 'string', - 'user_information' => 'text', - 'subscr_id' => 'string', - 'role' => 'string', - 'medium' => 'string', - 'oauth_uid' => 'string', - 'oauth_provider' => 'string', - 'oauth_token' => 'text', - 'oauth_token_secret' => 'text', - 'profile_url' => 'string', - 'website_url' => 'string', - 'password_reset_hash' => 'string', - '$index' => ['username', 'email'], - ], - - 'users_oauth' => [ - 'user_id' => 'integer', - 'provider' => 'string', - 'data_id' => 'string', - 'data_name' => 'string', - 'data_email' => 'string', - 'data_token' => 'string', - 'data_avatar' => 'string', - 'data_raw' => 'string', - ], - - 'login_attempts' => [ - 'user_id' => 'integer', - 'username' => 'string', - 'email' => 'string', - 'ip' => 'string', - 'success' => 'integer', - 'time' => 'string', - ], - - 'log' => [ - 'updated_at' => 'dateTime', - 'created_at' => 'dateTime', - 'created_by' => 'integer', - 'edited_by' => 'integer', - 'rel_type' => 'text', - 'rel_id' => 'text', - 'position' => 'integer', - 'field' => 'text', - 'value' => 'text', - 'module' => 'text', - 'data_type' => 'text', - 'title' => 'text', - 'description' => 'text', - 'content' => 'text', - 'user_ip' => 'text', - 'session_id' => 'text', - 'is_system' => 'string', - ], - - 'notifications' => [ - 'updated_at' => 'dateTime', - 'created_at' => 'dateTime', - 'created_by' => 'integer', - 'edited_by' => 'integer', - 'rel_id' => 'string', - 'rel_type' => 'string', - 'notif_count' => 'integer', - 'is_read' => 'integer', - 'is_mail_sent' => 'integer', - 'module' => 'text', - 'title' => 'text', - 'description' => 'text', - 'content' => 'text', - 'notification_data' => 'text', - ], - 'terms_accept_log' => [ - 'updated_at' => 'dateTime', - 'created_at' => 'dateTime', - 'created_by' => 'integer', - 'edited_by' => 'integer', - 'tos_name' => 'string', - 'user_email' => 'string', - 'user_id' => 'integer', - 'user_ip' => 'text', - ], - ]; - } -} diff --git a/update/src/Microweber/Install/Schema/Content.php b/update/src/Microweber/Install/Schema/Content.php new file mode 100644 index 00000000..d2e9d1d5 --- /dev/null +++ b/update/src/Microweber/Install/Schema/Content.php @@ -0,0 +1,225 @@ + [ + + 'content_type' => 'string', + 'subtype' => 'string', + 'url' => 'text', + + 'title' => 'text', + 'parent' => 'integer', + 'description' => 'text', + 'position' => 'integer', + 'content' => 'longText', + 'content_body' => 'longText', + 'is_active' => array('type' => 'integer', 'default' => 1), + 'subtype_value' => 'string', + 'custom_type' => 'string', + 'custom_type_value' => 'string', + 'active_site_template' => 'string', + 'layout_file' => 'string', + 'layout_name' => 'string', + 'layout_style' => 'string', + 'content_filename' => 'string', + 'original_link' => 'string', + + 'is_home' => array('type' => 'integer', 'default' => 0), + 'is_pinged' => array('type' => 'integer', 'default' => 0), + 'is_shop' => array('type' => 'integer', 'default' => 0), + 'is_deleted' => array('type' => 'integer', 'default' => 0), + + 'require_login' => array('type' => 'integer', 'default' => 0), + 'status' => 'string', + 'content_meta_title' => 'text', + 'content_meta_keywords' => 'text', + + 'session_id' => 'string', + 'updated_at' => 'dateTime', + 'created_at' => 'dateTime', + 'expires_at' => 'dateTime', + + 'created_by' => 'integer', + + 'edited_by' => 'integer', + 'posted_at' => 'dateTime', + 'draft_of' => 'integer', + 'copy_of' => 'integer', + + '$index' => ['url' => 'title'], + ], + + 'content_data' => [ + 'updated_at' => 'dateTime', + 'created_at' => 'dateTime', + 'created_by' => 'integer', + 'edited_by' => 'integer', + 'content_id' => 'string', + 'field_name' => 'text', + 'field_value' => 'longText', + 'session_id' => 'string', + 'rel_type' => 'string', + 'rel_id' => 'string', + ], + + 'attributes' => [ + 'attribute_name' => 'text', + 'attribute_value' => 'longText', + 'rel_type' => 'string', + 'rel_id' => 'string', + 'attribute_type' => 'string', + 'session_id' => 'string', + 'updated_at' => 'dateTime', + 'created_at' => 'dateTime', + 'created_by' => 'integer', + 'edited_by' => 'integer', + ], + + 'content_fields' => [ + 'updated_at' => 'dateTime', + 'created_at' => 'dateTime', + 'created_by' => 'integer', + 'edited_by' => 'integer', + 'rel_type' => 'string', + + 'rel_id' => 'string', + 'field' => 'text', + 'value' => 'longText', + + '$index' => ['rel_type', 'rel_id'], + ], + + 'content_fields_drafts' => [ + 'updated_at' => 'dateTime', + 'created_at' => 'dateTime', + 'created_by' => 'integer', + 'edited_by' => 'integer', + 'rel_type' => 'string', + 'rel_id' => 'string', + 'field' => 'text', + 'value' => 'longText', + 'session_id' => 'string', + 'is_temp' => 'integer', + 'url' => 'longText', + '$index' => ['rel_type', 'rel_id'], + ], + + 'media' => [ + 'updated_at' => 'dateTime', + 'created_at' => 'dateTime', + 'created_by' => 'integer', + 'edited_by' => 'integer', + 'session_id' => 'string', + 'rel_type' => 'string', + + 'rel_id' => 'string', + 'media_type' => 'longText', + 'position' => 'integer', + 'title' => 'longText', + 'description' => 'text', + 'embed_code' => 'text', + 'filename' => 'text', + 'image_options' => 'text', + + '$index' => ['rel_type', 'rel_id', 'media_type'], + ], + + 'custom_fields' => [ + 'rel_type' => 'string', + 'rel_id' => 'text', + 'position' => 'integer', + 'type' => 'string', + 'name' => 'text', + 'name_key' => 'text', + 'placeholder' => 'text', + 'updated_at' => 'dateTime', + 'created_at' => 'dateTime', + 'created_by' => 'integer', + 'edited_by' => 'integer', + 'session_id' => 'string', + + 'options' => 'longText', + + 'is_active' => 'integer', + 'required' => 'integer', + 'copy_of_field' => 'integer', + + '$index' => ['rel_type', 'rel_id', 'type'], + ], + + 'custom_fields_values' => [ + 'custom_field_id' => 'integer', + + 'value' => 'text', + 'position' => 'integer', + + '$index' => ['custom_field_id', 'value'], + ], + + 'menus' => [ + 'title' => 'text', + 'item_type' => 'string', + 'parent_id' => 'integer', + 'content_id' => 'integer', + 'categories_id' => 'integer', + 'position' => 'integer', + 'updated_at' => 'dateTime', + 'created_at' => 'dateTime', + 'is_active' => 'integer', + 'auto_populate' => 'string', + 'description' => 'text', + 'url' => 'longText', + 'url_target' => 'string', + 'size' => 'text', + 'default_image' => 'longText', + 'rollover_image' => 'longText', + ], + + 'categories' => [ + 'updated_at' => 'dateTime', + 'created_at' => 'dateTime', + 'created_by' => 'integer', + 'edited_by' => 'integer', + 'data_type' => 'string', + 'title' => 'text', + 'url' => 'longText', + + 'parent_id' => 'integer', + 'description' => 'text', + 'content' => 'longText', + + 'rel_type' => 'string', + 'rel_id' => 'integer', + + 'position' => 'integer', + 'is_deleted' => array('type' => 'integer', 'default' => 0), + 'is_hidden' => array('type' => 'integer', 'default' => 0), + 'users_can_create_subcategories' => 'integer', + 'users_can_create_content' => 'integer', + 'users_can_create_content_allowed_usergroups' => 'string', + + // 'categories_content_type' => 'longText', + + 'category_subtype' => 'string', + 'category_subtype_settings' => 'longText', + + '$index' => ['rel_type', 'rel_id', 'parent_id'], + ], + + 'categories_items' => [ + 'parent_id' => 'integer', + 'rel_type' => 'string', + + 'rel_id' => 'integer', + + '$index' => ['rel_id', 'parent_id'], + ], + ]; + } +} diff --git a/update/src/Microweber/Install/TemplateInstaller.php b/update/src/Microweber/Install/TemplateInstaller.php deleted file mode 100644 index b7936b31..00000000 --- a/update/src/Microweber/Install/TemplateInstaller.php +++ /dev/null @@ -1,159 +0,0 @@ -log('Performing template install'); - - $selected_template = Config::get('microweber.install_default_template'); - $default_content = Config::get('microweber.install_default_template_content'); - $this->setDefaultTemplate($selected_template); - $create_default = true; - if ($default_content) { - $have = $this->installTemplateContent($selected_template); - if ($have == false) { - $create_default = true; - } - } - - if ($create_default) { - $this->createDefaultContent(); - } - - return true; - } - - private function setDefaultTemplate($template_name) - { - $this->log('Setting default template: ' . $template_name); - - $existing = DB::table('options')->where('option_key', 'current_template') - ->where('option_group', 'template')->first(); - - if ($existing != false) { - $option = Option::find($existing->id); - } else { - $option = new Option(); - } - $option->option_key = 'current_template'; - $option->option_group = 'template'; - $option->option_value = $template_name; - $option->is_system = 1; - $option->save(); - } - - private function installTemplateContent($template_name) - { - - $this->log('Installing default content for template: ' . $template_name); - - $default_content_folder = mw_includes_path() . 'install' . DIRECTORY_SEPARATOR; - $default_content_file = $default_content_folder . 'mw_default_content.zip'; - - if (($template_name)) { - if (function_exists('templates_path')) { - $template_dir = templates_path() . DS . $template_name; - $template_dir = normalize_path($template_dir, true); - if (is_dir($template_dir)) { - $template_default_content = $template_dir . 'mw_default_content.zip'; - if (is_file($template_default_content) and is_readable($template_default_content)) { - $default_content_file = $template_default_content; - $default_content_folder = $template_dir; - } - } - } - } - - if (is_file($default_content_file)) { - - try { - - $manager = new BackupManager(); - $manager->setImportFile($default_content_file); - $manager->setImportBatch(false); - $manager->setImportOvewriteById(true); - $manager->setLogger($this->logger); - $manager->startImport(); - - } catch (\Exception $e) { - return false; - } - - ob_get_clean(); - return true; - } else { - return false; - } - } - - public function createDefaultContent() - { - $existing = \Content::where('is_home', 1)->first(); - - if ($existing == false) { - $content = new \Content(); - $content->title = 'Home'; - $content->url = 'home'; - $content->parent = 0; - $content->is_home = 1; - $content->is_active = 1; - $content->content_type = 'page'; - $content->subtype = 'static'; - $content->layout_file = 'index.php'; - $content->save(); - } - try { - - $existing = \Menu::where('title', 'header_menu')->first(); - if (!$existing) { - $menu = new \Menu(); - $menu->title = 'header_menu'; - $menu->item_type = 'menu'; - $menu->is_active = 1; - $menu->save(); - - $menu = new \Menu(); - $menu->parent_id = 1; - $menu->content_id = 1; - $menu->item_type = 'menu_item'; - $menu->is_active = 1; - $menu->save(); - - $menu = new \Menu(); - $menu->title = 'footer_menu'; - $menu->item_type = 'menu'; - $menu->is_active = 1; - $menu->save(); - - $menu = new \Menu(); - $menu->parent_id = 2; - $menu->content_id = 1; - $menu->item_type = 'menu_item'; - $menu->is_active = 1; - $menu->save(); - } - - } catch (\PDOException $e) { - return false; - } - - } - - public function log($text) - { - if (is_object($this->logger) and method_exists($this->logger, 'log')) { - $this->logger->log($text); - } - } - -} diff --git a/update/src/Microweber/MicroweberServiceProvider.php b/update/src/Microweber/MicroweberServiceProvider.php deleted file mode 100644 index dac48703..00000000 --- a/update/src/Microweber/MicroweberServiceProvider.php +++ /dev/null @@ -1,324 +0,0 @@ - 'Microweber\App\Providers\Illuminate\Support\Facades\App', - 'Artisan' => 'Microweber\App\Providers\Illuminate\Support\Facades\Artisan', - 'Auth' => 'Microweber\App\Providers\Illuminate\Support\Facades\Auth', - 'Blade' => 'Microweber\App\Providers\Illuminate\Support\Facades\Blade', - 'Cache' => 'Microweber\App\Providers\Illuminate\Support\Facades\Cache', - 'Config' => 'Microweber\App\Providers\Illuminate\Support\Facades\Config', - 'Cookie' => 'Microweber\App\Providers\Illuminate\Support\Facades\Cookie', - 'Crypt' => 'Microweber\App\Providers\Illuminate\Support\Facades\Crypt', - 'DB' => 'Microweber\App\Providers\Illuminate\Support\Facades\DB', - 'Event' => 'Microweber\App\Providers\Illuminate\Support\Facades\Event', - 'File' => 'Microweber\App\Providers\Illuminate\Support\Facades\File', - 'Hash' => 'Microweber\App\Providers\Illuminate\Support\Facades\Hash', - 'Input' => 'Microweber\App\Providers\Illuminate\Support\Facades\Input', - 'Lang' => 'Microweber\App\Providers\Illuminate\Support\Facades\Lang', - 'Log' => 'Microweber\App\Providers\Illuminate\Support\Facades\Log', - 'Mail' => 'Microweber\App\Providers\Illuminate\Support\Facades\Mail', - 'Paginator' => 'Microweber\App\Providers\Illuminate\Support\Facades\Paginator', - 'Password' => 'Microweber\App\Providers\Illuminate\Support\Facades\Password', - 'Queue' => 'Microweber\App\Providers\Illuminate\Support\Facades\Queue', - 'Redirect' => 'Microweber\App\Providers\Illuminate\Support\Facades\Redirect', - 'Redis' => 'Microweber\App\Providers\Illuminate\Support\Facades\Redis', - 'Request' => 'Microweber\App\Providers\Illuminate\Support\Facades\Request', - 'Response' => 'Microweber\App\Providers\Illuminate\Support\Facades\Response', - 'Route' => 'Microweber\App\Providers\Illuminate\Support\Facades\Route', - 'Schema' => 'Microweber\App\Providers\Illuminate\Support\Facades\Schema', - 'Session' => 'Microweber\App\Providers\Illuminate\Support\Facades\Session', - 'URL' => 'Microweber\App\Providers\Illuminate\Support\Facades\URL', - 'Validator' => 'Microweber\App\Providers\Illuminate\Support\Facades\Validator', - 'View' => 'Microweber\App\Providers\Illuminate\Support\Facades\View', - ]; - - public function __construct($app) - { - ClassLoader::addDirectories([ - base_path() . DIRECTORY_SEPARATOR . 'userfiles' . DIRECTORY_SEPARATOR . 'modules', - __DIR__, - ]); - - ClassLoader::register(); - - spl_autoload_register([$this, 'autoloadModules']); - - $this->aliasInstance = AliasLoader::getInstance(); - - parent::__construct($app); - } - - public function register() - { - $this->registerLaravelProviders(); - - $this->registerLaravelAliases(); - - $this->setEnvironmentDetection(); - - $this->registerUtils(); - - $this->registerSingletonProviders(); - - $this->registerHtmlCollective(); - - $this->registerMarkdown(); - - $this->app->instance('config', new ConfigSave($this->app)); - - $this->app->register('Conner\Tagging\Providers\TaggingServiceProvider'); - - $this->aliasInstance->alias('Carbon', 'Carbon\Carbon'); - } - - protected function registerLaravelProviders() - { - foreach ($this->laravel_providers as $provider) { - $this->app->register($provider); - } - - $this->app->bind('Illuminate\Contracts\Bus\Dispatcher', 'Illuminate\Bus\Dispatcher'); - - $this->app->bind('Illuminate\Contracts\Queue\Queue', 'Illuminate\Contracts\Queue\Queue'); - - $this->app->singleton( - 'Illuminate\Cache\StoreInterface', - 'Utils\Adapters\Cache\CacheStore' - ); - - $this->app->singleton( - 'Illuminate\Contracts\Console\Kernel', - 'Microweber\App\Console\Kernel' - ); - } - - protected function registerLaravelAliases() - { - foreach ($this->laravel_aliases as $alias => $provider) { - $this->aliasInstance->alias($alias, $provider); - } - } - - protected function setEnvironmentDetection() - { - if (! is_cli()) { - if(isset($_SERVER['HTTP_HOST'])){ - $domain = $_SERVER['HTTP_HOST']; - } else if(isset($_SERVER['SERVER_NAME'])){ - $domain = $_SERVER['SERVER_NAME']; - } - - return $this->app->detectEnvironment(function () use ($domain) { - if (getenv('APP_ENV')) { - return getenv('APP_ENV'); - } - - $port = explode(':', $domain); - - $domain = str_ireplace('www.', '', $domain); - - if (isset($port[1])) { - $domain = str_ireplace(':' . $port[1], '', $domain); - } - - return strtolower($domain); - }); - } - - if (defined('MW_UNIT_TEST')) { - $this->app->detectEnvironment(function () { - if (! defined('MW_UNIT_TEST_ENV_FROM_TEST')) { - return 'testing'; - } - - return MW_UNIT_TEST_ENV_FROM_TEST; - }); - } - } - - protected function registerUtils() - { - $this->app->bind('http', function ($app) { - return new Utils\Http($app); - }); - - $this->app->bind('captcha', function ($app) { - return new Utils\Captcha($app); - }); - - $this->app->singleton('format', function ($app) { - return new Utils\Format($app); - }); - - $this->app->singleton('parser', function ($app) { - return new Utils\Parser($app); - }); - } - - protected function registerSingletonProviders() - { - $providers = [ - 'lang_helper' => 'Helpers\Lang', - 'event_manager' => 'Event', - 'database_manager' => 'DatabaseManager', - 'url_manager' => 'UrlManager', - 'ui' => 'Ui', - 'content_manager' => 'ContentManager', - 'update' => 'UpdateManager', - 'cache_manager' => 'CacheManager', - 'config_manager' => 'ConfigurationManager', - 'media_manager' => 'MediaManager', - 'fields_manager' => 'FieldsManager', - 'data_fields_manager' => 'Content\DataFieldsManager', - 'tags_manager' => 'Content\TagsManager', - 'attributes_manager' => 'Content\AttributesManager', - 'forms_manager' => 'FormsManager', - 'notifications_manager' => 'NotificationsManager', - 'log_manager' => 'LogManager', - 'option_manager' => 'OptionManager', - 'template' => 'Template', - 'modules' => 'Modules', - 'category_manager' => 'CategoryManager', - 'menu_manager' => 'MenuManager', - 'user_manager' => 'UserManager', - 'shop_manager' => 'ShopManager', - 'cart_manager' => 'Shop\CartManager', - 'order_manager' => 'Shop\OrderManager', - 'tax_manager' => 'Shop\TaxManager', - 'checkout_manager' => 'Shop\CheckoutManager', - 'layouts_manager' => 'LayoutsManager', - 'template_manager' => 'TemplateManager', - ]; - - foreach ($providers as $alias => $class) { - $this->app->singleton($alias, function ($app) use ($class) { - $class = 'Microweber\\Providers\\' . $class; - - return new $class($app); - }); - } - } - - protected function registerHtmlCollective() - { - $this->app->register('Collective\Html\HtmlServiceProvider'); - - $this->aliasInstance->alias('Form', 'Collective\Html\FormFacade'); - - $this->aliasInstance->alias('HTML', 'Collective\Html\HtmlFacade'); - } - - protected function registerMarkdown() - { - $this->app->register('GrahamCampbell\Markdown\MarkdownServiceProvider'); - - $this->aliasInstance->alias('Markdown', 'GrahamCampbell\Markdown\Facades\Markdown'); - } - - public function boot() - { - App::instance('path.public', base_path()); - - Cache::extend('file', function () { - return new Utils\Adapters\Cache\CacheStore(); - }); - - // If installed load module functions and set locale - if (mw_is_installed()) { - load_all_functions_files_for_modules(); - - $this->commands('Microweber\Commands\OptionCommand'); - - $language = get_option('language', 'website'); - - if ($language != false) { - set_current_lang($language); - } - - if (is_cli()) { - $this->commands('Microweber\Commands\ResetCommand'); - $this->commands('Microweber\Commands\UpdateCommand'); - } - } else { - // Otherwise register the install command - $this->commands('Microweber\Commands\InstallCommand'); - } - - $this->loadRoutes(); - - $this->app->event_manager->trigger('mw.after.boot', $this); - } - - private function loadRoutes() - { - $routesFile = __DIR__ . '/routes.php'; - - if (file_exists($routesFile)) { - include $routesFile; - } - } - - public function autoloadModules($className) - { - $filename = modules_path() . $className . '.php'; - - $filename = normalize_path($filename, false); - - if (! class_exists($className, false) && is_file($filename)) { - require_once $filename; - } - } -} diff --git a/update/src/Microweber/Providers/FieldsManager.php b/update/src/Microweber/Providers/FieldsManager.php index a55c9612..5b6ef0fb 100644 --- a/update/src/Microweber/Providers/FieldsManager.php +++ b/update/src/Microweber/Providers/FieldsManager.php @@ -67,23 +67,26 @@ public function make_default($rel, $rel_id, $fields_csv_str) $function_cache_id = 'fields_' . __FUNCTION__ . crc32($function_cache_id); - //$is_made = $this->app->option_manager->get($function_cache_id, 'make_default_custom_fields'); + $is_made = $this->app->option_manager->get($function_cache_id, 'make_default_custom_fields'); $make_field = array(); $make_field['rel_type'] = $rel; $make_field['rel_id'] = $rel_id; - $is_made = $this->get_all($make_field); - - + // $is_made = $this->get_all($make_field); if (isset($_mw_made_default_fields_register[$function_cache_id])) { return; } - if (is_array($is_made) and !empty($is_made)) { + if ($is_made) { + return; + } + + /* if (is_array($is_made) and !empty($is_made)) { return; } + */ $_mw_made_default_fields_register[$function_cache_id] = true; $table_custom_field = $this->table; @@ -104,10 +107,28 @@ public function make_default($rel, $rel_id, $fields_csv_str) $pos = 0; if (is_array($fields_csv_str)) { - foreach ($fields_csv_str as $field_type) { + foreach ($fields_csv_str as $field_name) { + $ex = array(); + $as_text_area = false; + $field_type = 'text'; + $field_name_lower = strtolower($field_name); + + if (strpos($field_name_lower, 'message') !== false) { + $as_text_area = true; + $field_type = 'text'; + } + $fields = mw()->ui->custom_fields(); + if (array_key_exists($field_name_lower, $fields)) { + $field_type = $field_name; + } + if (in_array($field_name_lower, $fields)) { + $field_type = $field_name; + } + + $ex['name'] = $field_name; $ex['type'] = $field_type; $ex['rel_type'] = $rel; $ex['rel_id'] = $rel_id; @@ -119,19 +140,26 @@ public function make_default($rel, $rel_id, $fields_csv_str) $make_field['rel_type'] = $rel; $make_field['rel_id'] = $rel_id; $make_field['position'] = $pos; - $make_field['name'] = ucfirst($field_type); + $make_field['name'] = ucfirst($field_name); $make_field['value'] = ''; + $make_field['type'] = $field_type; + $make_field['options']['field_type'] = $field_type; - if ($field_type == 'message') { - $field_type = 'textarea'; + if ($as_text_area) { + $make_field['options']['as_text_area'] = $as_text_area; } - $make_field['type'] = $field_type; $saved_fields[] = $this->save($make_field); ++$pos; } } + + $option = array(); + $option['option_value'] = true; + $option['option_key'] = $function_cache_id; + $option['option_group'] = 'make_default_custom_fields'; + $this->app->option_manager->save($option); if ($pos > 0) { $this->app->cache_manager->delete('custom_fields/global'); } @@ -178,7 +206,6 @@ public function save($data) $data['rel_type'] = $data['rel']; } - if (isset($data['options']['field_type']) && !empty($data['options']['field_type'])) { $data['type'] = $data['options']['field_type']; } @@ -206,9 +233,9 @@ public function save($data) if (isset($form_data_from_id['type']) and $form_data_from_id['type'] != '' and (!isset($data_to_save['type']) or ($data_to_save['type']) == '')) { $data_to_save['type'] = $form_data_from_id['type']; } - if (isset($form_data_from_id['name']) and $form_data_from_id['name'] != '' and (!isset($data_to_save['name']) or ($data_to_save['name']) == '')) { + /* if (isset($form_data_from_id['name']) and $form_data_from_id['name'] != '' and (!isset($data_to_save['name']) or ($data_to_save['name']) == '')) { $data_to_save['name'] = $form_data_from_id['name']; - } + }*/ } if (isset($data_to_save['copy_rel_id'])) { @@ -244,12 +271,12 @@ public function save($data) if (!isset($data_to_save['type']) or trim($data_to_save['type']) == '') { return array('error' => 'You must set type'); } else { - if (!isset($data_to_save['name'])) { - return array('error' => 'You must set name'); - } - $cf_k = $data_to_save['name']; - if ($cf_k != false and !isset($data_to_save['name_key'])) { - $data_to_save['name_key'] = $this->app->url_manager->slug(strtolower($cf_k)); + + if (isset($data_to_save['name'])) { + $cf_k = $data_to_save['name']; + if ($cf_k != false and !isset($data_to_save['name_key'])) { + $data_to_save['name_key'] = $this->app->url_manager->slug(strtolower($cf_k)); + } } $data_to_save['allow_html'] = true; @@ -872,255 +899,289 @@ public function make($field_id = 0, $field_type = 'text', $settings = false) if (isset($data['options']) and is_string($data['options'])) { $data['options'] = $this->_decode_options($data['options']); } - $dir = modules_path(); $data = $this->app->url_manager->replace_site_url_back($data); - $template_file = 'mw-ui'; - $css_framework = template_framework(); - if($css_framework and is_dir($dir . DS . 'custom_fields' . DS . 'templates' . DS . $css_framework . DS)){ - $template_file = $css_framework; + + $template_files = $this->get_template_files($data); + + if ($settings || isset($data['settings'])) { + $file = $template_files['settings_file']; + } else { + $file = $template_files['preview_file']; } + if (!is_file($file)) { + return; + } + + $field_data = array(); + $field_data['name'] = false; + $field_data['type'] = false; + $field_data['id'] = 0; + $field_data['placeholder'] = false; + $field_data['help'] = false; + $field_data['values'] = array(); + $field_data['value'] = false; + $field_data['options'] = array(); + $field_data['options']['old_price'] = false; + + $field_settings = array(); + $field_settings['rel_id'] = false; + $field_settings['rel_type'] = false; + $field_settings['required'] = false; + $field_settings['class'] = false; + $field_settings['field_size'] = 12; + $field_settings['as_text_area'] = false; + $field_settings['multiple'] = false; + $field_settings['type'] = 'button'; + $field_settings['rows'] = '5'; + $field_settings['make_select'] = false; + $field_settings['options']['file_types'] = array(); - if (isset($data['params'])) { - $template_file_option = get_option('data-template', $data['params']['id']); - /* - $template_file_exp = explode('/', $template_file_option); - if (!empty($template_file_exp[0])) { - $template_file = $template_file_exp[0]; - } - */ + if (isset($data['id'])) { + $field_data['id'] = $data['id']; } - if ($template_file == 'default') { - $template_file = 'mw-ui'; + if (isset($data['placeholder'])) { + $field_data['placeholder'] = $data['placeholder']; } + if (isset($data['make_select'])) { + $field_settings['make_select'] = $data['make_select']; + } - if ($settings == true or isset($data['settings'])) { - $dir = $dir . DS . 'microweber'.DS.'custom_fields' . DS; - } else { - $dir = $dir . DS . 'custom_fields' . DS . 'templates' . DS . $template_file . DS; + if (isset($data['name'])) { + $field_data['name'] = $data['name']; } - - $field_type = str_replace('..', '', $field_type); - $load_from_theme = false; - if (defined('ACTIVE_TEMPLATE_DIR')) { - $custom_fields_from_theme = ACTIVE_TEMPLATE_DIR . 'modules' . DS . 'custom_fields' . DS . 'templates' . DS . $template_file . DS; - - if (is_dir($custom_fields_from_theme)) { - if ($settings == true or isset($data['settings'])) { - $file = $custom_fields_from_theme . $field_type . '_settings.php'; - } else { - $file = $custom_fields_from_theme . $field_type . '.php'; + + if (isset($data['type'])) { + $field_data['type'] = $data['type']; + } + + if (isset($data['rel_type'])) { + $field_settings['rel_type'] = $data['rel_type']; + } + if (isset($data['rel_id'])) { + $field_settings['rel_id'] = $data['rel_id']; + } + + if (isset($data['help'])) { + $field_data['help'] = $data['help']; + } + + if (isset($data['options']['old_price'])) { + $field_data['options']['old_price'] = $data['options']['old_price']; + } + + if (isset($data['options']['field_size_class'])) { + $field_settings['class'] = $data['options']['field_size_class']; + } + + if (isset($data['options']['field_size'])) { + $field_settings['field_size'] = $data['options']['field_size']; + } + + if (isset($data['options']['required'])) { + $field_settings['required'] = true; + } + + if (isset($data['params']['input_class'])) { + $field_settings['class'] = $data['params']['input_class']; + } + + // For input to textarea + if (isset($data['options']['as_text_area'])) { + $field_settings['as_text_area'] = true; + } + + // For dropdown select + if (isset($data['options']['multiple'])) { + $field_settings['multiple'] = true; + } + + // For textarea + if (isset($data['options']['rows'])) { + $field_settings['rows'] = $data['options']['rows']; + } + + if (isset($data['value'])) { + $field_data['value'] = $data['value']; + } + + if (is_array($data['value'])) { + $field_data['value'] = implode(',', $data['value']); + } + + if (is_array($data['values']) && !empty($data['values'])) { + $field_data['values'] = $data['values']; + } + + if (isset($data['options']['field_type'])) { + $field_settings['type'] = $data['options']['field_type']; + } + + // For file upload + if ($data['type'] == 'upload') { + if (is_array($data['options']) && isset($data['options']['file_types'])) { + $field_settings['options']['file_types'] = array_merge($field_data['options'], $data['options']['file_types']); + } + } + + // For address type options + if ($data['type'] == 'address') { + + if ($data['values'] == false || !is_array($data['values']) || !is_array($data['values'][0])) { + + $default_address_fields = array('country' => 'Country', 'city' => 'City', 'zip' => 'Zip/Post code', 'state' => 'State/Province', 'address' => 'Address'); + + $field_data['default_address_fields'] = $default_address_fields; + + $skip_fields = array(); + if (isset($params['skip-fields']) and $params['skip-fields'] != '') { + $skip_fields = explode(',', $params['skip-fields']); + $skip_fields = array_trim($skip_fields); + } + + $selected_address_fields = array(); + if (isset($data['options']['country'])) { + $selected_address_fields[] = 'country'; + } + if (isset($data['options']['city'])) { + $selected_address_fields[] = 'city'; } - - if (is_file($file)) { - $load_from_theme = true; + if (isset($data['options']['zip'])) { + $selected_address_fields[] = 'zip'; } + if (isset($data['options']['state'])) { + $selected_address_fields[] = 'state'; + } + if (isset($data['options']['address'])) { + $selected_address_fields[] = 'address'; + } + + if (!empty($selected_address_fields)) { + $new_address_fields = array(); + foreach($selected_address_fields as $field) { + if (isset($default_address_fields[$field])) { + $new_address_fields[$field] = $default_address_fields[$field]; + } + } + $default_address_fields = $new_address_fields; + } + $field_data['values'] = array_merge($field_data['values'], $default_address_fields); } + $field_data['countries'] = mw()->forms_manager->countries_list(); } - - if ($load_from_theme == false) { - if ($settings == true or isset($data['settings'])) { - $file = $dir . $field_type . '_settings.php'; - } else { - $file = $dir . $field_type . '.php'; + + $parseView = new \Microweber\View($file); + $parseView->assign('data', $field_data); + $parseView->assign('settings', $field_settings); + + $layout = $parseView->__toString(); + + if($settings and defined('MW_API_HTML_OUTPUT')){ + $layout = $this->app->parser->process($layout, $options = false); + } + + return $layout; + + } + + public function get_template_files_by_type($data, $type) + { + $preview_file = false; + + $template_name = $this->get_template_name($data); + $default_template_name = $this->get_default_template_name($data); + + $ovewrite_templates_path = ACTIVE_TEMPLATE_DIR . 'modules' . DS . 'custom_fields' . DS . 'templates'; + $original_tempaltes_path = modules_path() . 'custom_fields' . DS . 'templates'; + + // Try to open overwrite template files + $overwrite_template_file_preview = $ovewrite_templates_path . DS . $template_name . DS . $type . '.php'; + + // Try to open original template files + $original_template_file_preview = $original_tempaltes_path . DS . $template_name . DS . $type . '.php'; + + // Get default tempalte files + $default_template_file_preview = $original_tempaltes_path . DS . $default_template_name . DS . $type . '.php'; + + // Try to get overwrite template file + if (is_file($overwrite_template_file_preview)) { + $preview_file = $overwrite_template_file_preview; + } + + // Try to get template file for current theme + if (!$preview_file) { + if (is_file($original_template_file_preview)) { + $preview_file = $original_template_file_preview; } } - if (!is_file($file)) { - $field_type = 'text'; - if ($settings == true or isset($data['settings'])) { - $file = $dir . $field_type . '_settings.php'; - } else { - $file = $dir . $field_type . '.php'; + + // Get default template file + if (!$preview_file) { + if (is_file($default_template_file_preview)) { + $preview_file = $default_template_file_preview; } } - $file = normalize_path($file, false); - - if (is_file($file)) { - - /** - * field_data['name'] - * field_data['id'] - * field_data['placeholder'] - * - * field_settings['required'] - * field_settings['class'] - */ - - $field_data = array(); - $field_data['name'] = false; - $field_data['type'] = false; - $field_data['id'] = 0; - $field_data['placeholder'] = false; - $field_data['help'] = false; - $field_data['values'] = array(); - $field_data['value'] = false; - $field_data['options'] = array(); - $field_data['options']['old_price'] = false; - - $field_settings = array(); - $field_settings['rel_id'] = false; - $field_settings['rel_type'] = false; - $field_settings['required'] = false; - $field_settings['class'] = false; - $field_settings['field_size'] = 12; - $field_settings['as_text_area'] = false; - $field_settings['multiple'] = false; - $field_settings['type'] = 'button'; - $field_settings['rows'] = '5'; - $field_settings['make_select'] = false; - $field_settings['options']['file_types'] = array(); - - if (isset($data['id'])) { - $field_data['id'] = $data['id']; - } - - if (isset($data['make_select'])) { - $field_settings['make_select'] = $data['make_select']; - } - - if (isset($data['name'])) { - $data['name'] = ucwords(str_replace('_', ' ', $data['name'])); - $field_data['name'] = $data['name']; - } - - if (isset($data['type'])) { - $field_data['type'] = $data['type']; - } - - if (isset($data['rel_type'])) { - $field_settings['rel_type'] = $data['rel_type']; - } - if (isset($data['rel_id'])) { - $field_settings['rel_id'] = $data['rel_id']; - } - - if (isset($data['help'])) { - $field_data['help'] = $data['help']; - } - - if (isset($data['options']['old_price'])) { - $field_data['options']['old_price'] = $data['options']['old_price']; - } - - if (isset($data['options']['field_size_class'])) { - $field_settings['class'] = $data['options']['field_size_class']; - } - - if (isset($data['options']['field_size'])) { - $field_settings['field_size'] = $data['options']['field_size']; - } - - if (isset($data['options']['required'])) { - $field_settings['required'] = true; - } - - if (isset($data['params']['input_class'])) { - $field_settings['class'] = $data['params']['input_class']; - } - - // For input to textarea - if (isset($data['options']['as_text_area'])) { - $field_settings['as_text_area'] = true; - } - - // For dropdown select - if (isset($data['options']['multiple'])) { - $field_settings['multiple'] = true; - } - - // For textarea - if (isset($data['options']['rows'])) { - $field_settings['rows'] = $data['options']['rows']; - } - - if (isset($data['value'])) { - $field_data['value'] = $data['value']; - $field_data['placeholder'] = $data['value']; - } - - if (is_array($data['value'])) { - $field_data['placeholder'] = implode(',', $data['value']); - } - - if (is_array($data['values']) && !empty($data['values'])) { - $field_data['values'] = $data['values']; - } - - if (isset($data['options']['field_type'])) { - $field_settings['type'] = $data['options']['field_type']; - } - - // For file upload - if ($data['type'] == 'upload') { - if (is_array($data['options']) && isset($data['options']['file_types'])) { - $field_settings['options']['file_types'] = array_merge($field_data['options'], $data['options']['file_types']); - } - } - - // For address type options - if ($data['type'] == 'address') { - - if ($data['values'] == false || !is_array($data['values']) || !is_array($data['values'][0])) { - - $default_address_fields = array('country' => 'Country', 'city' => 'City', 'zip' => 'Zip/Post code', 'state' => 'State/Province', 'address' => 'Address'); - - $field_data['default_address_fields'] = $default_address_fields; - - $skip_fields = array(); - if (isset($params['skip-fields']) and $params['skip-fields'] != '') { - $skip_fields = explode(',', $params['skip-fields']); - $skip_fields = array_trim($skip_fields); - } - - $selected_address_fields = array(); - if (isset($data['options']['country'])) { - $selected_address_fields[] = 'country'; - } - if (isset($data['options']['city'])) { - $selected_address_fields[] = 'city'; - } - if (isset($data['options']['zip'])) { - $selected_address_fields[] = 'zip'; - } - if (isset($data['options']['state'])) { - $selected_address_fields[] = 'state'; - } - if (isset($data['options']['address'])) { - $selected_address_fields[] = 'address'; - } - - if (!empty($selected_address_fields)) { - $new_address_fields = array(); - foreach($selected_address_fields as $field) { - if (isset($default_address_fields[$field])) { - $new_address_fields[$field] = $default_address_fields[$field]; - } - } - $default_address_fields = $new_address_fields; - } - - $field_data['values'] = array_merge($field_data['values'], $default_address_fields); - } - $field_data['countries'] = mw()->forms_manager->countries_list(); - } - - //var_dump($data);die(); - - $parseView = new \Microweber\View($file); - $parseView->assign('data', $field_data); - $parseView->assign('settings', $field_settings); - - $layout = $parseView->__toString(); - - if($settings and defined('MW_API_HTML_OUTPUT')){ - $layout = $this->app->parser->process($layout, $options = false); - } - - return $layout; + + return $preview_file; + } + + public function get_template_files($data) + { + $preview_file = $this->get_template_files_by_type($data, $data['type']); + if (!$preview_file) { + $preview_file = $this->get_template_files_by_type($data, 'text'); + } + + $settings_file = modules_path() . DS . 'microweber' . DS . 'custom_fields' . DS . $data['type'] . '_settings.php'; + if (!is_file($settings_file)) { + $settings_file = modules_path() . DS . 'microweber' . DS . 'custom_fields' . DS . 'text_settings.php'; + } + + $settings_file = normalize_path($settings_file, FALSE); + $preview_file = normalize_path($preview_file, FALSE); + + return array('preview_file'=>$preview_file, 'settings_file'=>$settings_file); + } + + public function get_template_name($data) + { + $template_name = false; + + if (isset($data['params']['id'])) { + $template_name = get_option('data-template', $data['params']['id']); + } else { + $template_name = get_option('data-template', $data['id']); + } + if ($template_name) { + $template_name_exp = explode('/', $template_name); + if (!empty($template_name_exp[0])) { + $template_name = $template_name_exp[0]; + } + } + + if (!$template_name) { + return $this->get_default_template_name(); + } + + return $template_name; + } + + public function get_default_template_name() { + + $template_name = false; + + if (!$template_name) { + $template_name = template_framework(); + } + + if (!$template_name) { + $template_name = 'mw-ui'; } + + return $template_name; } /** diff --git a/update/src/Microweber/Providers/FormsManager.php b/update/src/Microweber/Providers/FormsManager.php index 7d098824..d92181d3 100644 --- a/update/src/Microweber/Providers/FormsManager.php +++ b/update/src/Microweber/Providers/FormsManager.php @@ -161,7 +161,7 @@ public function post($params) if (!isset($for_id)) { return array('error' => 'Please provide for_id parameter with module id'); } - $user_mails = array(); + $terms_and_conditions_name = 'terms_contact'; @@ -431,11 +431,12 @@ public function post($params) } else { $cf_to_save = $params; } - + $save = 1; $skip_saving_emails = $this->app->option_manager->get('skip_saving_emails', $for_id); if (!$skip_saving_emails) { $skip_saving_emails = $this->app->option_manager->get('skip_saving_emails', $default_mod_id); + $skip_saving_emails = $this->app->option_manager->get('skip_saving_emails', $default_mod_id); } if ($skip_saving_emails !== 'y') { @@ -494,7 +495,7 @@ public function post($params) unset($pp_arr['message']); $pp_arr['message'] = $temp; // push to end of array } - + $user_mails = array(); $notif = array(); $notif['module'] = $params['module_name']; @@ -508,7 +509,10 @@ public function post($params) if ($email_to == false) { $email_to = $this->app->option_manager->get('email_from', 'email'); } + + $admin_user_mails = array(); + if ($email_to == false) { $admins = $this->app->user_manager->get_all('is_admin=1'); if (is_array($admins) and !empty($admins)) { @@ -516,11 +520,23 @@ public function post($params) if (isset($admin['email']) and (filter_var($admin['email'], FILTER_VALIDATE_EMAIL))) { $admin_user_mails[] = $admin['email']; $email_to = $admin['email']; + $user_mails[] = $admin['email']; } } } + } + if (is_array($params) and !empty($params)) { + foreach ($params as $param) { + if (is_string($param) and (filter_var($param, FILTER_VALIDATE_EMAIL))) { + $user_mails[] = $param; + } + } + + } + + if ($email_to != false) { $mail_autoresp = 'Thank you for your request!'; @@ -538,16 +554,14 @@ public function post($params) } - $user_mails = array(); - if (isset($admin_user_mails) and !empty($admin_user_mails)) { - $user_mails = $admin_user_mails; - } - $user_mails[] = $email_to; if (isset($email_bcc) and (filter_var($email_bcc, FILTER_VALIDATE_EMAIL))) { $user_mails[] = $email_bcc; } + + + // $email_from = false; if (!$email_from and isset($cf_to_save) and !empty($cf_to_save)) { foreach ($cf_to_save as $value) { @@ -585,6 +599,7 @@ public function post($params) if (!empty($append_files)) { $append_files_ready = explode(",", $append_files); } + // var_dump($user_mails); $email_autorespond = $this->app->option_manager->get('email_autorespond', $for_id); diff --git a/update/src/Microweber/Providers/LayoutsManager.php b/update/src/Microweber/Providers/LayoutsManager.php deleted file mode 100644 index c5187faf..00000000 --- a/update/src/Microweber/Providers/LayoutsManager.php +++ /dev/null @@ -1,879 +0,0 @@ -app)) { - if (is_object($app)) { - $this->app = $app; - } else { - $this->app = mw(); - } - } - } - - /** - * Lists the layout files from a given directory. - * - * You can use this function to get layouts from various folders in your web server. - * It returns array of layouts with desctption, icon, etc - * - * This function caches the result in the 'templates' cache group - * - * @param bool|array|string $options - * - * @return array|mixed - * - * @params $options['path'] if set i will look for layouts in this folder - * @params $options['get_dynamic_layouts'] if set this function will scan for templates for the 'layout' module in all templates folders - */ - public function get_all($options = false) - { - $layouts_from_template = $this->scan($options); - $external_layouts = $this->external_layouts; - if (is_array($layouts_from_template)) { - $res = array_merge($layouts_from_template, $external_layouts); - } else { - $res = $external_layouts; - } - - return $res; - } - - public function get_elements_from_current_site_template() - { - if (!defined('ACTIVE_TEMPLATE_DIR')) { - $this->app->content_manager->define_constants(); - } - - $dir_name = ACTIVE_TEMPLATE_DIR . 'elements' . DS; - - $elements_config_reader = new ElementsConfigReader(); - if (is_dir($dir_name)) { - $opts = array(); - $opts['path'] = $dir_name; - $elements = $elements_config_reader->scan($dir_name); - return $elements; - } - } - - public function scan($options = false) - { - $options = parse_params($options); - if (!isset($options['path'])) { - if (isset($options['site_template']) and (strtolower($options['site_template']) != 'default') and (trim($options['site_template']) != '')) { - $tmpl = trim($options['site_template']); - $check_dir = templates_path() . '' . $tmpl; - - if (is_dir($check_dir)) { - $the_active_site_template = $tmpl; - } else { - $the_active_site_template = $this->app->option_manager->get('current_template', 'template'); - } - } elseif (isset($options['site_template']) and (strtolower($options['site_template']) == 'mw_default')) { - $options['site_template'] = 'default'; - $tmpl = trim($options['site_template']); - $check_dir = templates_path() . '' . $tmpl; - if (is_dir($check_dir)) { - $the_active_site_template = $tmpl; - } else { - $the_active_site_template = $this->app->option_manager->get('current_template', 'template'); - } - } else { - $the_active_site_template = $this->app->option_manager->get('current_template', 'template'); - } - if ($the_active_site_template == '' or $the_active_site_template == 'mw_default') { - $the_active_site_template = 'default'; - } - - $path = normalize_path(templates_path() . $the_active_site_template); - } else { - $path = $options['path']; - } - if (isset($the_active_site_template) and trim($the_active_site_template) != 'default') { - if (defined('DEFAULT_TEMPLATE_DIR') and (!isset($path) or $path == false or (!strstr($path, DEFAULT_TEMPLATE_DIR)))) { - $use_default_layouts = $path . 'use_default_layouts.php'; - if (is_file($use_default_layouts)) { - $path = DEFAULT_TEMPLATE_DIR; - } - } - } - - if (!isset($path) or $path == false) { - return; - } - - if (!isset($options['no_cache'])) { - $args = func_get_args(); - $function_cache_id = ''; - foreach ($args as $k => $v) { - $function_cache_id = $function_cache_id . serialize($k) . serialize($v); - } - - $cache_id = $function_cache_id = __FUNCTION__ . crc32($path . $function_cache_id); - - $cache_group = 'templates'; - - $cache_content = $this->app->cache_manager->get($cache_id, $cache_group); - - if (($cache_content) != false) { - return $cache_content; - } - } - - $glob_patern = '*.php'; - $template_dirs = array(); - if (isset($options['get_dynamic_layouts'])) { - // $possible_dir = TEMPLATE_DIR.'modules'.DS.'layout'.DS; - $possible_dir = TEMPLATE_DIR . 'modules' . DS . 'layout' . DS; - $possible_dir2 = TEMPLATE_DIR; - - if (is_dir($possible_dir)) { - $template_dirs[] = $possible_dir2; - $dir2 = rglob($possible_dir . '*.php', 0); - if (!empty($dir2)) { - foreach ($dir2 as $dir_glob) { - $dir[] = $dir_glob; - } - } - } - - } - - if (!isset($options['get_dynamic_layouts'])) { - if (!isset($options['filename'])) { - $dir = rglob($glob_patern, 0, $path); - } else { - $dir = array(); - $dir[] = $options['filename']; - } - } else { - } - - - $configs = array(); - if (!empty($dir)) { - foreach ($dir as $filename) { - $skip = false; - if (!isset($options['get_dynamic_layouts'])) { - if (!isset($options['for_modules'])) { - if (strstr($filename, 'modules' . DS)) { - $skip = true; - } - } else { - if (!strstr($filename, 'modules' . DS)) { - $skip = true; - } - } - } - if ($skip == false and is_file($filename)) { - - $fin = file_get_contents($filename); - $fin = preg_replace('/\r\n?/', "\n", $fin); - - $here_dir = dirname($filename) . DS; - $to_return_temp = array(); - if (preg_match('/type:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('type:', '', $result); - $to_return_temp['type'] = trim($result); - $to_return_temp['directory'] = $here_dir; - if (strstr($here_dir, templates_path())) { - $templ_dir = str_replace(templates_path(), '', $here_dir); - if ($templ_dir != '') { - $templ_dir = explode(DS, $templ_dir); - if (isset($templ_dir[0])) { - $to_return_temp['template_dir'] = $templ_dir[0]; - } - } - } - if (strstr($here_dir, modules_path())) { - $templ_dir1 = str_replace(modules_path(), '', $here_dir); - - $templ_dir1 = str_ireplace('templates', '', $templ_dir1); - $templ_dir1 = str_ireplace('\\', '/', $templ_dir1); - $templ_dir1 = str_ireplace('//', '/', $templ_dir1); - $templ_dir1 = rtrim($templ_dir1, '/\\'); - - $to_return_temp['module_directory'] = $templ_dir1; - } - - if (strtolower($to_return_temp['type']) == 'layout') { - $to_return_temp['directory'] = $here_dir; - - if (preg_match('/is_shop:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('is_shop:', '', $result); - $to_return_temp['is_shop'] = trim($result); - } - - if (preg_match('/name:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('name:', '', $result); - $to_return_temp['name'] = trim($result); - } - - if (preg_match('/is_default:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('is_default:', '', $result); - $to_return_temp['is_default'] = trim($result); - } - - if (preg_match('/position:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('position:', '', $result); - $to_return_temp['position'] = intval($result); - } else { - $to_return_temp['position'] = 99999; - } - - if (preg_match('/version:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('version:', '', $result); - $to_return_temp['version'] = trim($result); - } - if (preg_match('/visible:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('visible:', '', $result); - $to_return_temp['visible'] = trim($result); - } - - if (preg_match('/icon:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('icon:', '', $result); - $to_return_temp['icon'] = trim($result); - - $possible = $here_dir . $to_return_temp['icon']; - if (is_file($possible)) { - $to_return_temp['icon'] = $this->app->url_manager->link_to_file($possible); - } else { - unset($to_return_temp['icon']); - } - } - - if (preg_match('/image:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('image:', '', $result); - $to_return_temp['image'] = trim($result); - $possible = $here_dir . $to_return_temp['image']; - - if (is_file($possible)) { - $to_return_temp['image'] = $this->app->url_manager->link_to_file($possible); - } else { - unset($to_return_temp['image']); - } - } - - if (preg_match('/description:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('description:', '', $result); - $to_return_temp['description'] = trim($result); - } - - if (preg_match('/content_type:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('content_type:', '', $result); - $to_return_temp['content_type'] = trim($result); - } - - if (preg_match('/tag:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('tag:', '', $result); - $to_return_temp['tag'] = trim($result); - } - - $layout_file = str_replace($path, '', $filename); - if (isset($options['get_dynamic_layouts'])) { - // dd($template_dirs); - $layout_file = str_replace($possible_dir2, '', $layout_file); - - } - if (isset($template_dirs) and !empty($template_dirs)) { - foreach ($template_dirs as $template_dir) { - $layout_file = str_replace($template_dir, '', $layout_file); - } - } - - $layout_file = str_replace(DS, '/', $layout_file); - $to_return_temp['layout_file'] = $layout_file; - $to_return_temp['filename'] = $filename; - $screen = str_ireplace('.php', '.png', $filename); - $screen_jpg = str_ireplace('.php', '.jpg', $filename); - if (is_file($screen_jpg)) { - $to_return_temp['screenshot_file'] = $screen_jpg; - } elseif (is_file($screen)) { - $to_return_temp['screenshot_file'] = $screen; - } - if (isset($to_return_temp['screenshot_file'])) { - $to_return_temp['screenshot'] = $this->app->url_manager->link_to_file($to_return_temp['screenshot_file']); - } - - $configs[] = $to_return_temp; - } - } - } - } - - if (!empty($configs)) { - $sorted_by_pos = array(); - $sorted_by_pos_items = array(); - $pos = 9999; - foreach ($configs as $item) { - if (isset($item['position'])) { - $sorted_by_pos_items[$item['position']][] = $item; - } else { - $sorted_by_pos[$pos] = $item; - } - ++$pos; - } - - if (!empty($sorted_by_pos_items)) { - ksort($sorted_by_pos_items); - foreach ($sorted_by_pos_items as $configs) { - $pos = 0; - foreach ($configs as $item) { - $sorted_by_pos[] = $item; - ++$pos; - } - } - } - if (!empty($sorted_by_pos)) { - $configs = $sorted_by_pos; - } - if (!isset($options['no_cache'])) { - $this->app->cache_manager->save($configs, $function_cache_id, $cache_group); - } - - return $configs; - } - } - } - - public function get_link($options = false) - { - $args = func_get_args(); - $function_cache_id = ''; - foreach ($args as $k => $v) { - $function_cache_id = $function_cache_id . serialize($k) . serialize($v); - } - - $cache_id = __FUNCTION__ . crc32($function_cache_id); - //get cache from memory - $mem = mw_var($cache_id); - if ($mem != false) { - return $mem; - } - - $options = parse_params($options); - $fn = false; - - if (isset($options[0])) { - $fn = $options[0]; - } elseif (is_array($options)) { - $val = current($options); - $fn = key($options); - } - - $page_url_segment_1 = $this->app->url_manager->segment(0); - $td = templates_path() . $page_url_segment_1; - $td_base = $td; - - $page_url_segment_2 = $this->app->url_manager->segment(1); - $directly_to_file = false; - $page_url_segment_3 = $this->app->url_manager->segment(); - - if (!is_dir($td_base)) { - array_shift($page_url_segment_3); - //$page_url_segment_1 = $the_active_site_template = $this->app->option_manager->get('current_template'); - //$td_base = templates_path() . $the_active_site_template.DS; - } else { - } - if (empty($page_url_segment_3)) { - $page_url_segment_str = ''; - } else { - $page_url_segment_str = $page_url_segment_3[0]; - } - //$page_url_segment_str = implode('/', $page_url_segment_3); - $fn = $this->app->url_manager->site($page_url_segment_str . '/' . $fn); - //d($page_url_segment_3); - - //set cache in memory - mw_var($cache_id, $fn); - - return $fn; - } - - public function save($data_to_save) - { - if (is_admin() == false) { - return false; - } - if (isset($data_to_save['is_element']) and $data_to_save['is_element'] == true) { - exit(__FILE__ . __LINE__ . d($data_to_save)); - } - - $table = 'elements'; - $save = false; - - if (!empty($data_to_save)) { - $s = $data_to_save; - - if (!isset($s['parent_id'])) { - $s['parent_id'] = 0; - } - if (!isset($s['id']) and isset($s['module'])) { - $s['module'] = $data_to_save['module']; - if (!isset($s['module_id'])) { - $save = $this->get('limit=1&module=' . $s['module']); - if ($save != false and isset($save[0]) and is_array($save[0])) { - $s['id'] = $save[0]['id']; - $save = $this->app->database_manager->save($table, $s); - } else { - $save = $this->app->database_manager->save($table, $s); - } - } - } else { - $save = $this->app->database_manager->save($table, $s); - } - } - - if ($save != false) { - $this->app->cache_manager->delete('elements' . DIRECTORY_SEPARATOR . ''); - $this->app->cache_manager->delete('elements' . DIRECTORY_SEPARATOR . 'global'); - } - - return $save; - } - - public function get($params = false) - { - $table = 'elements'; - if (is_string($params)) { - $params = parse_str($params, $params2); - $params = $options = $params2; - } - $params['table'] = $table; - $params['group_by'] = 'module'; - $params['orderby'] = 'position asc'; - - $params['cache_group'] = 'elements/global'; - if (isset($params['id'])) { - $params['limit'] = 1; - } else { - $params['limit'] = 1000; - } - - if (!isset($params['ui'])) { - // $params['ui'] = 1; - } - - $s = $this->app->database_manager->get($params); - - return $s; - } - - public function delete_all() - { - if (is_admin() == false) { - return false; - } else { - $table = get_table_prefix() . 'elements'; - - $db_categories = get_table_prefix() . 'categories'; - $db_categories_items = get_table_prefix() . 'categories_items'; - - $q = "DELETE FROM $table "; - // d($q); - $this->app->database_manager->q($q); - - $q = "DELETE FROM $db_categories WHERE rel_type='elements' AND data_type='category' "; - // d($q); - $this->app->database_manager->q($q); - - $q = "DELETE FROM $db_categories_items WHERE rel_type='elements' "; - // d($q); - $this->app->database_manager->q($q); - $this->app->cache_manager->delete('categories' . DIRECTORY_SEPARATOR . ''); - $this->app->cache_manager->delete('categories_items' . DIRECTORY_SEPARATOR . ''); - - $this->app->cache_manager->delete('elements' . DIRECTORY_SEPARATOR . ''); - } - } - - public function template_remove_custom_css($params) - { - $is_admin = $this->app->user_manager->is_admin(); - if ($is_admin == false) { - return false; - } - if (is_string($params)) { - $params = parse_params($params); - } - $template = false; - $return_styles = false; - if (isset($params['template']) and $params['template'] != '' and $params['template'] != false) { - $template = $params['template']; - } else { - $template = $this->app->option_manager->get('current_template', 'template'); - } - - if (isset($params['return_styles'])) { - $return_styles = $params['return_styles']; - } - - if ($template != false) { - if ($return_styles == true) { - $tf = $this->template_check_for_custom_css($template, true); - $tf2 = str_ireplace('.bak', '', $tf); - - if (rename($tf, $tf2)) { - return array('success' => 'Custom css is returned'); - } else { - return array('error' => 'File could not be returned'); - } - } else { - $tf = $this->template_check_for_custom_css($template); - $tf2 = $tf . '.bak'; - - $option = array(); - $option['option_value'] = ''; - $option['option_key'] = 'template_settings'; - $option['option_group'] = 'template_' . $template; - - $o = save_option($option); - - if (is_file($tf) and rename($tf, $tf2)) { - return array('success' => 'Custom css is removed'); - } else { - return array('error' => 'File could not be removed'); - } - } - } - - return $params; - } - - public function template_check_for_custom_css($template_name, $check_for_backup = false) - { - $template = $template_name; - if (trim($template) == '') { - $template = 'default'; - } - $final_file_blocks = array(); - - if ($template != false) { - $template_folder = userfiles_path() . 'css' . DS . $template . DS; - - $live_edit_css = $template_folder . 'live_edit.css'; - - // $live_edit_css = $template_folder . 'live_edit.css'; - if ($check_for_backup == true) { - $live_edit_css = $live_edit_css . '.bak'; - } - $fcont = ''; - if (is_file($live_edit_css)) { - return $live_edit_css; - } - } - } - - public function template_save_css($params) - { - $is_admin = $this->app->user_manager->is_admin(); - if ($is_admin == false) { - return false; - } - - if (is_string($params)) { - $params = parse_params($params); - } - - $ref_page = false; - - if (!isset($params['active_site_template'])) { - if (!isset($params['content_id'])) { - if (isset($_SERVER['HTTP_REFERER'])) { - $ref_page_url = $_SERVER['HTTP_REFERER']; - - if ($ref_page_url != '') { - $ref_page_url_rel = str_ireplace(site_url(), '', $ref_page_url); - - if ($ref_page_url_rel == '') { - $ref_page1 = $this->app->content_manager->homepage(); - } else { - $ref_page1 = $this->app->content_manager->get_by_url($ref_page_url, true); - } - if (isset($ref_page1['id'])) { - $ref_page = $this->app->content_manager->get_by_id(intval($ref_page1['id'])); - } - } - } - } else { - $ref_page = $this->app->content_manager->get_by_id(intval($params['content_id'])); - } - - if (isset($ref_page['id']) and isset($ref_page['content_type']) and $ref_page['content_type'] != 'page') { - $ref_page_parent = $this->app->content_manager->get_by_id(intval($ref_page['id'])); - if (isset($ref_page_partent['parent']) and intval($ref_page_parent['parent']) != 0) { - $ref_page = $this->app->content_manager->get_by_id(intval($ref_page_parent['id'])); - } else { - $ref_page_parents = $this->app->content_manager->get_parents(intval($ref_page['id'])); - if (!empty($ref_page_parents)) { - $ref_page_parent = array_pop($ref_page_parents); - $ref_page = $this->app->content_manager->get_by_id($ref_page_parent); - } - } - } - } else { - $ref_page = $params; - } - - if (!is_array($ref_page) or empty($ref_page)) { - return false; - } - $pd = $ref_page; - - if ($is_admin == true and is_array($pd)) { - $save_page = $pd; - - if (isset($save_page['layout_file']) and $save_page['layout_file'] == 'inherit') { - $inherit_from_id = $this->app->content_manager->get_inherited_parent($save_page['id']); - $inherit_from = $this->app->content_manager->get_by_id($inherit_from_id); - if (is_array($inherit_from) and isset($inherit_from['active_site_template'])) { - $save_page['active_site_template'] = $inherit_from['active_site_template']; - $save_page['layout_file'] = $inherit_from['layout_file']; - } - } - $template = false; - if (!isset($save_page['active_site_template']) or $save_page['active_site_template'] == '') { - $template = 'default'; - } elseif (isset($save_page['active_site_template'])) { - $template = $save_page['active_site_template']; - } - - if ($template == 'default') { - $site_template_settings = $this->app->option_manager->get('current_template', 'template'); - if ($site_template_settings != false and $site_template_settings != 'default') { - $template = $site_template_settings; - } - } - - $final_file_blocks = array(); - - if ($template != false) { - if (isset($_POST['save_template_settings'])) { - $json = json_encode($_POST); - $option = array(); - $option['option_value'] = $json; - $option['option_key'] = 'template_settings'; - $option['option_group'] = 'template_' . $template; - save_option($option); - } - - $template_folder = templates_path() . $template . DS; - $template_url = templates_url() . $template . '/'; - $this_template_url = THIS_TEMPLATE_URL; - - $template_folder = userfiles_path() . 'css' . DS . $template . DS; - if (!is_dir($template_folder)) { - mkdir_recursive($template_folder); - } - - $live_edit_css = $template_folder . 'live_edit.css'; - $fcont = ''; - if (is_file($live_edit_css)) { - $fcont = file_get_contents($live_edit_css); - } - - $css_cont = $fcont; - $css_cont_new = $css_cont; - - //@import on top - $sort_params = array(); - $sort_params2 = array(); - foreach ($params as $item) { - if (isset($item['selector']) and trim($item['selector']) == '@import' and isset($item['value'])) { - if ($item['value'] != 'reset') { - $sort_params[] = $item; - } - } else { - $sort_params2[] = $item; - } - } - - - $params = array_merge($sort_params, $sort_params2); - - - foreach ($params as $item) { - $curr = ''; - - if (isset($item['css']) and isset($item['selector']) and !isset($item['property'])) { - // $item['property'] = $item['css']; - } - - - if (!isset($item['css']) and isset($item['property']) and isset($item['value'])) { - if ($item['value'] == 'reset') { - $item['css'] = 'reset'; - } else { - - if (isset($item['selector']) and trim($item['selector']) == '@import' and isset($item['value'])) { - $props = explode(',', $item['property']); - - foreach ($props as $prop) { - $curr .= $prop . ' ' . $item['value'] . ';' . "\n"; - } - } else { - $props = explode(',', $item['property']); - $curr = ''; - foreach ($props as $prop) { - if (isset($item['value']) and trim($item['value']) != '') { - $curr .= $prop . ':' . $item['value'] . ';' . "\n"; - } - } - } - if ($curr != '') { - $item['css'] = $curr; - } - } - } else { - - if (!isset($item['css']) and !isset($item['selector'])) { - $find_css = $this->__array_search_key('css', $item); - $find_selector = $this->__array_search_key('selector', $item); - if ($find_css and $find_selector) { - $item['css'] = $find_css; - $item['selector'] = $find_selector; - } - - } - - if (isset($item['css'])) { - - $props = explode(';', $item['css']); - $curr = ''; - $css_props = array(); - foreach ($props as $prop) { - - $prop_key = substr($prop, 0, strpos($prop, ':')); - $prop_val = substr($prop, strpos($prop, ':') + 1, 9999); - $prop_key = trim($prop_key); - $prop_val = trim($prop_val); - if ($prop_key and $prop_val) { - $css_props[$prop_key] = $prop_val; - } - - } - $curr = ''; - if ($css_props) { - foreach ($css_props as $prop_k => $prop_v) { - $curr .= $prop_k . ':' . $prop_v . '; ' . "\n"; - } - } - if ($curr != '') { - $item['css'] = $curr; - } - } - } - - if (isset($item['selector']) and trim($item['selector']) != '' and isset($item['css'])) { - $item['selector'] = str_ireplace('.element-current', '', $item['selector']); - $item['selector'] = str_ireplace('.mwfx', '', $item['selector']); - $item['selector'] = str_ireplace('.mw_image_resizer', '', $item['selector']); - $item['selector'] = str_ireplace('.ui-resizable', '', $item['selector']); - $item['selector'] = str_ireplace('.ui-draggable', '', $item['selector']); - $item['css'] = str_ireplace('background:url(;', '', $item['css']); - $item['css'] = str_ireplace('background:;', '', $item['css']); - $item['css'] = str_ireplace('background-image:url(;', '', $item['css']); - $item['css'] = str_ireplace('background-image: url("");', 'background-image: none;', $item['css']); - - $sel = trim($item['selector']); - $css = trim($item['css']); - - if (trim($sel) != '' and strlen($sel) > 2 and strlen($css) > 2) { - $delim = "\n /* $sel */ \n"; - - //$item["css"] = str_ireplace($this_template_url, '', $item["css"]); - //$item["css"] = str_ireplace($template_url, '', $item["css"]); - - $item['css'] = str_ireplace('http://', '//', $item['css']); - $item['css'] = str_ireplace('https://', '//', $item['css']); - - $is_existing = explode($delim, $css_cont_new); - - if (!empty($is_existing)) { - $srings = $this->app->format->string_between($css_cont_new, $delim, $delim); - - if ($srings != false) { - $css_cont_new = str_ireplace($srings, '', $css_cont_new); - $css_cont_new = str_ireplace($delim, '', $css_cont_new); - } - } - if (trim($item['css']) != 'reset' and trim($item['css']) != 'reset;') { - $css_cont_new .= $delim; - if (isset($sel) and trim($sel) == '@import') { - $css_cont_new .= $sel . ' ' . $item['css'] . ' '; - } else { - $css_cont_new .= $sel . ' { ' . $item['css'] . ' }'; - } - $css_cont_new .= $delim; - } - } - } - } - - $resp = array(); - $resp['url'] = $this->app->url_manager->link_to_file($live_edit_css); - if ($css_cont_new != '' and $css_cont != $css_cont_new) { - file_put_contents($live_edit_css, $css_cont_new); - // print $css_cont_new; - } - $resp['content'] = $css_cont_new; - - return $resp; - } - } - } - - public function add_external($arr) - { - $this->external_layouts[] = ($arr); - - return $this->external_layouts; - } - - - private function __array_search_key($needle_key, $array) - { - foreach ($array AS $key => $value) { - if ($key == $needle_key) return $value; - if (is_array($value)) { - if (($result = $this->__array_search_key($needle_key, $value)) !== false) - return $result; - } - } - return false; - } -} diff --git a/update/src/Microweber/Providers/MediaManager.php b/update/src/Microweber/Providers/MediaManager.php deleted file mode 100644 index 2fcfd471..00000000 --- a/update/src/Microweber/Providers/MediaManager.php +++ /dev/null @@ -1,1197 +0,0 @@ -app)) { - if (is_object($app)) { - $this->app = $app; - } else { - $this->app = mw(); - } - } - - $this->tables['media'] = 'media'; - } - - public function get_picture($content_id, $for = 'content', $full = false) - { - - if ($for == 'post' or $for == 'posts' or $for == 'page' or $for == 'pages') { - $for = 'content'; - } elseif ($for == 'category' or $for == 'categories') { - $for = 'categories'; - } - - $arr['rel_type'] = $for; - $arr['limit'] = '1'; - $arr['rel_id'] = $content_id; - - $imgages = $this->get($arr); - - if ($imgages != false and isset($imgages[0])) { - if (isset($imgages[0]['filename']) and $full == false) { - $surl = $this->app->url_manager->site(); - - $img = $this->app->format->replace_once('{SITE_URL}', $surl, $imgages[0]['filename']); - - return $img; - } else { - return $imgages[0]; - } - } else { - if ($for == 'content') { - $cont_id = $this->app->content_manager->get_by_id($content_id); - - if (isset($cont_id['content'])) { - $img = $this->get_first_image_from_html(html_entity_decode($cont_id['content'])); - - if ($img != false) { - $surl = $this->app->url_manager->site(); - - $img = $this->app->format->replace_once('{SITE_URL}', $surl, $img); - $media_url = media_base_url(); - if (stristr($img, $surl)) { - return $img; - } else { - return $img; - - return false; - } - } - } - } - } - - return false; - } - - public function get_first_image_from_html($html) - { - if (preg_match('/tables['media']; - $id = intval($id); - if ($id == 0) { - return false; - } - $params = array(); - $params['id'] = $id; - $params['limit'] = 1; - - $params['table'] = $table; - $params['cache_group'] = 'media/' . $id; - - $q = $this->get($params); - if (is_array($q) and isset($q[0])) { - $content = $q[0]; - - if (isset($content['image_options'])) { - $content['image_options'] = @json_decode($content['image_options'], true); - } - - - } else { - return false; - } - - return $content; - } - - public function upload_progress_check() - { - if ($this->app->user_manager->is_admin() == false) { - mw_error('not logged in as admin'); - } - if (isset($_SERVER['HTTP_REFERER'])) { - $ref_str = md5($_SERVER['HTTP_REFERER']); - } else { - $ref_str = 'no_HTTP_REFERER'; - } - $ref_str = 'no_HTTP_REFERER'; - $cache_id = 'upload_progress_' . $ref_str; - $cache_group = 'media/global'; - - $cache_content = $this->app->cache_manager->get($cache_id, $cache_group); - if ($cache_content != false) { - if (isset($cache_content['tmp_name']) != false) { - if (isset($cache_content['f']) != false) { - $filename = $cache_content['tmp_name']; - if (is_file($filename)) { - $filesize = filesize($filename); - } - - $filename = $cache_content['f']; - - if (is_file($filename)) { - $filesize = filesize($filename); - } - - $perc = $this->app->format->percent($filesize, $cache_content['size']); - - return $perc; - } - } - } - } - - public function upload($data) - { - if ($this->app->user_manager->is_admin() == false) { - mw_error('not logged in as admin'); - } - ini_set('upload_max_filesize', '2500M'); - ini_set('memory_limit', '256M'); - ini_set('max_execution_time', 0); - ini_set('post_max_size', '2500M'); - ini_set('max_input_time', 9999999); - - // ini_set("session.upload_progress.enabled", 1); - if (isset($_SERVER['HTTP_REFERER'])) { - $ref_str = md5($_SERVER['HTTP_REFERER']); - } else { - $ref_str = 'no_HTTP_REFERER'; - } - $ref_str = 'no_HTTP_REFERER'; - $cache_id = 'upload_progress_' . $ref_str; - $cache_group = 'media/global'; - - $target_path = media_base_path() . 'uploaded' . DS; - $target_path = normalize_path($target_path, 1); - - if (!is_dir($target_path)) { - mkdir_recursive($target_path); - } - $rerturn = array(); - - if ((!isset($_FILES) or empty($_FILES)) and isset($data['file'])) { - if (isset($data['name'])) { - $data['name'] = mw()->url_manager->clean_url_wrappers($data['name']); - - $f = $target_path . $data['name']; - if (is_file($f)) { - $f = $target_path . date('YmdHis') . $data['name']; - } - - $df = strpos($data['file'], 'base64,'); - if ($df != false) { - // $df = substr($data['file'], 0, $df); - $data['file'] = substr($data['file'], $df + 7); - $data['file'] = str_replace(' ', '+', $data['file']); - // d($data['file']); - } - - $up = $this->base64_to_file($data['file'], $f); - - $rerturn['src'] = $this->app->url_manager->link_to_file($f); - $rerturn['name'] = $data['name']; - - return json_encode($rerturn); - } - } else { - $allowedExts = array('jpg', 'jpeg', 'gif', 'png', 'bmp'); - - //$upl = $this->app->cache_manager->save($_FILES, $cache_id, $cache_group); - foreach ($_FILES as $item) { - $item['name'] = mw()->url_manager->clean_url_wrappers($item['name']); - $extension = end(explode('.', $item['name'])); - if (in_array($extension, $allowedExts)) { - if ($item['error'] > 0) { - mw_error('Error: ' . $item['error']); - } else { - $upl = $this->app->cache_manager->save($item, $cache_id, $cache_group); - - $f = $target_path . $item['name']; - if (is_file($f)) { - $f = $target_path . date('YmdHis') . $item['name']; - } - - $progress = (array)$item; - $progress['f'] = $f; - $upl = $this->app->cache_manager->save($progress, $cache_id, $cache_group); - - if (move_uploaded_file($item['tmp_name'], $f)) { - $rerturn['src'] = $this->app->url_manager->link_to_file($f); - $rerturn['name'] = $item['name']; - } - } - } else { - mw_error('Invalid file ext'); - } - - // - // $input = fopen("php://input", "r"); - // $temp = tmpfile(); - // - // $realSize = stream_copy_to_stream($input, $temp); - // fclose($input); - // - // - // - // - // $target = fopen($f, "w"); - // fseek($temp, 0, SEEK_SET); - // stream_copy_to_stream($temp, $target); - // $rerturn['src'] = $this->app->url_manager->link_to_file($f); - // $rerturn['name'] = $item['name']; - // fclose($target); - } - } - - exit(json_encode($rerturn)); - } - - private function base64_to_file($data, $target) - { - touch($target); - if (is_writable($target) == false) { - exit("$target is not writable"); - } - $whandle = fopen($target, 'wb'); - stream_filter_append($whandle, 'convert.base64-decode', STREAM_FILTER_WRITE); - fwrite($whandle, $data); - fclose($whandle); - } - - public function reorder($data) - { - $adm = $this->app->user_manager->is_admin(); - if ($adm == false) { - mw_error('Error: not logged in as admin.' . __FILE__ . __LINE__); - } - - $table = $this->tables['media']; - foreach ($data as $value) { - if (is_array($value)) { - $indx = array(); - $i = 0; - foreach ($value as $value2) { - $indx[$i] = $value2; - ++$i; - } - - $this->app->database_manager->update_position_field($table, $indx); - - return true; - // d($indx); - } - } - } - - public function delete($data) - { - $adm = $this->app->user_manager->is_admin(); - $ids_to_delete = array(); - if (!isset($data['id']) and (!is_array($data) and intval($data) > 0)) { - $ids_to_delete[] = intval($data); - } elseif (isset($data['id']) and is_array($data['id'])) { - $ids_to_delete = $data['id']; - } elseif (isset($data['id']) and !is_array($data['id'])) { - $ids_to_delete[] = intval($data['id']); - } elseif (isset($data['ids']) and is_array($data['ids'])) { - $ids_to_delete = $data['ids']; - }elseif (isset($data['ids']) and !is_array($data['ids'])) { - $ids_to_delete = explode(',', $data['ids']); - } - if ($ids_to_delete) { - foreach ($ids_to_delete as $delete) { - $c_id = intval($delete); - $pic_data = $this->get_by_id($c_id); - - - if ($adm == false) { - if ($pic_data['created_by'] != $this->app->user_manager->id()) { - mw_error('Error: not logged in as admin to delete media.'); - } - } -// if (isset($pic_data['filename'])) { -// $fn_remove = $this->app->url_manager->to_path($pic_data['filename']); -// if (is_file($fn_remove)) { -// @unlink($fn_remove); -// } -// } - - $this->app->database_manager->delete_by_id('media', $c_id); - } - - return true; - } - } - - public function get_all($params) - { - if (!is_array($params)) { - $params = parse_params($params); - } - $table = $this->tables['media']; - $params['table'] = $table; - - return $this->app->database_manager->get($params); - } - - public function get($params) - { - $table = $this->tables['media']; - - if ($params != false and !is_array($params) and intval($params) > 0) { - $params2 = array(); - - $params2['rel_type'] = 'content'; - $params2['rel_id'] = intval($params); - $params = $params2; - } else { - $params = parse_params($params); - } - - if (!isset($params['rel_type']) and isset($params['for'])) { - $params['rel_type'] = $this->app->database_manager->assoc_table_name($params['for']); - } - if (!isset($params['rel_type'])) { - $params['rel_type'] = 'content'; - } - - if (!isset($params['limit'])) { - $params['limit'] = 'nolimit'; - } - - $params['table'] = $table; - $params['order_by'] = 'position ASC'; -//d($params); - $data = $this->app->database_manager->get($params); - if (isset($params['single'])) { - return $data; - } - - if (media_base_url()) { - if (!empty($data)) { - $return = array(); - foreach ($data as $item) { - if (isset($item['filename']) and $item['filename'] != false) { - if (!stristr($item['filename'], '{SITE_URL}') - and !stristr($item['filename'], '{MEDIA_URL}') - and !stristr($item['filename'], '://') - and !stristr($item['filename'], media_base_url()) - ) { - $item['filename'] = media_base_url() . $item['filename']; - } - } - - if (isset($item['title']) and $item['title'] != '') { - $item['title'] = html_entity_decode($item['title']); - $item['title'] = strip_tags($item['title']); - $item['title'] = $this->app->format->clean_html($item['title']); - } - - if (isset($item['image_options'])) { - $item['image_options'] = @json_decode($item['image_options'], true); - } - - - $return[] = $item; - } - $data = $return; - } - } - - return $data; - } - - public function save($data) - { - $s = array(); - - if (isset($data['content-id'])) { - $t = trim($data['content-id']); - $s['rel_id'] = $t; - $s['rel_type'] = 'content'; - } elseif (isset($data['content_id'])) { - $t = trim($data['content_id']); - $s['rel_id'] = $t; - $s['rel_type'] = 'content'; - $s['rel_type'] = 'content'; - } - - if (isset($data['for'])) { - $t = trim($data['for']); - $t = $this->app->database_manager->assoc_table_name($t); - $s['rel_type'] = $t; - } - if (isset($data['rel_id'])) { - $t = $data['rel_id']; - $s['rel_id'] = $t; - } - if (isset($data['rel_type'])) { - $t = $data['rel_type']; - $s['rel_type'] = $t; - } - - if (isset($data['for-id'])) { - $t = trim($data['for-id']); - $s['rel_id'] = $t; - } - - if (isset($data['for_id'])) { - $t = trim($data['for_id']); - $s['rel_id'] = $t; - } - - if (isset($data['id'])) { - $t = intval($data['id']); - $s['id'] = $t; - } - - if (isset($data['title'])) { - $t = ($data['title']); - $s['title'] = $t; - } - if (!isset($data['src']) and isset($data['filename'])) { - $data['src'] = $data['filename']; - } - - if (isset($data['src'])) { - $host = (parse_url(site_url())); - - $host_dir = false; - if (isset($host['host'])) { - $host_dir = $host['host']; - $host_dir = str_ireplace('www.', '', $host_dir); - $host_dir = str_ireplace('.', '-', $host_dir); - } - - $url2dir = $this->app->url_manager->to_path($data['src']); - $uploaded_files_dir = media_base_path() . DS . 'uploaded'; - - if (isset($s['rel_type']) and isset($s['rel_id'])) { - $s['rel_type'] = str_replace('..', '', $s['rel_type']); - - $move_uploaded_files_dir = media_base_path() . 'downloaded' . DS . $s['rel_type'] . DS; - $move_uploaded_files_dir_index = media_base_path() . 'downloaded' . DS . $s['rel_type'] . DS . 'index.php'; - - $uploaded_files_dir = normalize_path($uploaded_files_dir); - if (!is_dir($move_uploaded_files_dir)) { - mkdir_recursive($move_uploaded_files_dir); - @touch($move_uploaded_files_dir_index); - } - - $url2dir = normalize_path($url2dir, false); - - $dl_remote = $this->download_remote_images; - - if (isset($data['allow_remote_download']) and $data['allow_remote_download']) { - $dl_remote = $data['allow_remote_download']; - } - - if ($dl_remote and isset($data['src'])) { - $ext = get_file_extension($data['src']); - $data['media_type'] = $this->_guess_media_type_from_file_ext($ext); - if ($data['media_type'] != false) { - // starting download - - $is_remote = strtolower($data['src']); - - if (strstr($is_remote, 'http:') || strstr($is_remote, 'https:')) { - $dl_host = (parse_url($is_remote)); - - $dl_host_host_dir = false; - if (isset($dl_host['host'])) { - $dl_host_host_dir = $dl_host['host']; - $dl_host_host_dir = str_ireplace('www.', '', $dl_host_host_dir); - $dl_host_host_dir = str_ireplace('.', '-', $dl_host_host_dir); - } - - $move_uploaded_files_dir = $move_uploaded_files_dir . 'external' . DS; - if ($dl_host_host_dir) { - $move_uploaded_files_dir = $move_uploaded_files_dir . $dl_host_host_dir . DS; - } - - if (!is_dir($move_uploaded_files_dir)) { - mkdir_recursive($move_uploaded_files_dir); - } - - $newfile = basename($data['src']); - - $newfile = preg_replace('/[^\w\._]+/', '_', $newfile); - $newfile = $move_uploaded_files_dir . $newfile; - - if (!is_file($newfile)) { - mw()->http->url($data['src'])->download($newfile); - } - if (is_file($newfile)) { - $url2dir = $this->app->url_manager->to_path($newfile); - } - } - } - } - - if (is_file($url2dir)) { - $data['src'] = $this->app->url_manager->link_to_file($url2dir); - } - } - - $s['filename'] = $data['src']; - } - - if (!isset($data['position']) and !isset($s['id'])) { - $s['position'] = 9999999; - } - - if (isset($data['for_id'])) { - $t = trim($data['for_id']); - $s['rel_id'] = $t; - } - - if ((!isset($s['id']) or (isset($s['id']) and $s['id'] == 0)) - and isset($s['filename']) - and isset($s['rel_id']) - and isset($s['rel_type']) - ) { - $s['filename'] = str_replace(site_url(), '{SITE_URL}', $s['filename']); - $check = array(); - $check['rel_type'] = $s['rel_type']; - $check['rel_id'] = $s['rel_id']; - $check['filename'] = $s['filename']; - $check['single'] = true; - $check = $this->get_all($check); - if (isset($check['id'])) { - $s['id'] = $check['id']; - } - } - - if (!isset($s['id']) and isset($s['filename']) and !isset($data['media_type'])) { - $ext = get_file_extension($s['filename']); - $data['media_type'] = $this->_guess_media_type_from_file_ext($ext); - } - - if (isset($data['media_type'])) { - $t = $this->app->database_manager->escape_string($data['media_type']); - $s['media_type'] = $t; - } - - if (isset($data['tags'])) { - $s['tags'] = $data['tags']; - } - - - if (isset($data['image_options'])) { - $s['image_options'] = @json_encode($data['image_options']); - } - - if (isset($s['rel_type']) and isset($s['rel_id'])) { - $s['rel_id'] = trim($s['rel_id']); - $table = $this->tables['media']; - $s = $this->app->database_manager->extended_save($table, $s); - $this->app->cache_manager->delete('media'); - - return $s; - } elseif (isset($s['id'])) { - $table = $this->tables['media']; - $s = $this->app->database_manager->extended_save($table, $s); - $this->app->cache_manager->delete('media'); - - return $s; - } else { - mw_error('Invalid data'); - } - } - - public function tags($media_id = false, $return_full = false) - { - $data = array(); - $data['table'] = $this->tables['media']; - if ($media_id) { - $data['id'] = intval($media_id); - } - return $this->app->tags_manager->get_values($data, $return_full); - } - - public function thumbnail_img($params) - { - - ini_set('memory_limit', '256M'); - - extract($params); - - if (!isset($width)) { - $width = 200; - } else { - $width = intval($width); - } - - if (!isset($height)) { - $height = null; - } else { - $height = intval($height); - } - - if (!isset($crop)) { - $crop = null; - } else { - $crop = trim($crop); - } - - - if (!isset($src) or $src == false) { - return $this->pixum($width, $height); - } - - $src = strtok($src, '?'); - - $surl = $this->app->url_manager->site(); - $local = false; - - $media_url = media_base_url(); - $media_url = trim($media_url); - $src = str_replace('{SITE_URL}', $surl, $src); - $src = str_replace('%7BSITE_URL%7D', $surl, $src); - $src = str_replace('..', '', $src); - - if (strstr($src, $surl) or strpos($src, $surl)) { - $src = str_replace($surl . '/', $surl, $src); - //$src = str_replace($media_url, '', $src); - $src = str_replace($surl, '', $src); - $src = ltrim($src, DS); - $src = ltrim($src, '/'); - $src = rtrim($src, DS); - $src = rtrim($src, '/'); - //$src = media_base_path() . $src; - $src = MW_ROOTPATH . $src; - $src = normalize_path($src, false); - } else { - $src = $this->app->url_manager->clean_url_wrappers($src); - - $src1 = media_base_path() . $src; - $src1 = normalize_path($src1, false); - - $src2 = MW_ROOTPATH . $src; - $src2 = normalize_path($src2, false); - $src3 = strtolower($src2); - - if (is_file($src1)) { - $src = $src1; - } elseif (is_file($src2)) { - $src = $src2; - } elseif (is_file($src3)) { - $src = $src3; - } else { - $no_img = true; - - if ($no_img) { - return $this->pixum_img(); - } - } - } - $media_root = media_base_path(); - - $cd = $this->thumbnails_path() . $width . DS; - - if (!is_dir($cd)) { - mkdir_recursive($cd); - } - - $index_file = $cd . 'index.html'; - if (!is_file($index_file)) { - file_put_contents($index_file, 'Thumbnail directory is not allowed'); - } - if (!isset($ext)) { - $ext = strtolower(get_file_extension($src)); - } - $cache = md5(serialize($params)) . '.' . $ext; - - $cache = str_replace(' ', '_', $cache); - - if (isset($cache_id)) { - $cache = str_replace(' ', '_', $cache_id); - $cache = str_replace('..', '', $cache); - } - - $cache_path = $cd . $cache; - if (file_exists($cache_path)) { - if(!isset($return_cache_path)){ - if (!headers_sent()) { - if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { - $if_modified_since = preg_replace('/;.*$/', '', $_SERVER['HTTP_IF_MODIFIED_SINCE']); - } else { - $if_modified_since = ''; - } - $mtime = filemtime($src); - $gmdate_mod = gmdate('D, d M Y H:i:s', $mtime) . ' GMT'; - if ($if_modified_since == $gmdate_mod) { - header('HTTP/1.0 304 Not Modified'); - } - } - } - - } else { - $src = $this->app->url_manager->clean_url_wrappers($src); - - if (file_exists($src)) { - if (($ext) == 'svg') { - $res1 = file_get_contents($src); - $res1 = $this->svgScaleHack($res1, $width, $height); - file_put_contents($cache_path, $res1); - } else { - if ($ext == 'jpg' || $ext == 'jpeg' || $ext == 'gif' || $ext == 'png' || $ext == 'bmp') { - - if (!$height) { - $height = $width; - } - $tn = new \Microweber\Utils\Thumbnailer($src); - $thumbOptions = array('height' => $height, 'width' => $width); - if ($crop) { - $thumbOptions['crop'] = $crop; - } - - $tn->createThumb($thumbOptions, $cache_path); - - unset($tn); - - -// if (function_exists('finfo_file')) { -// //use Image library -// // $image = Image::make($src)->resize($width, $height)->save($cache_path); -// -// -// if (intval($height) == 0) { -// // $height = null; -// } -// if ($width == $height) { -// // $height = null; -// } -// -// -// $magicianObj_mode = 3; -// $magicianObj = new \Microweber\Utils\lib\PHPImageMagician\imageLib($src); -// if ($crop) { -// $magicianObj_mode = 4; -// } -// $magicianObj->resizeImage($width, $height, $magicianObj_mode); -// -// $magicianObj->saveImage($cache_path, 100); -// -// // OLD INTERVENTION IMAGE LIB WILL BE REMOVED AS ITS NOT WORKING ON BIG IMAGES also deppends on finfo_file -// -//// if (intval($height) == 0) { -//// $height = null; -//// } -//// if ($width == $height) { -//// $height = null; -//// } -//// -//// -//// if ($crop) { -//// $image = Image::make($src)->fit($width, $height); -//// -//// } else { -//// $image = Image::make($src)->resize($width, $height, function ($constraint) { -//// $constraint->aspectRatio(); -//// }); -//// } -//// -//// $image = $image->save($cache_path); -// -// // END OF OLD INTERVENTION IMAGE LIB -// -// -// // unset($image); -// } else { -// // use fallback -// -//// if (!$height) { -//// $height = $width; -//// } -//// $tn = new \Microweber\Utils\Thumbnailer($src); -//// $thumbOptions = array('maxLength' => $height, 'width' => $width); -//// $tn->createThumb($thumbOptions, $cache_path); -//// -//// unset($tn); -// } - - - } else { - return $this->pixum_img(); - } - } - } - } - - $ext = get_file_extension($cache_path); - if ($ext == 'jpg') { - $ext = 'jpeg'; - } - - - if(isset($return_cache_path)){ - return $cache_path; - } - - header('Content-Type: image/' . $ext); - header('Content-Length: ' . filesize($cache_path)); - readfile($cache_path); - exit; - } - - public function pixum($width = 150, $height = false) - { - $cache_folder = media_base_path() . 'pixum' . DS; - if ($height) { - $h = $height; - } else { - $h = $width; - } - $h = intval($h); - $w = intval($width); - if ($h == 0) { - $h = 1; - } - - if ($w == 0) { - $w = 1; - } - $extension = '.png'; - - $hash = 'pixum-' . ($h) . 'x' . $w; - $cachefile = normalize_path($cache_folder . DS . $hash . $extension, false); - if (!file_exists($cachefile)) { - $dirname_file = dirname($cachefile); - if (!is_dir($dirname_file)) { - mkdir_recursive($dirname_file); - } - - $img = imagecreatetruecolor($w, $h); - - $white = imagecolorallocatealpha($img, 239, 236, 236, 0); - imagefill($img, 0, 0, $white); - imagealphablending($img, false); - imagesavealpha($img, true); - imagepng($img, $cachefile); - imagedestroy($img); - } - if (file_exists($cachefile)) { - $url = media_base_url() . 'pixum/' . $hash . $extension; - } else { - $url = $this->app->url_manager->site('api_nosession/pixum_img') . '?width=' . $width . '&height=' . $height; - } - - return $url; - } - - public function pixum_img() - { - $mime_type = 'image/png'; - $extension = '.png'; - $cache_folder = media_base_path() . 'pixum' . DS; - $cache_folder = normalize_path($cache_folder, true); - - if (!is_dir($cache_folder)) { - mkdir_recursive($cache_folder); - } - - if (isset($_REQUEST['width'])) { - $w = $_REQUEST['width']; - } else { - $w = 1; - } - - if (isset($_REQUEST['height'])) { - $h = $_REQUEST['height']; - } else { - $h = 1; - } - $h = intval($h); - $w = intval($w); - if ($h == 0) { - $h = 1; - } - - if ($w == 0) { - $w = 1; - } - $hash = 'pixum-' . ($h) . 'x' . $w; - $cachefile = $cache_folder . '/' . $hash . $extension; - - header('Content-Type: image/png'); - - if (!file_exists($cachefile)) { - $img = imagecreatetruecolor($w, $h); - $white = imagecolorallocatealpha($img, 239, 236, 236, 0); - imagefill($img, 0, 0, $white); - imagealphablending($img, false); - imagesavealpha($img, true); - imagepng($img, $cachefile); - imagedestroy($img); - $fp = fopen($cachefile, 'rb'); - fpassthru($fp); - exit; - } else { - $fp = fopen($cachefile, 'rb'); - fpassthru($fp); - exit; - } - } - - private function _guess_media_type_from_file_ext($ext) - { - $type = false; - switch ($ext) { - case 'jpeg': - case 'jpg': - case 'png': - case 'gif': - case 'bpm': - case 'svg': - $type = 'picture'; - break; - case 'avi': - case 'ogg': - case 'flv': - case 'mp4': - case 'qt': - case 'mpeg': - $type = 'video'; - break; - case 'mp3': - case 'wav': - case 'flac': - $type = 'audio'; - break; - } - - return $type; - } - - private function svgScaleHack($svg, $minWidth, $minHeight) - { - $reW = '/(.*]* width=")([\d.]+px)(.*)/si'; - $reH = '/(.*]* height=")([\d.]+px)(.*)/si'; - preg_match($reW, $svg, $mw); - preg_match($reH, $svg, $mh); - - if (!isset($mw[2]) and isset($mh[2])) { - $mw[2] = $mh[2]; - } - - if (empty($mw)) { - $width = floatval($minWidth); - $height = floatval($minHeight); - } else { - $width = floatval($mw[2]); - $height = floatval($mh[2]); - } - - if (!$width || !$height) { - return false; - } - - // scale to make width and height big enough - $scale = 1; - if ($width < $minWidth) { - $scale = $minWidth / $width; - } - if ($height < $minHeight) { - $scale = max($scale, ($minHeight / $height)); - } - $scale = 1; - - $svg = preg_replace($reW, "\${1}{$width}px\${3}", $svg); - $svg = preg_replace($reH, "\${1}{$height}px\${3}", $svg); - - return $svg; - } - - public function thumbnail($src, $width = 200, $height = null, $crop = null) - { - if ($src == false) { - return $this->pixum($width, $height); - } - $src = html_entity_decode($src); - $src = htmlspecialchars_decode($src); - - $surl = $this->app->url_manager->site(); - $src = str_replace('{SITE_URL}', $surl, $src); - $src = str_replace('%7BSITE_URL%7D', $surl, $src); - $base_src = str_replace($surl, '', $src); - - if (!isset($width)) { - $width = 200; - } else { - $width = intval($width); - } - - $src = strtok($src, '?'); - if (!isset($height)) { - $height = 0; - } else { - $height = intval($height); - } - - $cd = $this->thumbnails_path() . $width . DS; - - $ext = strtolower(get_file_extension($base_src)); - $cache = ($base_src . $width . $height) . '.' . $ext; - - $cache = str_replace(' ', '_', $cache); - - $ext = strtolower(get_file_extension($src)); - $is_remote = false; - if (!stristr($src, $surl)) { - if (strstr($src, 'http://')) { - $is_remote = true; - } elseif (strstr($src, 'https://')) { - $is_remote = true; - } - } - - $cache_id = array(); - $cache_id['base_src'] = $base_src; - $cache_id['src'] = $src; - - $cache_id['width'] = $width; - $cache_id['height'] = $height; - if ($crop) { - $cache_id['crop'] = $crop; - } - $cache_id = 'tn-' . md5(serialize($cache_id)) . '.' . $ext; - $cache_path = $cd . $cache_id; - // d($cache_path); - - if ($is_remote) { - return $src; - } elseif (file_exists($cache_path)) { - $cache_path = $this->app->url_manager->link_to_file($cache_path); - - return $cache_path; - } else { - if (stristr($base_src, 'pixum_img')) { - return $this->pixum($width, $height); - } - $tn_img_url = $this->app->url_manager->site('api_html/thumbnail_img') . '?&src=' . $base_src . '&width=' . $width . '&height=' . $height . '&crop=' . $crop . '&cache_id=' . $cache_id; - $tn_img_url = str_replace('(', '(', $tn_img_url); - $tn_img_url = str_replace(')', ')', $tn_img_url); - - return $tn_img_url; - } - - } - - public function create_media_dir($params) - { - only_admin_access(); - $resp = array(); - // $target_path = media_base_path() . 'uploaded' . DS; - $target_path = media_uploads_path(); - $fn_path = media_base_path(); - if (isset($_REQUEST['path']) and trim($_REQUEST['path']) != '') { - $_REQUEST['path'] = urldecode($_REQUEST['path']); - - $fn_path = $target_path . DS . $_REQUEST['path'] . DS; - $fn_path = str_replace('..', '', $fn_path); - $fn_path = normalize_path($fn_path, false); - } - if (!isset($_REQUEST['name'])) { - $resp = array('error' => 'You must send new_folder parameter'); - } else { - $fn_new_folder_path = $_REQUEST['name']; - $fn_new_folder_path = urldecode($fn_new_folder_path); - $fn_new_folder_path = str_replace('..', '', $fn_new_folder_path); - $fn_new_folder_path_new = $target_path . DS . $fn_new_folder_path; - $fn_path = normalize_path($fn_new_folder_path_new, false); - if (!is_dir($fn_path)) { - mkdir_recursive($fn_path); - $resp = array('success' => 'Folder ' . $fn_path . ' is created'); - } else { - $resp = array('error' => 'Folder ' . $fn_new_folder_path . ' already exists'); - } - } - - return $resp; - } - - public function delete_media_file($params) - { - only_admin_access(); - - // $target_path = media_base_path() . 'uploaded' . DS; - $target_path = media_uploads_path(); - $target_path = normalize_path($target_path, 0); - $path_restirct = userfiles_path(); - - $fn_remove_path = $_REQUEST['path']; - $resp = array(); - if ($fn_remove_path != false and is_array($fn_remove_path)) { - foreach ($fn_remove_path as $key => $value) { - $fn_remove = $this->app->url_manager->to_path($value); - - if (isset($fn_remove) and trim($fn_remove) != '' and trim($fn_remove) != 'false') { - $path = urldecode($fn_remove); - $path = normalize_path($path, 0); - $path = str_replace('..', '', $path); - $path = str_replace($path_restirct, '', $path); - $target_path = userfiles_path() . DS . $path; - $target_path = normalize_path($target_path, false); - - // if (stristr($target_path, media_base_path())) { - if (stristr($target_path, media_uploads_path())) { - if (is_dir($target_path)) { - mw('Microweber\Utils\Files')->rmdir($target_path, false); - $resp = array('success' => 'Directory ' . $target_path . ' is deleted'); - } elseif (is_file($target_path)) { - unlink($target_path); - $resp = array('success' => 'File ' . basename($target_path) . ' is deleted'); - } else { - $resp = array('error' => 'Not valid file or folder ' . $target_path . ' '); - } - } else { - $resp = array('error' => 'Not allowed to delete on ' . $target_path . ' '); - } - } - } - } - - return $resp; - } - - public function relative_media_start_path() - { - - - static $path; - if ($path == false) { - $environment = \App::environment(); - - $path = MW_MEDIA_FOLDER_NAME . '/' . $environment . ''; - } - - return $path; - } - - public function thumbnails_path() - { - $userfiles_dir = userfiles_path(); - $userfiles_cache_dir = normalize_path($userfiles_dir . 'cache' . DS . 'thumbnails' . DS); - - // media_base_path() . 'thumbnail' . DS; - - return $userfiles_cache_dir; - } -} diff --git a/update/src/Microweber/Providers/Modules.php b/update/src/Microweber/Providers/Modules.php deleted file mode 100644 index ff9e17ac..00000000 --- a/update/src/Microweber/Providers/Modules.php +++ /dev/null @@ -1,1356 +0,0 @@ -{module_title} {type}"); - } - - if (!is_object($this->app)) { - if (is_object($app)) { - $this->app = $app; - } else { - $this->app = mw(); - } - } - $this->set_table_names(); - } - - public function set_table_names($tables = false) - { - if (!is_array($tables)) { - $tables = array(); - } - if (!isset($tables['modules'])) { - $tables['modules'] = 'modules'; - } - if (!isset($tables['elements'])) { - $tables['elements'] = 'elements'; - } - if (!isset($tables['module_templates'])) { - $tables['module_templates'] = 'module_templates'; - } - if (!isset($tables['system_licenses'])) { - $tables['system_licenses'] = 'system_licenses'; - } - if (!isset($tables['options'])) { - $tables['options'] = 'options'; - } - $this->tables['options'] = $tables['options']; - $this->tables['modules'] = $tables['modules']; - $this->tables['elements'] = $tables['elements']; - $this->tables['module_templates'] = $tables['module_templates']; - $this->tables['system_licenses'] = $tables['system_licenses']; - } - - public function install() - { - - $this->_install_mode = true; - mw()->cache_manager->delete('db'); - mw()->cache_manager->clear(); - $this->scan(); - $this->_install_mode = false; - } - - public function scan($options = false) - { - return $this->scan_for_modules($options); - } - - public function scan_for_modules($options = false) - { - $params = $options; - if (is_string($params)) { - $params = parse_str($params, $params2); - $params = $options = $params2; - } - - - $args = func_get_args(); - $function_cache_id = ''; - foreach ($args as $k => $v) { - $function_cache_id = $function_cache_id . serialize($k) . serialize($v) . serialize($params); - } - $list_as_element = false; - $cache_id = $function_cache_id = __FUNCTION__ . crc32($function_cache_id); - if (isset($options['dir_name'])) { - $dir_name = $options['dir_name']; - //$list_as_element = true; - $cache_group = 'elements/global'; - } else { - $dir_name = normalize_path(modules_path()); - $list_as_element = false; - $cache_group = 'modules/global'; - } - - if (isset($options['is_elements']) and $options['is_elements'] != false) { - $list_as_element = true; - } else { - $list_as_element = false; - } - - $skip_save = false; - if (isset($options['skip_save']) and $options['skip_save'] != false) { - $skip_save = true; - } - $modules_remove_old = false; - if (isset($options['cache_group'])) { - $cache_group = $options['cache_group']; - } - - if (isset($options['reload_modules']) == true) { - $modules_remove_old = true; - } - - if ($modules_remove_old or isset($options['cleanup_db']) == true) { - if ($this->app->user_manager->is_admin() == true) { - $this->app->cache_manager->delete('categories'); - $this->app->cache_manager->delete('categories_items'); - $this->app->cache_manager->delete('db'); - $this->app->cache_manager->delete('modules'); - } - } - - if (isset($options['skip_cache']) == false and isset($options['no_cache']) == false) { - $cache_content = $this->app->cache_manager->get($cache_id, $cache_group); - - if (($cache_content) != false) { - return $cache_content; - } - } - if (isset($options['glob'])) { - $glob_patern = $options['glob']; - } else { - $glob_patern = '*config.php'; - } - - if (defined('INI_SYSTEM_CHECK_DISABLED') == false) { - define('INI_SYSTEM_CHECK_DISABLED', ini_get('disable_functions')); - } - - if (!strstr(INI_SYSTEM_CHECK_DISABLED, 'ini_set')) { - ini_set('memory_limit', '160M'); - ini_set('set_time_limit', 0); - } - if (!strstr(INI_SYSTEM_CHECK_DISABLED, 'set_time_limit')) { - set_time_limit(600); - } - - $dir = rglob($glob_patern, 0, $dir_name); - $dir_name_mods = modules_path(); - $dir_name_mods2 = elements_path(); - $saved_ids = array(); - if (!empty($dir)) { - $configs = array(); - foreach ($dir as $key => $value) { - $skip_module = false; - if (isset($options['skip_admin']) and $options['skip_admin'] == true) { - if (strstr($value, 'admin')) { - $skip_module = true; - } - } - - if ($skip_module == false) { - $config = array(); - $value = normalize_path($value, false); - - $moduleDir = $mod_name = str_replace('_config.php', '', $value); - $moduleDir = $mod_name = str_replace('config.php', '', $moduleDir); - $moduleDir = $mod_name = str_replace('index.php', '', $moduleDir); - - $moduleDir = $mod_name_dir = str_replace($dir_name_mods, '', $moduleDir); - $moduleDir = $mod_name_dir = str_replace($dir_name_mods2, '', $moduleDir); - - $def_icon = modules_path() . 'default.png'; - - ob_start(); - - $is_mw_ignore = dirname($value) . DS . '.mwignore'; - if (!is_file($is_mw_ignore)) { - include $value; - } - - $content = ob_get_contents(); - ob_end_clean(); - if ($list_as_element == true) { - $moduleDir = str_replace(elements_path(), '', $moduleDir); - } else { - $moduleDir = str_replace(modules_path(), '', $moduleDir); - } - - $replace_root = MW_ROOTPATH . DS . 'userfiles' . DS . 'modules' . DS; - - $moduleDir = str_replace($replace_root, '', $moduleDir); - - $replace_root = dirname(dirname(MW_PATH)) . DS . 'userfiles' . DS . 'modules' . DS; - $moduleDir = str_replace($replace_root, '', $moduleDir); - - $moduleDir = rtrim($moduleDir, '\\'); - $moduleDir = rtrim($moduleDir, '/'); - $moduleDir = str_replace('\\', '/', $moduleDir); - $moduleDir = str_replace(modules_path(), '', $moduleDir); - - $config['module'] = $moduleDir; - $config['module'] = rtrim($config['module'], '\\'); - $config['module'] = rtrim($config['module'], '/'); - - $config['module_base'] = str_replace('admin/', '', $moduleDir); - $main_try_icon = false; - - if (is_dir($mod_name)) { - $bname = basename($mod_name); - $t1 = modules_path() . $config['module'] . DS . $bname; - - if (is_file($t1 . '.svg')) { - $try_icon = $t1 . '.svg'; - } elseif (is_file($t1 . '.png')) { - $try_icon = $t1 . '.png'; - } else { - $try_icon = $t1 . '.jpg'; - } - $main_try_icon = modules_path() . $config['module'] . DS . 'icon.png'; - } else { - if (is_file($mod_name . '.svg')) { - $try_icon = $mod_name . '.svg'; - } elseif (is_file($mod_name . '.png')) { - $try_icon = $mod_name . '.png'; - } else { - $try_icon = $mod_name . '.jpg'; - } - } - - $try_icon = normalize_path($try_icon, false); - - if ($main_try_icon and is_file($main_try_icon)) { - $config['icon'] = $this->app->url_manager->link_to_file($main_try_icon); - } elseif (is_file($try_icon)) { -// d($config); -// d($try_icon); - $config['icon'] = $this->app->url_manager->link_to_file($try_icon); - } else { - $config['icon'] = $this->app->url_manager->link_to_file($def_icon); - } - - - if (isset($config['ui'])) { - $config['ui'] = intval($config['ui']); - } else { - $config['ui'] = 0; - } - - if (isset($config['is_system'])) { - $config['is_system'] = intval($config['is_system']); - } else { - $config['is_system'] = 0; - } - - if (isset($config['ui_admin'])) { - $config['ui_admin'] = intval($config['ui_admin']); - } else { - $config['ui_admin'] = 0; - } - - - if (isset($config['no_cache']) and $config['no_cache'] == true) { - $config['allow_caching'] = 0; - } else { - $config['allow_caching'] = 1; - } - - if (isset($config['name']) and $skip_save !== true and $skip_module == false) { - if (trim($config['module']) != '') { - if ($list_as_element == true) { - - - $this->app->layouts_manager->save($config); - } else { - $this->log('Installing module: ' . $config['name']); - $config['installed'] = 'auto'; - $tablesData = false; - $schemaFileName = modules_path() . $moduleDir . '/schema.json'; - if (isset($config['tables']) && is_array($config['tables']) && !empty($config['tables'])) { - $tablesData = $config['tables']; - } elseif (isset($config['tables']) && is_callable($config['tables'])) { - call_user_func($config['tables']); - unset($config['tables']); - } elseif (file_exists($schemaFileName)) { - $json = file_get_contents($schemaFileName); - $json = @json_decode($json, true); - $tablesData = $json; - } - $saved_ids[] = $this->save($config); - - if ($tablesData) { - $this->log('Installing module DB: ' . $config['name']); - (new DbUtils())->build_tables($tablesData); - } - } - } - } - - $configs[] = $config; - } - } - if ($skip_save == true) { - return $configs; - } - - $cfg_ordered = array(); - $cfg_ordered2 = array(); - $cfg = $configs; - foreach ($cfg as $k => $item) { - if (isset($item['position'])) { - $cfg_ordered2[$item['position']][] = $item; - unset($cfg[$k]); - } - } - ksort($cfg_ordered2); - foreach ($cfg_ordered2 as $k => $item) { - foreach ($item as $ite) { - $cfg_ordered[] = $ite; - } - } - if ($modules_remove_old == true) { - $table = 'options'; - $uninstall_lock = $this->get('ui=any'); - - if (is_array($uninstall_lock) and !empty($uninstall_lock)) { - foreach ($uninstall_lock as $value) { - $ism = $this->exists($value['module']); - if ($ism == false) { - $this->delete_module($value['id']); - $mn = $value['module']; - $table_options = $this->tables['options']; - $this->app->database_manager->delete_by_id($table_options, $mn, 'option_group'); - } - } - } - } - - $c2 = array_merge($cfg_ordered, $cfg); - - $this->app->cache_manager->save($c2, $cache_id, $cache_group); - - return $c2; - } - } - - public function save($data_to_save) - { - if (mw()->user_manager->is_admin() == false and $this->_install_mode == false) { - return false; - } - if (isset($data_to_save['is_element']) and $data_to_save['is_element'] == true) { - } - - $table = $this->tables['modules']; - $save = false; - - if (!empty($data_to_save)) { - $s = $data_to_save; - - if (!isset($s['parent_id'])) { - $s['parent_id'] = 0; - } - - if (!isset($s['installed']) or $s['installed'] == 'auto') { - $s['installed'] = 1; - } - - if (isset($s['settings']) and is_array($s['settings'])) { - $s['settings'] = json_encode($s['settings']); - } - - $s['allow_html'] = true; - - if (!isset($s['id']) and isset($s['module'])) { - $s['module'] = $data_to_save['module']; - - if (!isset($s['module_id'])) { - $save = $this->get_modules('ui=any&limit=1&module=' . $s['module']); - // d($save); - if ($save != false and isset($save[0]) and is_array($save[0]) and isset($save[0]['id']) and ($save[0]['id'])) { - $s['id'] = intval($save[0]['id']); - $s['position'] = intval($save[0]['position']); - $s['installed'] = intval($save[0]['installed']); - - $save = mw()->database_manager->save($table, $s); - $mname_clen = str_replace('\\', '/', $s['module']); - if ($s['id'] > 0) { - //$delid = $s["id"]; - //DB::table($table)->where('id', '!=', $delid)->delete(); - // $del = "DELETE FROM {$table} WHERE module='{$mname_clen}' AND id!={$delid} "; - //mw()->database_manager->q($del); - } - } else { - - $save = mw()->database_manager->save($table, $s); - } - } - } else { - $save = mw()->database_manager->save($table, $s); - } - } - return $save; - } - - public function get_modules($params) - { - return $this->get($params); - } - - public function get($params = false) - { - $table = $this->tables['modules']; - if (is_string($params)) { - $params = parse_str($params, $params2); - $params = $options = $params2; - } - $params['table'] = $table; - $params['group_by'] = 'module'; - $params['order_by'] = 'position asc'; - $params['cache_group'] = 'modules/global'; - - if (isset($params['id'])) { - $params['limit'] = 1; - } else { - $params['limit'] = 1000; - } - if (isset($params['module'])) { - $params['module'] = str_replace('/admin', '', $params['module']); - } - if (isset($params['keyword'])) { - $params['search_in_fields'] = array('name', 'module', 'description', 'author', 'website', 'version', 'help'); - } - - if (!isset($params['ui'])) { - // $params['ui'] = 1; - // - } - - if (isset($params['ui']) and $params['ui'] == 'any') { - unset($params['ui']); - } - - $data = $this->app->database_manager->get($params); - - if (is_array($data) and !empty($data)) { - if (isset($data['settings']) and !is_array($data['settings'])) { - $data['settings'] = json_decode($data['settings']); - } else { - foreach ($data as $k => $v) { - if (isset($v['settings']) and !is_array($v['settings'])) { - $v['settings'] = json_decode($v['settings']); - $data[$k] = $v; - } - } - } - } - - return $data; - } - - public function exists($module_name) - { - if (!is_string($module_name)) { - return false; - } - if (trim($module_name) == '') { - return false; - } - global $mw_loaded_mod_memory; - - if (!isset($mw_loaded_mod_memory[$module_name])) { - $ch = $this->locate($module_name, $custom_view = false); - if ($ch != false) { - $mw_loaded_mod_memory[$module_name] = true; - } else { - $mw_loaded_mod_memory[$module_name] = false; - } - } - - return $mw_loaded_mod_memory[$module_name]; - } - - public function locate($module_name, $custom_view = false, $no_fallback_to_view = false) - { - if (!defined('ACTIVE_TEMPLATE_DIR')) { - $this->app->content_manager->define_constants(); - } - - $module_name = trim($module_name); - // prevent hack of the directory - $module_name = str_replace('\\', '/', $module_name); - $module_name = str_replace('..', '', $module_name); - - $module_name = reduce_double_slashes($module_name); - $module_in_template_dir = ACTIVE_TEMPLATE_DIR . 'modules/' . $module_name . ''; - $module_in_template_dir = normalize_path($module_in_template_dir, 1); - $module_in_template_file = ACTIVE_TEMPLATE_DIR . 'modules/' . $module_name . '.php'; - $module_in_template_file = normalize_path($module_in_template_file, false); - $module_in_default_file12 = modules_path() . $module_name . '.php'; - - $try_file1 = false; - $mod_d = $module_in_template_dir; - $mod_d1 = normalize_path($mod_d, 1); - $try_file1x = $mod_d1 . 'index.php'; - - if (is_file($try_file1x)) { - $try_file1 = $try_file1x; - } elseif (is_file($module_in_template_file)) { - $try_file1 = $module_in_template_file; - } elseif (is_file($module_in_default_file12) and $custom_view == false) { - $try_file1 = $module_in_default_file12; - } else { - $module_in_default_dir = modules_path() . $module_name . ''; - $module_in_default_dir = normalize_path($module_in_default_dir, 1); - $module_in_default_file = modules_path() . $module_name . '.php'; - $module_in_default_file_custom_view = modules_path() . $module_name . '_' . $custom_view . '.php'; - $element_in_default_file = elements_path() . $module_name . '.php'; - $element_in_default_file = normalize_path($element_in_default_file, false); - - $module_in_default_file = normalize_path($module_in_default_file, false); - - if (is_file($module_in_default_file)) { - if ($custom_view == true and is_file($module_in_default_file_custom_view)) { - $try_file1 = $module_in_default_file_custom_view; - if ($no_fallback_to_view == true) { - return $try_file1; - } - } - } else { - if (is_dir($module_in_default_dir)) { - $mod_d1 = normalize_path($module_in_default_dir, 1); - - if ($custom_view == true) { - $try_file1 = $mod_d1 . trim($custom_view) . '.php'; - if ($no_fallback_to_view == true) { - return $try_file1; - } - } else { - if ($no_fallback_to_view == true) { - return false; - } - $try_file1 = $mod_d1 . 'index.php'; - } - } elseif (is_file($element_in_default_file)) { - $is_element = true; - $try_file1 = $element_in_default_file; - } - } - } - - $try_file1 = normalize_path($try_file1, false); - - return $try_file1; - } - - public function delete_module($id) - { - if ($this->app->user_manager->is_admin() == false) { - return false; - } - $id = intval($id); - - $table = $this->tables['modules']; - - $db_categories = get_table_prefix() . 'categories'; - $db_categories_items = get_table_prefix() . 'categories_items'; - - $this->app->database_manager->delete_by_id($table, $id); - - $q = "DELETE FROM $db_categories_items WHERE rel_type='modules' AND rel_id={$id}"; - $this->app->database_manager->q($q); - $this->app->cache_manager->delete('categories' . DIRECTORY_SEPARATOR . ''); - - $this->app->cache_manager->delete('modules' . DIRECTORY_SEPARATOR . ''); - } - - public function info($module_name) - { - $get = array(); - $get['module'] = $module_name; - $get['single'] = 1; - - $data = $this->get($get); - - return $data; - } - - public function ui($name, $arr = false) - { - return $this->app->ui->module($name, $arr); - } - - public function load($module_name, $attrs = array()) - { - return $this->app->parser->load($module_name, $attrs); - - } - - public function css_class($module_name) - { - global $mw_defined_module_classes; - - if (isset($mw_defined_module_classes[$module_name]) != false) { - return $mw_defined_module_classes[$module_name]; - } else { - $module_class = str_replace('/', '-', $module_name); - $module_class = str_replace('\\', '-', $module_class); - $module_class = str_replace(' ', '-', $module_class); - $module_class = str_replace('%20', '-', $module_class); - $module_class = str_replace('_', '-', $module_class); - $module_class = 'module-' . $module_class; - - $mw_defined_module_classes[$module_name] = $module_class; - - return $module_class; - } - } - - public function license($module_name = false) - { - $module_name = str_replace('\\', '/', $module_name); - $lic = $this->app->update->get_licenses('status=active&one=1&rel_type=' . $module_name); - - if (!empty($lic)) { - return true; - } else { - } - } - - /** - * module_templates. - * - * Gets all templates for a module - * - * @category modules api - */ - public function templates($module_name, $template_name = false, $get_settings_file = false) - { - - - $module_name = str_replace('admin', '', $module_name); - $module_name_l = $this->locate($module_name); -$replace_paths = array(); - if ($module_name_l == false) { - $module_name_l = modules_path() . DS . $module_name . DS; - $module_name_l = normalize_path($module_name_l, 1); - $replace_paths[] = $module_name_l; - } else { - $module_name_l = dirname($module_name_l) . DS . 'templates' . DS; - $module_name_l = normalize_path($module_name_l, 1); - $replace_paths[] = $module_name_l; - } - - $module_name_l_theme = ACTIVE_TEMPLATE_DIR . 'modules' . DS . $module_name . DS . 'templates' . DS; - $module_name_l_theme = normalize_path($module_name_l_theme, 1); - - $replace_paths[] = $module_name_l_theme; - $replace_paths[] = normalize_path( 'modules' . '/' . $module_name .'/' .'templates' . '/', 1); - - $template_config = mw()->template->get_config(); - - if (!is_dir($module_name_l) /*and !is_dir($module_name_l_theme)*/) { - return false; - } else { - if ($template_name == false) { - $options = array(); - $options['for_modules'] = 1; - $options['no_cache'] = 1; - $options['path'] = $module_name_l; - $module_name_l = $this->app->layouts_manager->scan($options); - - // $module_name_l = array(); - - if (is_dir($module_name_l_theme)) { - $options['path'] = $module_name_l_theme; - $module_skins_from_theme = $this->app->layouts_manager->scan($options); - - if (is_array($module_skins_from_theme)) { - if (!is_array($module_name_l)) { - $module_name_l = array(); - } - $file_names_found = array(); - if (is_array($module_skins_from_theme)) { - - - if (isset($template_config['standalone_module_skins']) and $template_config['standalone_module_skins']) { - $comb = $module_skins_from_theme; - - } else { - $comb = array_merge($module_skins_from_theme, $module_name_l); - } - - // $comb = array_merge($module_skins_from_theme, $module_name_l); - if (is_array($comb) and !empty($comb)) { - foreach ($comb as $k1 => $itm) { -// if (isset($itm['layout_file']) and $itm['layout_file']) { -// -// foreach ($replace_paths as $replace_path) { -// $replace_path2 = str_replace(DS, '/', $replace_path ); -// -// $itm['layout_file'] = str_replace(DS, '/', $itm['layout_file'] ); -// -// $itm['layout_file'] = str_ireplace($replace_path, '', $itm['layout_file']); -// $itm['layout_file'] = str_ireplace($replace_path2, '', $itm['layout_file']); -// -// $itm['layout_file'] = str_ireplace(normalize_path($replace_path), '', $itm['layout_file']); -// } -// // -// -// $itm['layout_file'] = normalize_path($itm['layout_file'],false); -// -// } - if (!in_array($itm['layout_file'], $file_names_found)) { - if (isset($itm['visible'])) { - if ($itm['visible'] == 'false' - or $itm['visible'] == 'no' - or $itm['visible'] == 'n' - ) { - // skip - } else { - $file_names_found[] = $itm['layout_file']; - } - } else { - $file_names_found[] = $itm['layout_file']; - } - } else { - unset($comb[$k1]); - } - } - } - $module_name_l = ($comb); - } - } - } - - return $module_name_l; - } else { - $template_name = str_replace('..', '', $template_name); - $template_name_orig = $template_name; - - if ($get_settings_file == true) { - $is_dot_php = get_file_extension($template_name); - if ($is_dot_php != false and $is_dot_php == 'php') { - $template_name = str_ireplace('.php', '', $template_name); - } - $template_name = $template_name . '_settings'; - } - - $is_dot_php = get_file_extension($template_name); - if ($is_dot_php != false and $is_dot_php != 'php') { - $template_name = $template_name . '.php'; - } - $tf_mw_default = $module_name_l . 'default.php'; - $tf = $module_name_l . $template_name; - $tf_theme = $module_name_l_theme . $template_name; - $tf_from_other_theme = templates_path() . $template_name; - $tf_from_other_theme = normalize_path($tf_from_other_theme, false); - - $tf_other_module = modules_path() . $template_name; - $tf_other_module = normalize_path($tf_other_module, false); - // ; - - - if ($template_name == 'mw_default.php' and is_file($tf)) { - return $tf; - } else if ($template_name == 'mw_default.php' and is_file($tf_mw_default)) { - return normalize_path($tf_mw_default, false); - } else if (strstr($tf_from_other_theme, 'modules') and is_file($tf_from_other_theme)) { - return normalize_path($tf_from_other_theme, false); - } elseif (is_file($tf_theme)) { - return normalize_path($tf_theme, false); - } elseif (is_file($tf)) { - return normalize_path($tf, false); - } elseif (strtolower($template_name_orig) != 'default' and is_file($tf_other_module)) { - return normalize_path($tf_other_module, false); - } else { - return false; - } - } - } - } - - public function url($module_name = false) - { - if ($module_name == false) { - - $mod_data = $this->app->parser->current_module; - if (isset($mod_data['url_to_module'])) { - return $mod_data['url_to_module']; - } - - if (isset($mod_data['url_to_module'])) { - return $mod_data['url_to_module']; - } else { - $mod_data = $this->current_module; - if (isset($mod_data['url_to_module'])) { - return $mod_data['url_to_module']; - } - } - } - - if (!is_string($module_name)) { - return false; - } - - $secure_connection = false; - if (isset($_SERVER['HTTPS'])) { - if ($_SERVER['HTTPS'] == 'on') { - $secure_connection = true; - } - } - - $args = func_get_args(); - $function_cache_id = ''; - foreach ($args as $k => $v) { - $function_cache_id = $function_cache_id . serialize($k) . serialize($v); - } - - $cache_id = $function_cache_id = __FUNCTION__ . crc32($function_cache_id); - - $cache_group = 'modules/global'; - - $cache_content = $this->app->cache_manager->get($cache_id, $cache_group); - - if (($cache_content) != false) { - return $cache_content; - } - - static $checked = array(); - - if (!isset($checked[$module_name])) { - $ch = $this->locate($module_name, $custom_view = false); - - if ($ch != false) { - $ch = dirname($ch); - $ch = $this->app->url_manager->link_to_file($ch); - $ch = $ch . '/'; - $checked[$module_name] = $ch; - } else { - $checked[$module_name] = false; - } - } - $this->app->cache_manager->save($checked[$module_name], $function_cache_id, $cache_group); - if ($secure_connection == true) { - $checked[$module_name] = str_ireplace('http://', 'https://', $checked[$module_name]); - } - - return $checked[$module_name]; - } - - public function path($module_name) - { - return $this->dir($module_name); - } - - public function dir($module_name) - { - if (!is_string($module_name)) { - return false; - } - - $args = func_get_args(); - $function_cache_id = ''; - foreach ($args as $k => $v) { - $function_cache_id = $function_cache_id . serialize($k) . serialize($v); - } - - $cache_id = $function_cache_id = __FUNCTION__ . crc32($function_cache_id); - $cache_group = 'modules/global'; - $cache_content = $this->app->cache_manager->get($cache_id, $cache_group); - if (($cache_content) != false) { - return $cache_content; - } - $checked = array(); - if (!isset($checked[$module_name])) { - $ch = $this->locate($module_name, $custom_view = false); - if ($ch != false) { - $ch = dirname($ch); - $ch = normalize_path($ch, 1); - $checked[$module_name] = $ch; - } else { - $checked[$module_name] = false; - } - } - $this->app->cache_manager->save($checked[$module_name], $function_cache_id, $cache_group); - - return $checked[$module_name]; - } - - public function is_installed($module_name) - { - $module_name = trim($module_name); - $module_namei = $module_name; - if (strstr($module_name, 'admin')) { - $module_namei = str_ireplace('\\admin', '', $module_namei); - $module_namei = str_ireplace('/admin', '', $module_namei); - } - $uninstall_lock = $this->get('one=1&ui=any&module=' . $module_namei); - - if (!$uninstall_lock or empty($uninstall_lock) or (isset($uninstall_lock['installed']) and $uninstall_lock['installed'] != '' and intval($uninstall_lock['installed']) != 1)) { - $root_mod= $this->locate_root_module($module_name); - if($root_mod){ - $uninstall_lock = $this->get('one=1&ui=any&module=' . $root_mod); - if (empty($uninstall_lock) or (isset($uninstall_lock['installed']) and $uninstall_lock['installed'] != '' and intval($uninstall_lock['installed']) != 1)) { - return false; - } else { - return true; - } - } - return false; - } else { - return true; - } - } - - public function reorder_modules($data) - { - $adm = $this->app->user_manager->is_admin(); - if ($adm == false) { - mw_error('Error: not logged in as admin.' . __FILE__ . __LINE__); - } - $table = $this->tables['modules']; - foreach ($data as $value) { - if (is_array($value)) { - $indx = array(); - $i = 0; - foreach ($value as $value2) { - $indx[$i] = $value2; - ++$i; - } - $this->app->database_manager->update_position_field($table, $indx); - - return $indx; - } - } - // $this->db_init(); - } - - public function delete_all() - { - if ($this->app->user_manager->is_admin() == false) { - return false; - } else { - $table = $this->tables['modules']; - $db_categories = $this->table_prefix . 'categories'; - $db_categories_items = $this->table_prefix . 'categories_items'; - - $q = "DELETE FROM $table "; - $this->app->database_manager->q($q); - - $q = "DELETE FROM $db_categories WHERE rel_type='modules' AND data_type='category' "; - $this->app->database_manager->q($q); - - $q = "DELETE FROM $db_categories_items WHERE rel_type='modules' AND data_type='category_item' "; - $this->app->database_manager->q($q); - $this->app->cache_manager->delete('categories' . DIRECTORY_SEPARATOR . ''); - $this->app->cache_manager->delete('categories_items' . DIRECTORY_SEPARATOR . ''); - - $this->app->cache_manager->delete('modules' . DIRECTORY_SEPARATOR . ''); - } - } - - public function icon_with_title($module_name, $link = true) - { - $params = array(); - $to_print = ''; - $params['module'] = $module_name; - $params['ui'] = 'any'; - $params['limit'] = 1; - - $data = $this->get($params); - $info = false; - if (isset($data[0])) { - $info = $data[0]; - } - if ($link == true and $info != false) { - $href = admin_url() . 'view:modules/load_module:' . module_name_encode($info['module']); - } else { - $href = '#'; - } - - if (isset($data[0])) { - $info = $data[0]; - $tn_ico = thumbnail($info['icon'], 32, 32); - $to_print = '' . $info['name'] . ''; - } - echo $to_print; - } - - public function uninstall($params) - { - if ($this->app->user_manager->is_admin() == false) { - return false; - } - if (isset($params['id'])) { - $id = intval($params['id']); - $this_module = $this->get('ui=any&one=1&id=' . $id); - if ($this_module != false and is_array($this_module) and isset($this_module['id'])) { - $module_name = $this_module['module']; - if ($this->app->user_manager->is_admin() == false) { - return false; - } - - if (trim($module_name) == '') { - return false; - } - $loc_of_config = $this->locate($module_name, 'config'); - $res = array(); - $loc_of_functions = $this->locate($module_name, 'functions'); - $cfg = false; - if (is_file($loc_of_config)) { - include $loc_of_config; - if (isset($config)) { - $cfg = $config; - } - if (is_array($cfg) and !empty($cfg)) { - if (isset($cfg['on_uninstall'])) { - $func = $cfg['on_uninstall']; - if (!function_exists($func)) { - if (is_file($loc_of_functions)) { - include_once $loc_of_functions; - } - } - if (function_exists($func)) { - $res = $func(); - // return $res; - } - } - } - } - $to_save = array(); - $to_save['id'] = $id; - $to_save['installed'] = '0'; - $this->save($to_save); - } - } - $this->app->cache_manager->delete('modules' . DIRECTORY_SEPARATOR . ''); - } - - public function set_installed($params) - { - if ($this->app->user_manager->is_admin() == false) { - return false; - } - - if (isset($params['for_module'])) { - $this_module = $this->get('ui=any&one=1&module=' . $params['for_module']); - if (isset($this_module['id'])) { - $params['id'] = $this_module['id']; - } - } - - if (isset($params['id'])) { - $id = intval($params['id']); - $this_module = $this->get('ui=any&one=1&id=' . $id); - if ($this_module != false and is_array($this_module) and isset($this_module['id'])) { - $module_name = $this_module['module']; - - if (trim($module_name) == '') { - return false; - } - $loc_of_config = $this->locate($module_name, 'config'); - $res = array(); - $loc_of_functions = $this->locate($module_name, 'functions'); - $cfg = false; - if (is_file($loc_of_config)) { - include $loc_of_config; - if (isset($config)) { - $cfg = $config; - } - if (is_array($cfg) and !empty($cfg)) { - if (isset($cfg['on_install'])) { - $func = $cfg['on_install']; - if (!function_exists($func)) { - if (is_file($loc_of_functions)) { - include_once $loc_of_functions; - } - } - if (function_exists($func)) { - $res = $func(); - } - } - } - } - $to_save = array(); - $to_save['id'] = $id; - $to_save['installed'] = 1; - $this->save($to_save); - } - } - $this->app->cache_manager->delete('modules' . DIRECTORY_SEPARATOR . ''); - } - - public function update_db() - { - if (isset($options['glob'])) { - $glob_patern = $options['glob']; - } else { - $glob_patern = 'config.php'; - } - - //$this->app->cache_manager->clear(); - //clearstatcache(); - $dir_name_mods = modules_path(); - $modules_remove_old = false; - $dir = rglob($glob_patern, 0, $dir_name_mods); - - if (!empty($dir)) { - $configs = array(); - foreach ($dir as $value) { - $loc_of_config = $value; - if ($loc_of_config != false and is_file($loc_of_config)) { - include $loc_of_config; - if (isset($config)) { - $cfg = $config; - if (isset($config['tables']) and is_array($config['tables'])) { - $tabl = $config['tables']; - foreach ($tabl as $key1 => $fields_to_add) { - $table = $this->app->database_manager->real_table_name($key1); - $this->app->database_manager->build_table($table, $fields_to_add); - } - } - } - } - } - } - } - - public function get_saved_modules_as_template($params) - { - $params = parse_params($params); - - if ($this->app->user_manager->is_admin() == false) { - return false; - } - - $table = 'module_templates'; - - $params['table'] = $table; - - $data = $this->app->database_manager->get($params); - - return $data; - } - - public function delete_module_as_template($data) - { - if ($this->app->user_manager->is_admin() == false) { - return false; - } - - $table = 'module_templates'; - $save = false; - - $adm = $this->app->user_manager->is_admin(); - if ($adm == false) { - mw_error('Error: not logged in as admin.' . __FILE__ . __LINE__); - } - - if (isset($data['id'])) { - $c_id = intval($data['id']); - $this->app->database_manager->delete_by_id($table, $c_id); - } - - if (isset($data['ids']) and is_array($data['ids'])) { - foreach ($data['ids'] as $value) { - $c_id = intval($value); - $this->app->database_manager->delete_by_id($table, $c_id); - } - } - } - - public function save_module_as_template($data_to_save) - { - if ($this->app->user_manager->is_admin() == false) { - return false; - } - - $table = 'module_templates'; - $save = false; - - if (!empty($data_to_save)) { - $s = $data_to_save; - - $save = $this->app->database_manager->save($table, $s); - } - - return $save; - } - - public function scan_for_elements($options = array()) - { - if (is_string($options)) { - $params = parse_str($options, $params2); - $options = $params2; - } - - $options['is_elements'] = 1; - $options['dir_name'] = normalize_path(elements_path()); - - if (isset($options['cleanup_db'])) { - $this->app->layouts_manager->delete_all(); - } - - return $this->scan_for_modules($options); - } - - public function get_modules_from_current_site_template() - { - if (!defined('ACTIVE_TEMPLATE_DIR')) { - $this->app->content_manager->define_constants(); - } - - $dir_name = ACTIVE_TEMPLATE_DIR . 'modules' . DS; - - - if (is_dir($dir_name)) { - $configs = array(); - - $glob_patern = '*config.php'; - - $dir = rglob($glob_patern, 0, $dir_name); - $replace_root = normalize_path($dir_name); - $def_icon = modules_path() . 'default.png'; - if (!empty($dir)) { - foreach ($dir as $module) { - $module_dir = dirname($module); - $module_dir = normalize_path($module_dir); - $config = array(); - include $module; - $module_name = str_replace($replace_root, '', $module_dir); - - $module_name = rtrim($module_name, '\\'); - $module_name = rtrim($module_name, '/'); - $config['module'] = $module_name; - - $config['module'] = rtrim($config['module'], '\\'); - $config['module'] = rtrim($config['module'], '/'); - - $try_icon = $module_dir . $module_name . '.png'; - if (is_file($try_icon)) { - $config['icon'] = $this->app->url_manager->link_to_file($try_icon); - } elseif (is_file($module_dir . $module_name . '.jpg')) { - $config['icon'] = $this->app->url_manager->link_to_file($module_dir . $module_name . '.jpg'); - } else { - $config['icon'] = $this->app->url_manager->link_to_file($def_icon); - } - - if (isset($config['ui'])) { - $config['ui'] = intval($config['ui']); - } else { - $config['ui'] = 0; - } - - if ($config['ui'] == 0) { - continue; - } - - - $configs[] = $config; - } - } - - return $configs; - } - } - - public $logger = null; - - - public function log($text) - { - if (is_object($this->logger) and method_exists($this->logger, 'log')) { - $this->logger->log($text); - } - } - - - public $_module_locations_root_cache = array(); - - public function locate_root_module($module_name) - { - if (isset($this->_module_locations_root_cache[$module_name])) { - return $this->_module_locations_root_cache[$module_name]; - } - - - $module_name_parts = explode('/', $module_name); - - - if ($module_name_parts and is_array($module_name_parts)) { - $folders_to_check = array(); - $module_name_parts_count = count($module_name_parts) - 1; - - if ($module_name_parts_count) { - for ($id = $module_name_parts_count; $id > 0; $id--) { - unset($module_name_parts[$id]); - if ($module_name_parts) { - $folders_to_check[] = implode('/', $module_name_parts); - } - } - } - - if ($folders_to_check) { - - foreach ($folders_to_check as $module_name_check) { - $modules_dir_default = modules_path() . $module_name_check; - $modules_dir_default = normalize_path($modules_dir_default, true); - if (is_dir($modules_dir_default) and is_file($modules_dir_default . 'config.php')) { - $this->_module_locations_root_cache[$module_name] = $module_name_check; - return $module_name_check; -// $is_installed = $this->app->modules->is_installed($module_name_check); -// if (!$is_installed) { -// return ''; -// } - } - - } - - } - - } - - } - -} diff --git a/update/src/Microweber/Providers/Shop/CheckoutManager.php b/update/src/Microweber/Providers/Shop/CheckoutManager.php deleted file mode 100644 index 97f02097..00000000 --- a/update/src/Microweber/Providers/Shop/CheckoutManager.php +++ /dev/null @@ -1,795 +0,0 @@ -app = $app; - } else { - $this->app = mw(); - } - - $tables['cart'] = 'cart'; - - $tables['cart_orders'] = 'cart_orders'; - - $tables['cart_shipping'] = 'cart_shipping'; - - $tables['cart_taxes'] = 'cart_taxes'; - - $this->tables = $tables; - } - - public function checkout($data) - { - $exec_return = false; - $sid = $this->app->user_manager->session_id(); - $sess_order_id = $this->app->user_manager->session_get('order_id'); - $cart = array(); - $cart_table = $this->tables['cart']; - $table_orders = $this->tables['cart_orders']; - $cart['session_id'] = $sid; - $cart['order_completed'] = 0; - $cart['limit'] = 1; - $mw_process_payment = true; - $mw_process_payment_success = false; - $mw_process_payment_failed = false; - - if (isset($_REQUEST['mw_payment_success']) or isset($_REQUEST['mw_payment_failure'])) { - $update_order = $update_order_orig = $this->app->order_manager->get_by_id($sess_order_id); - if (isset($update_order['payment_gw'])) { - $gw_return = normalize_path(modules_path() . $update_order['payment_gw'] . DS . 'return.php', false); - if (is_file($gw_return)) { - include $gw_return; - if ($update_order != $update_order_orig) { - $this->app->order_manager->save($update_order); - } - } - } - - if (isset($_REQUEST['mw_payment_success'])) { - $mw_process_payment = false; - $mw_process_payment_success = true; - $exec_return = true; - } elseif (isset($_REQUEST['mw_payment_failure'])) { - if (isset($_REQUEST['recart']) and $_REQUEST['recart'] != false and isset($_REQUEST['order_id'])) { - - mw()->cart_manager->recover_cart($_REQUEST['recart'], $_REQUEST['order_id']); - } - - $mw_process_payment_failed = true; - $exec_return = true; - } - } - - $cart_table_real = $this->app->database_manager->real_table_name($cart_table); - $order_table_real = $this->app->database_manager->real_table_name($table_orders); - - if ($exec_return == true) { - $return_url = $this->app->user_manager->session_get('checkout_return_to_url'); - if (isset($_REQUEST['return_to']) and $_REQUEST['return_to'] != false) { - $return_url = urldecode($_REQUEST['return_to']); - } - if ($return_url) { - $return_to = $return_url; - $append = '?'; - if (strstr($return_to, '?')) { - $append = '&'; - } - if ($mw_process_payment_success == true) { - $return_to = $return_to . $append . 'mw_payment_success=1'; - } elseif ($mw_process_payment_failed == true) { - $return_to = $return_to . $append . 'mw_payment_failure=1'; - } - - return $this->app->url_manager->redirect($return_to); - } - } - - $additional_fields = false; - if (isset($data['for']) and isset($data['for_id'])) { - $additional_fields = $this->app->fields_manager->get($data['for'], $data['for_id'], 1); - } - - $seach_address_keys = array('country', 'city', 'address', 'state', 'zip'); - $addr_found_from_search_in_post = false; - - if (isset($data) and is_array($data)) { - foreach ($data as $k => $v) { - if (is_array($v)) { - foreach ($seach_address_keys as $item) { - $case1 = ucfirst($item); - if (!isset($data[$item]) and (isset($v[$item]) or isset($v[$case1]))) { - $data[$item] = $v[$item]; - if ($addr_found_from_search_in_post == false) { - unset($data[$k]); - } - $addr_found_from_search_in_post = 1; - } - } - } - } - } - $save_custom_fields_for_order = array(); - if (is_array($additional_fields) and !empty($additional_fields)) { - foreach ($additional_fields as $cf) { - if (isset($data) and is_array($data)) { - foreach ($data as $k => $item) { - $key1 = str_replace('_', ' ', $cf['name']); - $key2 = str_replace('_', ' ', $k); - if ($key1 == $key2) { - $save_custom_fields_for_order[$key1] = $this->app->format->clean_html($item); - } - } - } - } - } - - $checkout_errors = array(); - $check_cart = $this->app->shop_manager->get_cart($cart); - - if (!is_array($check_cart)) { - $checkout_errors['cart_empty'] = 'Your cart is empty'; - } else { - - - if (!is_admin()) { - $shop_require_terms = $this->app->option_manager->get('shop_require_terms', 'website'); - if ($shop_require_terms) { - $user_id_or_email = $this->app->user_manager->id(); - if (!$user_id_or_email) { - if (isset($data['email'])) { - $user_id_or_email = $data['email']; - } - } - - if (!$user_id_or_email) { - $checkout_errors['cart_needs_email'] = _e('You must provide email address', true); - } else { - $terms_and_conditions_name = 'terms_shop'; - - $check_term = $this->app->user_manager->terms_check($terms_and_conditions_name, $user_id_or_email); - if (!$check_term) { - if (isset($data['terms']) and $data['terms']) { - $this->app->user_manager->terms_accept($terms_and_conditions_name, $user_id_or_email); - } else { - return array( - 'error' => _e('You must agree to terms and conditions', true), - 'form_data_required' => 'terms', - 'form_data_module' => 'users/terms' - ); - - } - } - } - } - } - - - if (!isset($data['payment_gw']) and $mw_process_payment == true) { - $data['payment_gw'] = 'none'; - } else { - if ($mw_process_payment == true) { - $gw_check = $this->payment_options('payment_gw_' . $data['payment_gw']); - if (is_array($gw_check[0])) { - $gateway = $gw_check[0]; - } else { - $checkout_errors['payment_gw'] = 'No such payment gateway is activated'; - } - } - } - - $shipping_country = false; - $shipping_cost_max = false; - $shipping_cost = false; - $shipping_cost_above = false; - - $discount_value = false; - $discount_type = false; - - $coupon_id = false; - $coupon_code = false; - - if (($this->app->user_manager->session_get('shipping_country'))) { - $shipping_country = $this->app->user_manager->session_get('shipping_country'); - } - if (($this->app->user_manager->session_get('shipping_cost_max'))) { - $shipping_cost_max = $this->app->user_manager->session_get('shipping_cost_max'); - } - if (($this->app->user_manager->session_get('shipping_cost'))) { - $shipping_cost = $this->app->user_manager->session_get('shipping_cost'); - } - if (($this->app->user_manager->session_get('shipping_cost_above'))) { - $shipping_cost_above = $this->app->user_manager->session_get('shipping_cost_above'); - } - if (($this->app->user_manager->session_get('discount_value'))) { - $discount_value = $this->app->user_manager->session_get('discount_value'); - } - if (($this->app->user_manager->session_get('discount_type'))) { - $discount_type = $this->app->user_manager->session_get('discount_type'); - } - if (($this->app->user_manager->session_get('coupon_id'))) { - $coupon_id = $this->app->user_manager->session_get('coupon_id'); - } - if (($this->app->user_manager->session_get('coupon_code'))) { - $coupon_code = $this->app->user_manager->session_get('coupon_code'); - } - - //post any of those on the form - $flds_from_data = array('first_name', 'last_name', 'email', 'country', 'city', 'state', 'zip', 'address', 'address2', 'payment_email', 'payment_name', 'payment_country', 'payment_address', 'payment_city', 'payment_state', 'payment_zip', 'phone', 'promo_code', 'payment_gw', 'other_info'); - - if (!isset($data['email']) or $data['email'] == '') { - $data['email'] = user_name(user_id(), 'email'); - } - if (!isset($data['email']) or $data['email'] == '') { - $checkout_errors['email'] = 'Email is required'; - } - - if (!isset($data['first_name']) or $data['first_name'] == '') { - $data['first_name'] = user_name(user_id(), 'first'); - } - if (!isset($data['first_name']) or $data['first_name'] == '') { - $checkout_errors['first_name'] = 'First name is required'; - } - - if (!isset($data['last_name']) or $data['last_name'] == '') { - // $checkout_errors['last_name'] = 'Last name is required'; - $data['last_name'] = user_name(user_id(), 'last'); - } - - if (isset($data['payment_gw']) and $data['payment_gw'] != '') { - $data['payment_gw'] = str_replace('..', '', $data['payment_gw']); - } - - - $custom_order_id = $this->app->option_manager->get('custom_order_id', 'shop'); - $posted_fields = array(); - $place_order = array(); - $place_order['id'] = false; - - $return_url_after = ''; - $return_to_ref = false; - $set_return_url_from_ref = false; - - - if ($this->app->url_manager->is_ajax()) { - $set_return_url_from_ref = $this->app->url_manager->current(true); - } elseif (isset($_SERVER['HTTP_REFERER'])) { - $set_return_url_from_ref = $_SERVER['HTTP_REFERER']; - } - - if ($set_return_url_from_ref) { - $urlarray = explode('?', $set_return_url_from_ref); - if (isset($urlarray[0]) and isset($urlarray[1])) { - parse_str($urlarray[1], $ref_params); - if (isset($ref_params['mw_payment_failure'])) { - unset($ref_params['mw_payment_failure']); - } - if (isset($ref_params['mw_payment_success'])) { - unset($ref_params['mw_payment_success']); - } - $rebuild = http_build_query($ref_params, '', '&'); - if ($rebuild) { - $set_return_url_from_ref = $urlarray[0] . '?' . $rebuild; - } else { - $set_return_url_from_ref = $urlarray[0]; - } - } - $place_order['url'] = $set_return_url_from_ref; - $return_url_after = '&return_to=' . urlencode($set_return_url_from_ref); - $this->app->user_manager->session_set('checkout_return_to_url', $set_return_url_from_ref); - } else { - $place_order['url'] = $this->app->url_manager->current(); - } - - $place_order['session_id'] = $sid; - $place_order['order_completed'] = 0; - $items_count = 0; - - foreach ($flds_from_data as $value) { - if (isset($data[$value]) and ($data[$value]) != false) { - $place_order[$value] = $data[$value]; - $posted_fields[$value] = $data[$value]; - } - } - - $amount = $this->app->shop_manager->cart_total(); - $tax = $this->app->cart_manager->get_tax(); - - if (!empty($checkout_errors)) { - return array('error' => $checkout_errors); - } - - $place_order['amount'] = $amount; - $place_order['allow_html'] = true; - $place_order['currency'] = $this->app->option_manager->get('currency', 'payments'); - - if (isset($data['shipping_gw'])) { - $place_order['shipping_service'] = $data['shipping_gw']; - } - $place_order['shipping'] = $shipping_cost; - if ($tax != 0) { - $place_order['taxes_amount'] = $tax; - } - - $items_count = $this->app->shop_manager->cart_sum(false); - $place_order['items_count'] = $items_count; - - $cart_checksum = md5($sid . serialize($check_cart) . uniqid()); - - $place_order['payment_verify_token'] = $cart_checksum; - - if (isset($save_custom_fields_for_order) and !empty($save_custom_fields_for_order)) { - $place_order['custom_fields_data'] = $this->app->format->array_to_base64($save_custom_fields_for_order); - } - - if (!isset($place_order['shipping']) or $place_order['shipping'] == false) { - $place_order['shipping'] = 0; - } - - $temp_order = $this->app->database_manager->save($table_orders, $place_order); - if ($temp_order != false) { - $place_order['id'] = $temp_order; - } else { - $place_order['id'] = 0; - } - - if ($custom_order_id != false) { - foreach ($place_order as $key => $value) { - $custom_order_id = str_ireplace('{' . $key . '}', $value, $custom_order_id); - } - - $custom_order_id = str_ireplace('{YYYYMMDD}', date('Ymd'), $custom_order_id); - $custom_order_id = str_ireplace('{date}', date('Y-m-d'), $custom_order_id); - } - - if ($custom_order_id != false) { - $place_order['item_name'] = 'Order id:' . ' ' . $custom_order_id; - $place_order['order_id'] = $custom_order_id; - } else { - $place_order['item_name'] = 'Order id:' . ' ' . $place_order['id']; - } - - - // Discount details save - $place_order['promo_code'] = $coupon_code; - $place_order['coupon_id'] = $coupon_id; - $place_order['discount_type'] = $discount_type; - $place_order['discount_value'] = $discount_value; - - - if ($mw_process_payment == true) { - $shop_dir = module_dir('shop'); - $shop_dir = $shop_dir . DS . 'payments' . DS . 'gateways' . DS; - - if ($data['payment_gw'] != 'none') { - $gw_process = modules_path() . $data['payment_gw'] . '_process.php'; - if (!is_file($gw_process)) { - $gw_process = normalize_path(modules_path() . $data['payment_gw'] . DS . 'process.php', false); - } - - $mw_return_url = $this->app->url_manager->api_link('checkout') . '?mw_payment_success=1&order_id=' . $place_order['id'] . '&payment_gw=' . $data['payment_gw'] . '&payment_verify_token=' . $place_order['payment_verify_token'] . $return_url_after; - $mw_cancel_url = $this->app->url_manager->api_link('checkout') . '?mw_payment_failure=1&order_id=' . $place_order['id'] . '&payment_gw=' . $data['payment_gw'] . '&recart=' . $sid . $return_url_after; - $mw_ipn_url = $this->app->url_manager->api_link('checkout_ipn') . '?payment_gw=' . $data['payment_gw'] . '&order_id=' . $place_order['id'] . '&payment_verify_token=' . $place_order['payment_verify_token'] . $return_url_after; - - if (is_file($gw_process)) { - require_once $gw_process; - } else { - $checkout_errors['payment_gw'] = 'Payment gateway\'s process file not found.'; - } - } else { - $place_order['order_completed'] = 1; - $place_order['is_paid'] = 0; - $place_order['success'] = 'Your order has been placed successfully!'; - } - - - $place_order['order_status'] = 'new'; - - if (!empty($checkout_errors)) { - return array('error' => $checkout_errors); - } - - if (isset($place_order['error'])) { - return array('error' => $place_order['error']); - } - - $ord = $this->app->shop_manager->place_order($place_order); - $place_order['id'] = $ord; - } - - if (isset($place_order) and !empty($place_order)) { - if (!isset($place_order['success'])) { - $place_order['success'] = 'Your order has been placed successfully!'; - } - $return = $place_order; - if (isset($place_order['redirect'])) { - $return['redirect'] = $place_order['redirect']; - } - - return $return; - } - } - - if (!empty($checkout_errors)) { - return array('error' => $checkout_errors); - } - } - - public function payment_options($option_key = false) - { - $option_key_q = ''; - if (is_string($option_key)) { - $option_key_q = "&limit=1&option_key={$option_key}"; - } - $providers = $this->app->option_manager->get_all('option_group=payments' . $option_key_q); - - $payment_modules = get_modules('type=payment_gateway'); - $str = 'payment_gw_'; - $l = strlen($str); - $enabled_providers = array(); - if (!empty($payment_modules) and !empty($providers)) { - foreach ($payment_modules as $payment_module) { - foreach ($providers as $value) { - if ($value['option_value'] == 1) { - if (substr($value['option_key'], 0, $l) == $str) { - $title = substr($value['option_key'], $l); - $string = preg_replace('/(\w+)([A-Z])/U', '\\1 \\2', $title); - $value['gw_file'] = $title; - - if (isset($payment_module['module']) and $value['gw_file'] == $payment_module['module']) { - $payment_module['gw_file'] = $title; - $enabled_providers[] = $payment_module; - } - } - } - } - } - } - - if (!empty($enabled_providers)) { - return $enabled_providers; - } - - // the rest is for comaptibily and will be removed in the near future - $str = 'payment_gw_'; - $l = strlen($str); - if (is_array($providers)) { - $valid = array(); - foreach ($providers as $value) { - if ($value['option_value'] == 1) { - if (substr($value['option_key'], 0, $l) == $str) { - $title = substr($value['option_key'], $l); - $string = preg_replace('/(\w+)([A-Z])/U', '\\1 \\2', $title); - $value['gw_file'] = $title; - $mod_infp = $this->app->modules->get('ui=any&one=1&module=' . $title); - - if (!empty($mod_infp)) { - $value = $mod_infp; - $title = str_replace('..', '', $title); - - $value['gw_file'] = $title; - $valid[] = $value; - } - } - } - } - - return $valid; - } - } - - public function after_checkout($order_id, $suppress_output = true) - { - if ($suppress_output == true) { - ob_start(); - } - if ($order_id == false or trim($order_id) == '') { - return array('error' => 'Invalid order ID'); - } - - $ord_data = $this->app->shop_manager->get_orders('one=1&id=' . $order_id); - - if (is_array($ord_data)) { - $ord = $order_id; - $notification = array(); - $notification['module'] = 'shop'; - $notification['rel_type'] = 'cart_orders'; - $notification['rel_id'] = $ord; - $notification['title'] = 'You have new order'; - $notification['description'] = 'New order is placed from ' . $this->app->url_manager->current(1); - $notification['content'] = 'New order in the online shop. Order id: ' . $ord; - $this->app->notifications_manager->save($notification); - $this->app->log_manager->save($notification); - $this->confirm_email_send($order_id); - } - if ($suppress_output == true) { - ob_end_clean(); - } - } - - public function confirm_email_send($order_id, $to = false, $no_cache = false, $skip_enabled_check = false) - { - $ord_data = $this->app->shop_manager->get_order_by_id($order_id); - - if (is_array($ord_data)) { - if ($skip_enabled_check == false) { - $order_email_enabled = $this->app->option_manager->get('order_email_enabled', 'orders'); - } else { - $order_email_enabled = $skip_enabled_check; - } - - - if ($order_email_enabled == true) { - - // $order_email_subject = $this->app->option_manager->get('order_email_subject', 'orders'); - // $order_email_content = $this->app->option_manager->get('order_email_content', 'orders'); - - $mail_template = false; - $mail_template_binds = $this->app->event_manager->trigger('mw.cart.confirm_email_send', $order_id); - if (is_array($mail_template_binds)) { - foreach ($mail_template_binds as $bind) { - if (is_array($bind) && isset($bind['mail_template'])) { - $mail_template = $bind['mail_template']; - } - } - } - - if (!$mail_template) { - return; - } - - $order_email_subject = $mail_template['subject']; - $order_email_content = $mail_template['message']; - - $order_email_cc = $this->app->option_manager->get('order_email_cc', 'orders'); - $order_email_send_when = $this->app->option_manager->get('order_email_send_when', 'orders'); - if ($order_email_send_when == 'order_paid' and !$skip_enabled_check) { - if (isset($ord_data['is_paid']) and $ord_data['is_paid'] == false) { - return; - } - } - - if ($order_email_subject == false or trim($order_email_subject) == '') { - $order_email_subject = 'Thank you for your order!'; - } - if ($to == false) { - $to = $ord_data['email']; - } - if ($order_email_content != false and trim($order_email_subject) != '') { - $cart_items = array(); - if (!empty($ord_data)) { - $cart_items = $this->app->shop_manager->get_cart('order_id=' . $ord_data['id'] . '&no_session_id=' . $this->app->user_manager->session_id()); - - $cart_items_info = array(); - - foreach ($cart_items as $cart_item) { - $arr = array(); - if (isset($cart_item['item_image']) and $cart_item['item_image']) { - - $arr['item_image'] = $cart_item['item_image']; - $arr['item_image'] = ''; - } - if (isset($cart_item['link'])) { - $arr['link'] = $cart_item['link']; - } - if (isset($cart_item['title'])) { - $arr['title'] = $cart_item['title']; - } - if (isset($cart_item['custom_fields'])) { - $arr['custom_fields'] = $cart_item['custom_fields']; - } - $cart_items_info[] = $arr; - } - - $order_items_html = $this->app->format->array_to_table($cart_items_info); - $order_email_content = str_replace('{{cart_items}}', $order_items_html, $order_email_content); - $order_email_content = str_replace('{{date}}', date('F jS, Y', strtotime($ord_data['created_at'])), $order_email_content); - foreach ($ord_data as $key => $value) { - if (!is_array($value) and is_string($key)) { - if (strtolower($key) == 'amount') { - $value = number_format($value, 2); - $order_email_content = str_ireplace('{{' . $key . '}}', $value, $order_email_content); - continue; - } - } - } - } - - if (get_option('bank_transfer_send_email_instructions', 'payments') == 'y') { - $order_email_content .= _e("Follow payment instructions", true); - $order_email_content .= '
' . get_option('bank_transfer_instructions', 'payments'); - } - - $twig = new \Twig_Environment(new \Twig_Loader_String()); - $order_email_content = $twig->render( - $order_email_content, - array( - 'cart' => $cart_items, - 'order' => $ord_data, - 'order_id'=>$ord_data['id'], - 'transaction_id'=>$ord_data['transaction_id'], - 'currency'=>$ord_data['currency'], - 'order_status'=>$ord_data['order_status'], - 'first_name'=>$ord_data['first_name'], - 'last_name'=>$ord_data['last_name'], - 'email'=>$ord_data['email'], - 'phone'=>$ord_data['phone'], - 'address'=>$ord_data['address'], - 'zip'=>$ord_data['zip'], - 'state'=>$ord_data['state'], - 'city'=>$ord_data['city'], - 'country'=>$ord_data['country'] - ) - ); - - if (isset($to) and (filter_var($to, FILTER_VALIDATE_EMAIL))) { - $sender = new \Microweber\Utils\MailSender(); - $sender->send($to, $order_email_subject, $order_email_content); - $cc = false; - if (isset($order_email_cc) and (filter_var($order_email_cc, FILTER_VALIDATE_EMAIL))) { - $cc = $order_email_cc; - $sender->send($cc, $order_email_subject, $order_email_content, false, $no_cache); - } - - return true; - } - } - } - } - } - - public function checkout_ipn($data) - { - if (isset($data['payment_verify_token'])) { - $payment_verify_token = ($data['payment_verify_token']); - } - if (!isset($data['payment_gw'])) { - return array('error' => 'You must provide a payment gateway parameter!'); - } - - $data['payment_gw'] = str_replace('..', '', $data['payment_gw']); - - $hostname = $this->get_domain_from_str($_SERVER['REMOTE_ADDR']); - - $payment_verify_token = $this->app->database_manager->escape_string($payment_verify_token); - $table = $this->tables['cart_orders']; - - $query = array(); - $query['payment_verify_token'] = $payment_verify_token; - if (isset($data['order_id'])) { - $query['id'] = intval($data['order_id']); - } else { - $query['transaction_id'] = '[null]'; - } - $query['limit'] = 1; - $query['table'] = $table; - $query['no_cache'] = true; - - $ord_data = $this->app->database_manager->get($query); - if (!isset($ord_data[0]) or !is_array($ord_data[0])) { - return array('error' => 'Order is completed or expired.'); - } else { - $ord_data = $ord_data[0]; - $ord = $ord_data['id']; - } - - $cart_table = $this->tables['cart']; - $table_orders = $this->tables['cart_orders']; - - $data['payment_gw'] = str_replace('..', '', $data['payment_gw']); - $gw_process = modules_path() . $data['payment_gw'] . '_checkout_ipn.php'; - if (!is_file($gw_process)) { - $gw_process = normalize_path(modules_path() . $data['payment_gw'] . DS . 'checkout_ipn.php', false); - } - if (!is_file($gw_process)) { - $gw_process = normalize_path(modules_path() . $data['payment_gw'] . DS . 'notify.php', false); - } - - $update_order = array(); - if (is_file($gw_process)) { - include $gw_process; - } else { - return array('error' => 'The payment gateway is not found!'); - } - - if (!empty($update_order) and isset($update_order['order_completed']) and trim($update_order['order_completed']) == 1) { - $update_order['id'] = $ord; - $update_order['payment_gw'] = $data['payment_gw']; - $ord = $this->app->database_manager->save($table_orders, $update_order); - $this->confirm_email_send($ord); - if (isset($update_order['is_paid']) and $update_order['is_paid'] == 1) { - $this->app->shop_manager->update_quantities($ord); - } - if ($ord > 0) { - $this->app->cache_manager->delete('cart/global'); - $this->app->cache_manager->delete('cart_orders/global'); - //return true; - } - } - - if (isset($data['return_to'])) { - $return_to = urldecode($data['return_to']); - - $append = '?'; - if (strstr($return_to, '?')) { - $append = '&'; - } - $return_to = $return_to . $append . 'mw_payment_success=1'; - - return $this->app->url_manager->redirect($return_to); - } - - return; - } - - private function get_domain_from_str($address) - { - $address = gethostbyaddr($address); - $parsed_url = parse_url($address); - if (!isset($parsed_url['host'])) { - if (isset($parsed_url['path'])) { - $parsed_url['host'] = $parsed_url['path']; - } - } - $check = $this->esip($parsed_url['host']); - $host = $parsed_url['host']; - if ($check == false) { - if ($host != '') { - $host = $this->domain_name($host); - } else { - $host = $this->domain_name($address); - } - } - - return $host; - } - - private function esip($ip_addr) - { - if (preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/", $ip_addr)) { - $parts = explode('.', $ip_addr); - foreach ($parts as $ip_parts) { - if (intval($ip_parts) > 255 || intval($ip_parts) < 0) { - return false; - } - } - - return true; - } else { - return false; - } - } - - private function domain_name($domainb) - { - $bits = explode('/', $domainb); - if ($bits[0] == 'http:' || $bits[0] == 'https:') { - $domainb = $bits[2]; - } else { - $domainb = $bits[0]; - } - unset($bits); - $bits = explode('.', $domainb); - $idz = count($bits); - $idz -= 3; - if (strlen($bits[($idz + 2)]) == 2) { - $url = $bits[$idz] . '.' . $bits[($idz + 1)] . '.' . $bits[($idz + 2)]; - } elseif (strlen($bits[($idz + 2)]) == 0) { - $url = $bits[($idz)] . '.' . $bits[($idz + 1)]; - } else { - $url = $bits[($idz + 1)] . '.' . $bits[($idz + 2)]; - } - - return $url; - } -} diff --git a/update/src/Microweber/Providers/Shop/OrderManager.php b/update/src/Microweber/Providers/Shop/OrderManager.php deleted file mode 100644 index d073ee4b..00000000 --- a/update/src/Microweber/Providers/Shop/OrderManager.php +++ /dev/null @@ -1,296 +0,0 @@ -app = $app; - } else { - $this->app = mw(); - } - } - - public function get($params = false) - { - $params2 = array(); - if ($params == false) { - $params = array(); - } - if (is_string($params)) { - $params = parse_str($params, $params2); - $params = $params2; - } - if (defined('MW_API_CALL') and $this->app->user_manager->is_admin() == false) { - if (!isset($params['payment_verify_token'])) { - $params['session_id'] = mw()->user_manager->session_id(); - } - } - if (isset($params['keyword'])) { - $params['search_in_fields'] = array('first_name', 'last_name', 'email', 'city', 'state', 'zip', 'address', 'address2', 'phone', 'promo_code'); - } - $table = $table = $this->table; - $params['table'] = $table; - - return $this->app->database_manager->get($params); - } - - public function get_by_id($id = false) - { - $table = $this->table; - $params['table'] = $table; - $params['one'] = true; - - $params['id'] = intval($id); - - $item = $this->app->database_manager->get($params); - - if (is_array($item) and isset($item['custom_fields_data']) and $item['custom_fields_data'] != '') { - $item = $this->app->format->render_item_custom_fields_data($item); - } - - return $item; - } - public function get_count_of_new_orders() - { - return $this->get('count=1&order_status=new&is_completed=y'); - - } - - public function get_items($order_id = false) - { - return $this->app->cart_manager->get_by_order_id($order_id); - } - - public function delete_order($data) - { - // this function also handles ajax requests from admin - - $adm = $this->app->user_manager->is_admin(); - - if (defined('MW_API_CALL') and $adm == false) { - return $this->app->error('Not logged in as admin.' . __FILE__ . __LINE__); - } - $table = $table = $this->table; - if (!is_array($data)) { - $data = array('id' => intval($data)); - } - if (isset($data['is_cart']) and trim($data['is_cart']) != 'false' and isset($data['id'])) { - $this->app->cart_manager->delete_cart('session_id=' . $data['id']); - - return $data['id']; - } elseif (isset($data['id'])) { - $c_id = intval($data['id']); - $this->app->database_manager->delete_by_id($table, $c_id); - $this->app->event_manager->trigger('mw.cart.delete_order', $c_id); - $this->app->cart_manager->delete_cart('order_id=' . $data['id']); - - return $c_id; - } - } - - public function place_order($place_order) - { - $sid = mw()->user_manager->session_id(); - if ($sid == false) { - return $sid; - } - - $place_order = array_filter($place_order); - $ord = $this->app->database_manager->save($this->table, $place_order); - $place_order['id'] = $ord; - - //get client - -// $client_id = $this->app->clients_manager->find_or_create_client_id($place_order); -// -// if (isset($place_order['email']) and $place_order['email']) { -// $client = array(); -// $client['email'] = $place_order['email']; -// if (isset($place_order['email']) and $place_order['email']) { -// -// } -// } - - DB::transaction(function () use ($sid, $ord, $place_order) { - - DB::table($this->app->cart_manager->table_name())->whereOrderCompleted(0)->whereSessionId($sid)->update(['order_id' => $ord]); - - if (isset($place_order['order_completed']) and $place_order['order_completed'] == 1) { - DB::table($this->app->cart_manager->table_name())->whereOrderCompleted(0)->whereSessionId($sid)->update(['order_id' => $ord, 'order_completed' => 1]); - - if (isset($place_order['is_paid']) and $place_order['is_paid'] == 1) { - DB::table($this->table)->whereOrderCompleted(0)->whereSessionId($sid)->whereId($ord)->update(['order_completed' => 1]); - } - - $this->app->cache_manager->delete('cart'); - $this->app->cache_manager->delete('cart_orders'); - - if (!empty($place_order['promo_code'])) { - \CouponClass::log($place_order['promo_code'], $place_order['email']); - } - - if (isset($place_order['is_paid']) and $place_order['is_paid'] == 1) { - $this->app->shop_manager->update_quantities($ord); - } - $this->app->shop_manager->after_checkout($ord); - } - }); - - mw()->user_manager->session_set('order_id', $ord); - - return $ord; - } - - /** - * update_order. - * - * updates order by parameters - * - * @category shop module api - */ - public function save($params = false) - { - $params2 = array(); - if ($params == false) { - $params = array(); - } - if (is_string($params)) { - $params = parse_params($params); - } - - if (isset($params['is_paid'])) { - if ($params['is_paid'] == 'y') { - $params['is_paid'] = 1; - } elseif ($params['is_paid'] == 'n') { - $params['is_paid'] = 0; - } - } - - $table = $this->table; - $params['table'] = $table; - $this->app->cache_manager->delete('cart_orders'); - $this->app->cache_manager->delete('cart'); - - return $this->app->database_manager->save($table, $params); - } - - public function export_orders() - { - $data = get_orders('no_limit=true&order_completed=1'); - if (!$data) { - return array('error' => 'You do not have any orders'); - } - $allowed = array( - 'id', 'created_at', 'created_at', 'amount', 'transaction_id', 'shipping', 'currency', 'is_paid', - 'user_ip', 'last_name', 'email', 'country', 'city', 'state', 'zip', 'address', 'phone', 'payment_gw', - 'order_status', 'taxes_amount', 'cart', 'transaction_id', - - ); - $export = array(); - foreach ($data as $item) { - $cart_items = mw()->shop_manager->order_items($item['id']); - $cart_items_str = mw()->format->array_to_ul($cart_items, 'div', 'span'); - $cart_items_str = (strip_tags($cart_items_str, '')); - $cart_items_str = str_replace('', "\r\n", $cart_items_str); - $cart_items_str = (strip_tags($cart_items_str)); - - if (!empty($cart_items)) { - $item['cart'] = $cart_items_str; - } - foreach ($item as $key => $value) { - if (!in_array($key, $allowed)) { - unset($item[$key]); - } - } - $export[] = $item; - } - - if (empty($export)) { - return; - } - - - $filename = 'orders' . '_' . date('Y-m-d_H-i', time()) . uniqid() . '.csv'; - $filename_path = userfiles_path() . 'export' . DS . 'orders' . DS; - $filename_path_index = userfiles_path() . 'export' . DS . 'orders' . DS . 'index.php'; - if (!is_dir($filename_path)) { - mkdir_recursive($filename_path); - } - if (!is_file($filename_path_index)) { - @touch($filename_path_index); - } - $filename_path_full = $filename_path . $filename; - - // $csv = \League\Csv\Writer::createFromFileObject(new \SplTempFileObject()); - $csv = \League\Csv\Writer::createFromPath($filename_path_full, 'w'); //to work make sure you have the write permission - $csv->setEncodingFrom('UTF-8'); // this probably is not needed? - - $csv->setOutputBOM(\League\Csv\Writer::BOM_UTF8); //adding the BOM sequence on output - - //we insert the CSV header - $csv->insertOne(array_keys(reset($export))); - - $csv->insertAll($export); - - $download = $this->app->url_manager->link_to_file($filename_path_full); - - return array('success' => 'Your file has been exported!', 'download' => $download); - } - - public function export_orders1() - { - $data = get_orders('no_limit=true&order_completed=1'); - if (!$data) { - return array('error' => 'You do not have any orders'); - } - - $csv_output = ''; - $head = reset($data); - foreach ($head as $k => $v) { - $csv_output .= $this->app->format->no_dashes($k) . ','; - // $csv_output .= "\t"; - } - $csv_output .= "\n"; - foreach ($data as $item) { - foreach ($item as $k => $v) { - $csv_output .= $this->app->format->no_dashes($v) . ','; - // $csv_output .= "\t"; - } - $cart_items = mw()->shop_manager->order_items($item['id']); - if (!empty($cart_items)) { - } - - - $csv_output .= "\n"; - } - - - - $filename = 'orders' . '_' . date('Y-m-d_H-i', time()) . uniqid() . '.csv'; - $filename_path = userfiles_path() . 'export' . DS . 'orders' . DS; - $filename_path_index = userfiles_path() . 'export' . DS . 'orders' . DS . 'index.php'; - if (!is_dir($filename_path)) { - mkdir_recursive($filename_path); - } - if (!is_file($filename_path_index)) { - @touch($filename_path_index); - } - $filename_path_full = $filename_path . $filename; - file_put_contents($filename_path_full, $csv_output); - $download = $this->app->url_manager->link_to_file($filename_path_full); - - return array('success' => 'Your file has been exported!', 'download' => $download); - - dd('export_orders'); - } -} diff --git a/update/src/Microweber/Providers/Socialite/MicroweberProvider.php b/update/src/Microweber/Providers/Socialite/MicroweberProvider.php new file mode 100644 index 00000000..b2ae1089 --- /dev/null +++ b/update/src/Microweber/Providers/Socialite/MicroweberProvider.php @@ -0,0 +1,232 @@ +serverUrl = $microweber_app_url; + } + + return $this->serverUrl . $path; + } + + /** + * {@inheritdoc} + */ + protected function getAuthUrl($state) + { + $url = $this->apiUrl('/oauth/authorize'); + + + return $this->buildAuthUrlFromBase($url, $state); + } + + /** + * {@inheritdoc} + */ + protected function getTokenUrl() + { + return $this->apiUrl('/oauth/token'); + } + + /** + * Get the POST fields for the token request. + * + * @param string $code + * @return array + */ + protected function getTokenFields($code) + { + return [ + 'grant_type' => 'authorization_code', + 'client_id' => $this->clientId, + 'client_secret' => $this->clientSecret, + 'code' => $code, + 'redirect_uri' => $this->redirectUrl, + ]; + } + + /** + * {@inheritdoc} + */ + protected function getUserByToken($token) + { + + + $response = $this->getHttpClient()->get($this->apiUrl('/api/user'), [ + 'headers' => ['Accept' => 'application/json', 'Authorization' => 'Bearer ' . $token], + + + 'verify' => MW_PATH . 'Utils' . DS . 'Adapters' . DS . 'Http' . DS . 'cacert.pem.txt' + ]); + + + $body = $response->getBody(); + return json_decode($body, true); + + } + + /** + * {@inheritdoc} + */ + protected function mapUserToObject(array $user) + { + return (new User)->setRaw($user)->map([ + // 'id' => $user['id'], + 'email' => $user['email'], + // 'name' => $user['name'], + 'oauth_uid' => $user['id'], + 'oauth_provider' => 'microweber', + ]); + } + + + /* protected function apiUrl($path) + { + return $this->serverUrl . $path; + } + + protected function getAuthUrl($state) + { + $url = $this->buildAuthUrlFromBase($this->serverUrl . '/oauth/authorize', $state); + + return $url; + } + + protected function buildAuthUrlFromBase($url, $state) + { + $session = $this->request->getSession(); + + $redirectUrl = $this->redirectUrl; + if (!starts_with($redirectUrl, 'http')) { + $redirectUrl = 'http://' . $redirectUrl; + } + + $go = $url . '?' . http_build_query([ + 'client_id' => $this->clientId, + 'client_secret' => $this->clientSecret, + 'redirect_uri' => $redirectUrl, + 'scope' => $this->formatScopes($this->scopes, ' '), + 'state' => $state, + + 'response_type' => 'code', + ]); + + + + + return $go; + } + + protected function getTokenUrl() + { + return $this->apiUrl('/oauth/token'); + } + + public function getAccessToken($code) + { + $query = $this->getTokenFields($code); + $tokenUrl = $this->getTokenUrl() . '?grant_type=client_credentials'; + $tokenUrl = $this->getTokenUrl() . '?grant_type=authorization_code'; + //$response = $this->getHttpClient()->post($tokenUrl, ['body' => $query]); + $redirectUrl = $this->redirectUrl; + if (!starts_with($redirectUrl, 'http')) { + $redirectUrl = 'http://' . $redirectUrl; + } + + $http = new \GuzzleHttp\Client; + try { + $response = $http->post($tokenUrl, [ + 'headers' => ['Accept' => 'application/json'], + + 'form_params' => [ + // 'grant_type' => 'client_credentials', + 'grant_type' => 'authorization_code', + 'client_id' => $this->clientId, + 'client_secret' => $this->clientSecret, + 'redirect_uri' => $redirectUrl, + 'code' => $this->request->code, + ], + 'content-type' => 'application/json', + 'timeout' => 30, + 'verify' => MW_PATH . 'Utils' . DS . 'Adapters' . DS . 'Http' . DS . 'cacert.pem.txt' + ]); + + return json_decode((string)$response->getBody(), true); + + } catch (ServerException $exception) { + $responseBody = $exception->getResponse()->getBody(true); + + return false; + + } + + + // + // + // + // $response = $client->get($this->url, []); + // + // $body = $response->getBody(); + // + // + // return json_decode((string)$response, true); + // + // + // return $this->parseAccessToken($response); + } + + protected function parseAccessToken($response) + { + // access_token token_type(Bearer) expires expires_in + $data = $response->json(); + + return $data['access_token']; + } + + protected function getUserByToken($token) + { + dd($token); + // + // $response = $this->getHttpClient()->get($this->apiUrl('/api/user') + $response = $this->getHttpClient()->get($this->apiUrl('/user'), [ + 'headers' => ['Accept' => 'application/json', 'Authorization' => 'Bearer ' . $token['access_token']], + + 'form_params' => [ + 'api_token' => $token['access_token'], + + ], + 'verify' => MW_PATH . 'Utils' . DS . 'Adapters' . DS . 'Http' . DS . 'cacert.pem.txt' + ]); + $body = $response->getBody(); + + + return json_decode($body, true); + } + + protected function mapUserToObject(array $user) + { + return (new User())->setRaw($user)->map([ + 'id' => $user['id'], + 'nickname' => null, + 'name' => $user['name'], + 'email' => isset($user['email']) ? $user['email'] : null, + ]); + }*/ + + + +} diff --git a/update/src/Microweber/Providers/Template.php b/update/src/Microweber/Providers/Template.php deleted file mode 100644 index 2b964f88..00000000 --- a/update/src/Microweber/Providers/Template.php +++ /dev/null @@ -1,609 +0,0 @@ -app)) { - if (is_object($app)) { - $this->app = $app; - } else { - $this->app = mw(); - } - } - - $this->stylesheet_adapter = new TemplateCssParser($app); - $this->stack_compiler_adapter = new TemplateStackRenderer($app); - $this->adapter_current = $this->adapter_default = new MicroweberTemplate($app); - } - - - public function compile_css($params) - { - return $this->stylesheet_adapter->compile($params); - } - - public function delete_compiled_css($params) - { - return $this->stylesheet_adapter->delete_compiled($params); - } - - - public function get_stylesheet($path, $default_stylesheet = false, $cache = true) - { - return $this->stylesheet_adapter->getStylesheet($path, $default_stylesheet, $cache); - } - - - public function get_apijs_url() - { - - return (new JsCompileController())->get_apijs_url(); - - - } - - - public function get_apijs_settings_url() - { - return (new JsCompileController())->get_apijs_settings_url(); - - } - - - public function get_liveeditjs_url() - { - return (new JsCompileController())->get_liveeditjs_url(); - } - - public function clear_cached_apijs_assets() - { - $userfiles_dir = userfiles_path(); - $userfiles_cache_dir = normalize_path($userfiles_dir . 'cache' . DS . 'apijs' . DS); - if (!is_dir($userfiles_cache_dir)) { - return; - } - $files = glob($userfiles_cache_dir . "*.js"); - if ($files) { - foreach ($files as $file) { - if (is_file($file)) { - @unlink($file); - } - } - } - } - - public function meta($name, $value = false) - { - $this->meta_tags[$name] = $value; - } - - public function html_opening_tag($name, $value = false) - { - $this->html_opening_tag[$name] = $value; - } - - public function folder_name() - { - if (!defined('THIS_TEMPLATE_FOLDER_NAME')) { - $this->app->content_manager->define_constants(); - } - return THIS_TEMPLATE_FOLDER_NAME; - // - } - - public function dir($add = false) - { - if (!defined('TEMPLATE_DIR')) { - $this->app->content_manager->define_constants(); - } - if (defined('TEMPLATE_DIR')) { - $val = TEMPLATE_DIR; - } - - - if ($add != false) { - $val = $val . $add; - } - - return $val; - } - - public $template_config_cache = array(); - - public function get_config($template = false) - { - - - if ($template == false) { - - $dir = template_dir(); - - $file = $dir . 'config.php'; - - if (isset($this->template_config_cache[$file])) { - return $this->template_config_cache[$file]; - } - - - if (is_file($file)) { - include $file; - if (isset($config)) { - $this->template_config_cache[$file] = $config; - return $config; - } - - return false; - } - } - } - - public function url($add = false) - { - if (!defined('TEMPLATE_URL')) { - $this->app->content_manager->define_constants(); - } - if (defined('TEMPLATE_URL')) { - $val = TEMPLATE_URL; - } - - - if ($add != false) { - $val = $val . $add; - - } - - - return $val; - } - - public function adapter($method, $params) - { - if (method_exists($this->adapter_current, $method)) { - return $this->adapter_current->$method($params); - } else { - if (method_exists($this->adapter_default, $method)) { - return $this->adapter_default->$method($params); - } - } - } - - public function get_custom_css() - { - if (!defined('MW_NO_SESSION')) { - define('MW_NO_SESSION', 1); - } - ob_start(); - - event_trigger('mw.template.print_custom_css_includes'); - - $fonts_file = modules_path() . 'editor' . DS . 'fonts' . DS . 'stylesheet.php'; - if (is_file($fonts_file)) { - include $fonts_file; - } - $custom_css = get_option('custom_css', 'template'); - if (is_string($custom_css)) { - echo $custom_css; - } - - event_trigger('mw.template.print_custom_css'); - - $output = ob_get_contents(); - ob_end_clean(); - - $l = $output; - $compile_assets = \Config::get('microweber.compile_assets'); - if ($compile_assets and defined('MW_VERSION')) { - $userfiles_dir = userfiles_path(); - $userfiles_cache_dir = normalize_path($userfiles_dir . 'cache' . DS); - $userfiles_cache_filename = $userfiles_cache_dir . 'custom_css.' . md5(site_url()) . '.' . MW_VERSION . '.css'; - if (!is_file($userfiles_cache_filename)) { - if (!is_dir($userfiles_cache_dir)) { - mkdir_recursive($userfiles_cache_dir); - } - if (is_dir($userfiles_cache_dir)) { - @file_put_contents($userfiles_cache_filename, $l); - } - } else { - $fmd5 = md5_file($userfiles_cache_filename); - $fmd = md5($l); - if ($fmd5 != $fmd) { - @file_put_contents($userfiles_cache_filename, $l); - } - } - } - - return $output; - } - - - public function optimize_page_loading($layout) - { - $optimize_asset_loading = get_option('optimize_asset_loading', 'website'); - if ($optimize_asset_loading == 'y') { - $layout = $this->app->parser->optimize_asset_loading_order($layout); - - } - - - $static_files_delivery_method = get_option('static_files_delivery_method', 'website'); - $static_files_delivery_domain = get_option('static_files_delivery_method_domain', 'website'); - - if ($static_files_delivery_method and $static_files_delivery_domain) { - - - $should_replace = false; - - //check if site is fqdn - $site_host = parse_url(site_url()); - - if (isset($site_host['host']) and mw()->format->is_fqdn($site_host['host'])) { - $should_replace = true; - $site_host = $site_host['host']; - } - if ($should_replace) { - if ($static_files_delivery_domain and mw()->format->is_fqdn($static_files_delivery_domain)) { - $should_replace = true; - } else { - $should_replace = false; - } - } - if ($should_replace) { - $static_files_delivery_domain = trim($static_files_delivery_domain); - - $replaces = array(); - if ($static_files_delivery_method == 'content_proxy') { - $replaces[userfiles_url() . 'cache'] = 'https://' . $static_files_delivery_domain . '/' . userfiles_url() . 'cache'; - $replaces[media_base_url()] = 'https://' . $static_files_delivery_domain . '/' . media_base_url(); - $replaces[template_url()] = 'https://' . $static_files_delivery_domain . '/' . template_url(); - $replaces[modules_url()] = 'https://' . $static_files_delivery_domain . '/' . modules_url(); - } else if ($static_files_delivery_method == 'cdn_domain') { - $replaces[userfiles_url() . 'cache'] = str_replace($site_host, $static_files_delivery_domain, userfiles_url() . 'cache'); - $replaces[media_base_url()] = str_replace($site_host, $static_files_delivery_domain, media_base_url()); - $replaces[template_url()] = str_replace($site_host, $static_files_delivery_domain, template_url()); - $replaces[modules_url()] = str_replace($site_host, $static_files_delivery_domain, modules_url()); - - - } - if ($replaces) { - $layout = str_replace(array_keys($replaces), array_values($replaces), $layout); - } - } - - } - - - return $layout; - } - - public function get_custom_css_url() - { - $url = api_nosession_url('template/print_custom_css'); - if (in_live_edit()) { - return $url; - } - - $compile_assets = \Config::get('microweber.compile_assets'); - if ($compile_assets and defined('MW_VERSION')) { - $userfiles_dir = userfiles_path(); - $userfiles_cache_dir = normalize_path($userfiles_dir . 'cache' . DS); - $userfiles_cache_filename = $userfiles_cache_dir . 'custom_css.' . md5(site_url()) . '.' . MW_VERSION . '.css'; - if (is_file($userfiles_cache_filename)) { - $custom_live_editmtime = filemtime($userfiles_cache_filename); - $url = userfiles_url() . 'cache/' . 'custom_css.' . md5(site_url()) . '.' . MW_VERSION . '.css?ver=' . $custom_live_editmtime; - } - } - - return $url; - } - - public function clear_cached_custom_css() - { - $url = api_nosession_url('template/print_custom_css'); - $compile_assets = \Config::get('microweber.compile_assets'); - $userfiles_dir = userfiles_path(); - $userfiles_cache_dir = normalize_path($userfiles_dir . 'cache' . DS); - $userfiles_cache_filename = $userfiles_cache_dir . 'custom_css.' . md5(site_url()) . '.' . MW_VERSION . '.css'; - if (!is_dir($userfiles_cache_dir)) { - return; - } - $files = glob($userfiles_cache_dir . "custom_css*.css"); - if ($files) { - foreach ($files as $file) { - if (is_file($file)) { - @unlink($file); - } - } - } - } - - - public function name() - { - if (!defined('TEMPLATE_NAME')) { - $this->app->content_manager->define_constants(); - } - if (defined('TEMPLATE_NAME')) { - return TEMPLATE_NAME; - } - } - - public function admin_head($script_src) - { - static $mw_template_headers; - if ($mw_template_headers == null) { - $mw_template_headers = array(); - } - - if (is_string($script_src)) { - if (!in_array($script_src, $mw_template_headers)) { - $mw_template_headers[] = $script_src; - - return $mw_template_headers; - } - } else { - if (is_bool($script_src)) { - // return $mw_template_headers; - $src = ''; - if (is_array($mw_template_headers)) { - foreach ($mw_template_headers as $header) { - $ext = get_file_extension($header); - switch (strtolower($ext)) { - - case 'css': - $src .= '' . "\n"; - break; - - case 'js': - $src - .= '' . "\n"; - break; - - default: - $src .= $header . "\n"; - break; - } - } - } - - return $src; - } - } - } - - public function head($script_src) - { - if ($this->head_callable == null) { - $this->head_callable = array(); - } - - if (is_string($script_src)) { - if (!in_array($script_src, $this->head)) { - $this->head[] = $script_src; - - return $this->head; - } - } else { - if (is_bool($script_src)) { - // return $this->head; - $src = ''; - - if (is_array($this->head)) { - foreach ($this->head as $header) { - $ext = get_file_extension($header); - switch (strtolower($ext)) { - - case 'css': - $src .= '' . "\n"; - break; - - case 'js': - $src - .= '' . "\n"; - break; - - default: - $src .= $header . "\n"; - break; - } - } - } - - return $src; - } elseif (is_callable($script_src)) { - if (!in_array($script_src, $this->head_callable)) { - $this->head_callable[] = $script_src; - - return $this->head_callable; - } - } - } - } - - public function head_callback($data = false) - { - $data = array(); - if (!empty($this->head_callable)) { - foreach ($this->head_callable as $callback) { - $data[] = call_user_func($callback, $data); - } - } - - return $data; - } - - public function foot($script_src) - { - if ($this->foot_callable == null) { - $this->foot_callable = array(); - } - - if (is_string($script_src)) { - if (!in_array($script_src, $this->foot)) { - $this->foot[] = $script_src; - - return $this->foot; - } - } else { - if (is_bool($script_src)) { - $src = ''; - if (is_array($this->foot)) { - foreach ($this->foot as $footer) { - $ext = get_file_extension($footer); - switch (strtolower($ext)) { - - case 'css': - $src .= '' . "\n"; - break; - - case 'js': - $src - .= '' . "\n"; - break; - - default: - $src .= $footer . "\n"; - break; - } - } - } - - return $src; - } elseif (is_callable($script_src)) { - if (!in_array($script_src, $this->foot_callable)) { - $this->foot_callable[] = $script_src; - - return $this->foot_callable; - } - } - } - } - - public function foot_callback($data = false) - { - $data = array(); - if (!empty($this->foot_callable)) { - foreach ($this->foot_callable as $callback) { - $data[] = call_user_func($callback, $data); - } - } - - return $data; - } - - - /** - * Return the path to the layout file that will render the page. - */ - public function get_layout($params = array()) - { - return $this->adapter('get_layout', $params); - } - - public function process_meta($layout) - { - $count = 1; - $replace = ''; - if (!empty($this->html_opening_tag)) { - foreach ($this->html_opening_tag as $key => $item) { - if (is_string($item)) { - $replace .= $key . '="' . $item . '" '; - } - } - } - - $layout = str_replace('meta_tags)) { - foreach ($this->meta_tags as $key => $item) { - if (is_string($item)) { - $replace .= '' . "\n"; - } - } - } - $count = 1; - $layout = str_replace('', '' . $replace, $layout, $count); - - return $layout; - } - - /** - * Renders the file returned by the get_layout method. - */ - public function render($params = array()) - { - $layout = $this->adapter('render', $params); - - $layout = $this->process_meta($layout); - $layout = $this->process_stacks($layout); - - return $layout; - } - - public function clear_cache() - { - $userfiles_dir = userfiles_path(); - $userfiles_cache_dir = normalize_path($userfiles_dir . 'cache' . DS . 'apijs'); - if (is_dir($userfiles_cache_dir)) { - if (function_exists('rmdir_recursive')) { - rmdir_recursive($userfiles_cache_dir); - } - } - } - - - public function stack_add($src, $group = 'default') - { - return $this->stack_compiler_adapter->add($src, $group); - } - - public function stack_display($group = 'default') - { - return $this->stack_compiler_adapter->display($group); - } - - - public function process_stacks($layout) - { - return $this->stack_compiler_adapter->render($layout); - - } - -} diff --git a/update/src/Microweber/Providers/UrlManager.php b/update/src/Microweber/Providers/UrlManager.php deleted file mode 100644 index 759e92bd..00000000 --- a/update/src/Microweber/Providers/UrlManager.php +++ /dev/null @@ -1,584 +0,0 @@ -site_url($add_string); - } - - public function hostname() - { - static $u1; - if ($u1 == false) { - $valid_domain = parse_url($this->site_url()); - if (isset($valid_domain['host'])) { - $host = str_ireplace('www.', null, $valid_domain['host']); - $u1 = $host; - } - } - - if(!$u1){ - $u1 = 'localhost'; - } - - return $u1; - } - - public function link_to_file($path) - { - $path = str_ireplace(MW_ROOTPATH, '', $path); - $path = str_replace('\\', '/', $path); - $path = str_replace('//', '/', $path); - $path = str_ireplace(MW_ROOTPATH, '', $path); - $path = str_replace('\\', '/', $path); - $path = str_replace('//', '/', $path); - $path = str_ireplace(MW_ROOTPATH, '', $path); - $path = str_ireplace($this->site_url(), '', $path); - - if (function_exists('base_path')) { - $replace_file = base_path(); - } else { - $replace_file = @dirname(dirname(dirname(__FILE__))); - } - - $path = str_ireplace($replace_file, '', $path); - $path = str_replace('\\', '/', $path); - $path = str_replace('//', '/', $path); - $path = ltrim($path, '/'); - $path = ltrim($path, '\\'); - - return $this->site_url($path); - } - - public function set($url = false) - { - return $this->site_url_var = ($url); - } - - public function set_current($url = false) - { - return $this->current_url_var = ($url); - } - - public function to_path($path) - { - if (trim($path) == '') { - return false; - } - $path = str_ireplace($this->site_url(), MW_ROOTPATH, $path); - $path = str_replace('\\', '/', $path); - $path = str_replace('//', '/', $path); - $path = $this->clean_url_wrappers($path); - - return normalize_path($path, false); - } - - public function redirect($url) - { - if (trim($url) == '') { - return false; - } - $url = str_ireplace('Location:', '', $url); - $url = trim($url); - if (headers_sent()) { - echo ''; - } else { - return \Redirect::to($url); - - return; - } - } - - public function params($skip_ajax = false) - { - return $this->param($param = '__MW_GET_ALL_PARAMS__', $skip_ajax); - } - - - public function param($param, $skip_ajax = false, $force_url = false) - { - if ($_POST) { - if (isset($_POST['search_by_keyword'])) { - if ($param == 'keyword') { - return $_POST['search_by_keyword']; - } - } - } - $url = $this->current($skip_ajax); - if ($force_url != false) { - $url = $force_url; - } - $rem = $this->site_url(); - $url = str_ireplace($rem, '', $url); - $url = str_ireplace('?', '/', $url); - $url = str_ireplace('=', ':', $url); - $url = str_ireplace('&', '/', $url); - $all_params = array(); - $segs = explode('/', $url); - foreach ($segs as $segment) { - $seg1 = explode(':', $segment); - if ($param == '__MW_GET_ALL_PARAMS__') { - if (isset($seg1[0]) and isset($seg1[1])) { - $all_params[$seg1[0]] = $seg1[1]; - } - } else { - $param_sub_position = false; - if (trim($seg1[0]) == trim($param)) { - if ($param_sub_position == false) { - $the_param = str_ireplace($param . ':', '', $segment); - if ($param == 'custom_fields_criteria') { - $the_param1 = $this->app->format->base64_to_array($the_param); - - return $the_param1; - } - - return $the_param; - } else { - $the_param = str_ireplace($param . ':', '', $segment); - $params_list = explode(',', $the_param); - if ($param == 'custom_fields_criteria') { - $the_param1 = base64_decode($the_param); - $the_param1 = unserialize($the_param1); - - return $the_param1; - } - - return $the_param; - } - } - } - } - - if (empty($all_params)) { - return false; - } - - return $all_params; - } - - - public function param_set($param, $value = false, $url = false) - { - if ($url == false) { - $url = $this->string(); - } - $site = $this->site_url(); - $url = str_ireplace($site, '', $url); - $segs = explode('/', $url); - $segs_clean = array(); - $found = false; - foreach ($segs as $segment) { - $origsegment = ($segment); - $segment = explode(':', $segment); - if ($segment[0] == $param) { - $segment[1] = $value; - - $origsegment = implode(':', $segment); - $found = true; - $segs_clean[] = $origsegment; - } else { - $segs_clean[] = $origsegment; - } - } - - if ($found == false) { - - $segment = array(); - $segment[] = $param; - $segment[] = $value; - $origsegment = implode(':', $segment); - $segs_clean[] = $origsegment; - - } - - $segs_clean = implode('/', $segs_clean); - $site = ($segs_clean); - - return $site; - } - - public function param_unset($param, $url = false) - { - if ($url == false) { - $url = $this->string(); - } - $site = $this->site_url(); - $url = str_ireplace($site, '', $url); - $segs = explode('/', $url); - $segs_clean = array(); - foreach ($segs as $segment) { - $origsegment = ($segment); - $segment = explode(':', $segment); - if ($segment[0] == $param) { - } else { - $segs_clean[] = $origsegment; - } - } - $segs_clean = implode('/', $segs_clean); - $site = ($segs_clean); - - return $site; - } - - /** - * Returns the current url path, does not include the domain name. - * - * @param bool $skip_ajax If true it will try to get the referring url from ajax request - * - * @return string the url string - */ - public function string($skip_ajax = false) - { - if ($skip_ajax == true) { - $url = $this->current($skip_ajax); - } else { - $url = false; - } - - $u1 = implode('/', $this->segment(-1, $url)); - return $u1; - } - - /** - * Returns the current url as a string. - * - * @param bool $skip_ajax If true it will try to get the referring url from ajax request - * @param bool $no_get If true it will remove the params after '?' - * - * @return string the url string - */ - public function current($skip_ajax = false, $no_get = false) - { - $u = false; - if ($skip_ajax == true) { - $is_ajax = $this->is_ajax(); - if ($is_ajax == true) { - if (isset($_SERVER['HTTP_REFERER']) and $_SERVER['HTTP_REFERER'] != false) { - $u = $_SERVER['HTTP_REFERER']; - } - } - } - - if ($u == false and $this->current_url_var != false) { - $u = $this->current_url_var; - } - if ($u == false) { - if (!isset($_SERVER['REQUEST_URI'])) { - $serverrequri = $_SERVER['PHP_SELF']; - } else { - $serverrequri = $_SERVER['REQUEST_URI']; - } - $s = ''; - if (is_https()) { - $s = 's'; - } - - $protocol = 'http'; - $port = 80; - if (isset($_SERVER['SERVER_PROTOCOL'])) { - $protocol = $this->strleft(strtolower($_SERVER['SERVER_PROTOCOL']), '/') . $s; - } - if (isset($_SERVER['SERVER_PORT'])) { - $port = ($_SERVER['SERVER_PORT'] == '80' || $_SERVER['SERVER_PORT'] == '443') ? '' : (':' . $_SERVER['SERVER_PORT']); - } - - if (isset($_SERVER['SERVER_PORT']) and isset($_SERVER['HTTP_HOST'])) { - if (strstr($_SERVER['HTTP_HOST'], ':')) { - // port is contained in HTTP_HOST - $u = $protocol . '://' . $_SERVER['HTTP_HOST'] . $serverrequri; - } else { - $u = $protocol . '://' . $_SERVER['HTTP_HOST'] . $port . $serverrequri; - } - } elseif (isset($_SERVER['HOSTNAME'])) { - $u = $protocol . '://' . $_SERVER['HOSTNAME'] . $port . $serverrequri; - } - - - } - - - if ($no_get == true) { - $u = strtok($u, '?'); - } - if (is_string($u)) { - $u = str_replace(' ', '%20', $u); - } - - return $u; - } - - /** - * Return true if the current request is via ajax. - * - * @return true|false - */ - public function is_ajax() - { - return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'); - } - - public function strleft($s1, $s2) - { - return substr($s1, 0, strpos($s1, $s2)); - } - - /** - * Returns single URL segment. - * - * @param $num The segment number - * @param bool $page_url If false it will use the current URL - * - * @return string|false the url segment or false - */ - public function segment($num = -1, $page_url = false) - { - $u = false; - if ($page_url == false or $page_url == '') { - $current_url = $this->current(); - } else { - $current_url = $page_url; - } - $site_url = $this->site_url(); - // $site_url = rtrim($site_url, '\\'); - // $site_url = rtrim($site_url, '/'); - $site_url = reduce_double_slashes($site_url); - $site_url = rawurldecode($site_url); - - // $current_url = rtrim($current_url, '\\'); - // $current_url = rtrim($current_url, '/'); - - $current_url = rawurldecode($current_url); - $current_url = str_replace($site_url, '', $current_url); - $current_url = str_replace(' ', '%20', $current_url); - $current_url = reduce_double_slashes($current_url); - - - if (!isset($u) or $u == false) { - // $u = explode('/', mb_trim(preg_replace('/([^\w\:\-\.\%\/])/i', '', current(explode('?', $current_url, 2))), '/')); - $u = explode('/', current(explode('?', $current_url, 2))); - if (isset($u[0])) { - //check for port - $string = substr($u[0], 0, 1); - if ($string == ':') { - unset($u[0]); - $u = array_values($u); - } - } - } - - if ($num != -1) { - if (isset($u[$num])) { - return $u[$num]; - } else { - return; - } - } else { - return $u; - } - } - - public function site_url($add_string = false) - { - return site_url($add_string); - } - - /** - * Returns ALL URL segments as array. - * - * @param bool $page_url If false it will use the current URL - * - * @return array|false the url segments or false - */ - public function segments($page_url = false) - { - return $this->segment($k = -1, $page_url); - } - - public function slug($text) - { - // Swap out Non "Letters" with a - - $text = str_replace('"', '-', $text); - $text = str_replace(''', '-', $text); - $text = preg_replace('/[^\\pL\d]+/u', '-', $text); - // Trim out extra -'s - $text = trim($text, '-'); - $text = str_replace('""', '-', $text); - $text = str_replace("'", '-', $text); - - $text = URLify::filter($text); - // Strip out anything we haven't been able to convert - $text = preg_replace('/[^-\w]+/', '', $text); - $text = str_replace(':', '-', $text); - - return $text; - } - - public function download($requestUrl, $post_params = false, $save_to_file = false) - { - if ($post_params != false and is_array($post_params)) { - $postdata = http_build_query($post_params); - } else { - $postdata = false; - } - $ref = site_url(); - - $opts = array('http' => array('method' => 'POST', 'header' => 'User-Agent: Microweber/' . MW_VERSION . "\r\n" . 'Content-type: application/x-www-form-urlencoded' . "\r\n" . 'Referer: ' . $ref . "\r\n", 'content' => $postdata)); - $requestUrl = str_replace(' ', '%20', $requestUrl); - - if (function_exists('curl_init')) { - $ch = curl_init($requestUrl); - curl_setopt($ch, CURLOPT_COOKIEJAR, mw_cache_path() . 'global/cookie.txt'); - curl_setopt($ch, CURLOPT_COOKIEFILE, mw_cache_path() . 'global/cookie.txt'); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); - curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Microweber ' . MW_VERSION . ';)'); - if ($post_params != false) { - curl_setopt($ch, CURLOPT_POST, count($post_params)); - curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params); - } - // curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); - //curl_setopt($ch, CURLOPT_TIMEOUT, 400); - $result = curl_exec($ch); - - curl_close($ch); - } else { - $context = stream_context_create($opts); - $result = file_get_contents($requestUrl, false, $context); - } - - if ($save_to_file == true) { - file_put_contents($save_to_file, $result); - } else { - return $result; - } - - return false; - } - - public function replace_site_url($arr) - { - $site = $this->site_url(); - if (is_string($arr)) { - $ret = str_ireplace($site, '{SITE_URL}', $arr); - - return $ret; - } - if (is_array($arr) and !empty($arr)) { - $ret = array(); - foreach ($arr as $k => $v) { - if (is_array($v) and !empty($v)) { - $v = $this->replace_site_url($v); - } elseif (is_string($v)) { - $v = str_ireplace($site, '{SITE_URL}', $v); - } - $ret[$k] = $v; - } - - return $ret; - } - return $arr; - } - - public $repaced_urls = array(); - - public function replace_site_url_back($arr) - { - if ($arr == false) { - return; - } - - if (is_string($arr)) { - $parser_mem_crc = 'replace_site_vars_back_' . crc32($arr); - if (isset($this->repaced_urls[$parser_mem_crc])) { - $ret = $this->repaced_urls[$parser_mem_crc]; - } else { - $site = $this->site_url(); - $ret = str_replace('{SITE_URL}', $site, $arr); - $this->repaced_urls[$parser_mem_crc] = $ret; - } - - return $ret; - } - - if (is_array($arr) and !empty($arr)) { - $ret = array(); - foreach ($arr as $k => $v) { - $parser_mem_crc = 'replace_site_vars_back_' . crc32(serialize($k) . serialize($v)); - if (isset($this->repaced_urls[$parser_mem_crc])) { - $ret[$k] = $this->repaced_urls[$parser_mem_crc]; - } else { - if (is_array($v) ) { - $v = $this->replace_site_url_back($v); - } elseif (is_string($v) and $v !== '0') { - $v = $this->replace_site_url_back($v); - } - $this->repaced_urls[$parser_mem_crc] = $v; - - $ret[$k] = $v; - } - - } - - return $ret; - } - } - - public function api_link($str = '') - { - $str = ltrim($str, '/'); - - return $this->site_url('api/' . $str); - } - - - public function clean_url_wrappers($url_str = '') - { - static $wrappers; - - if (!$wrappers) { - - $wrappers = array( - 'file', - 'php', - 'zlib', - 'data', - 'phar', - 'glob', - 'ssh2', - 'rar', - 'expect', - ); -// if (function_exists('stream_get_wrappers')) { -// // $wrappers = stream_get_wrappers(); -// // dd($wrappers); -// } else { -// -// } - - } - - if ($wrappers and $url_str) { - foreach ($wrappers as $item) { - if(is_string($item)){ - // if($item != 'http'){ - // dd($url_str); - $url_str = str_ireplace($item . '://', '//', $url_str); - } - // } - } - } - return $url_str; - } -} - - diff --git a/update/src/Microweber/Providers/UserManager.php b/update/src/Microweber/Providers/UserManager.php deleted file mode 100644 index 711635a9..00000000 --- a/update/src/Microweber/Providers/UserManager.php +++ /dev/null @@ -1,2029 +0,0 @@ -set_table_names(); - - if (is_object($app)) { - $this->app = $app; - } else { - $this->app = mw(); - } - - $this->socialite = new SocialiteManager($this->app); - } - - public function set_table_names($tables = false) - { - if (!is_array($tables)) { - $tables = array(); - } - if (!isset($tables['users'])) { - $tables['users'] = 'users'; - } - if (!isset($tables['log'])) { - $tables['log'] = 'log'; - } - - $this->tables['users'] = $tables['users']; - $this->tables['log'] = $tables['log']; - } - - public function is_admin() - { - if (!mw_is_installed()) { - return false; - } - - if (Auth::check()) { - return Auth::user()->is_admin; - } - } - - public function id() - { - if (Auth::check()) { - return Auth::user()->id; - } - - return false; - } - - /** - * Allows you to login a user into the system. - * - * It also sets user session when the user is logged.
- * On 5 unsuccessful logins, blocks the ip for few minutes
- * - * - * @param array|string $params You can pass parameter as string or as array. - * @param mixed|string $params ['email'] optional If you set it will use this email for login - * @param mixed|string $params ['password'] optional Use password for login, it gets trough $this->hash_pass() function - * - * @example - * - * //login with username - * $this->login('username=test&password=pass') - * - * @example - * - * //login with email - * $this->login('email=my@email.com&password=pass') - * - * @example - * - * //login hashed password - * $this->login('email=my@email.com&password_hashed=c4ca4238a0b923820dcc509a6f75849b') - * - * - * @return array|bool - * - * @category Users - * - * @uses $this->hash_pass() - * @uses parse_str() - * @uses $this->get_all() - * @uses $this->session_set() - * @uses $this->app->log_manager->get() - * @uses $this->app->log_manager->save() - * @uses $this->login_set_failed_attempt() - * @uses $this->update_last_login_time() - * @uses $this->app->event_manager->trigger() - * @function $this->login() - * - * @see _table() For the database table fields - */ - public function login($params) - { - if (is_string($params)) { - $params = parse_params($params); - } - $check = $this->app->log_manager->get('no_cache=1&count=1&updated_at=[mt]1 min ago&is_system=y&rel_type=login_failed&user_ip=' . MW_USER_IP); - $url = $this->app->url->current(1); - if ($check == 5) { - $url_href = "$url"; - $this->app->log_manager->save('title=User IP ' . MW_USER_IP . ' is blocked for 1 minute for 5 failed logins.&content=Last login url was ' . $url_href . '&is_system=n&rel_type=login_failed&user_ip=' . MW_USER_IP); - } - if ($check > 5) { - $check = $check - 1; - - return array('error' => 'There are ' . $check . ' failed login attempts from your IP in the last minute. Try again in 1 minute!'); - } - $check2 = $this->app->log_manager->get('no_cache=1&is_system=y&count=1&created_at=[mt]10 min ago&updated_at=[lt]10 min&rel_type=login_failed&user_ip=' . MW_USER_IP); - if ($check2 > 25) { - return array('error' => 'There are ' . $check2 . ' failed login attempts from your IP in the last 10 minutes. You are blocked for 10 minutes!'); - } - - $login_captcha_enabled = get_option('login_captcha_enabled', 'users') == 'y'; - if ($login_captcha_enabled) { - if (!isset($params['captcha'])) { - return array('error' => 'Please enter the captcha answer!'); - } - $validate_captcha = $this->app->captcha->validate($params['captcha'], null, false); - if (!$validate_captcha) { - return array('error' => 'Invalid captcha answer!', 'captcha_error' => true); - } - } - - // On some hostings if the parameters contain base64, $_GET is null - if (!isset($params['username']) and isset($params['username_base64']) and $params['username_base64']) { - $params['username'] = @base64_decode($params['username_base64']); - } - if (!isset($params['password']) and isset($params['password_base64']) and $params['password_base64']) { - $params['password'] = @base64_decode($params['password_base64']); - } - - // So we use second parameter - if (!isset($params['username']) and isset($params['username_encoded']) and $params['username_encoded']) { - $params['username'] = @base64_decode($params['username_encoded']); - } - if (!isset($params['password']) and isset($params['password_encoded']) and $params['password_encoded']) { - $params['password'] = @base64_decode($params['password_encoded']); - } - - $override = $this->app->event_manager->trigger('mw.user.before_login', $params); - - $redirect_after = isset($params['redirect']) ? $params['redirect'] : false; - $overiden = false; - $return_resp = false; - if (is_array($override)) { - foreach ($override as $resp) { - if (isset($resp['error']) or isset($resp['success'])) { - $return_resp = $resp; - $overiden = true; - } - } - } - if ($overiden == true and $redirect_after != false) { - return $this->app->url_manager->redirect($redirect_after); - } elseif ($overiden == true) { - return $return_resp; - } - $old_sid = Session::getId(); - if (isset($params['username'])) { - if (!$params['username']) { - return array('error' => 'Please enter username or email'); - } - $ok = Auth::attempt([ - 'username' => $params['username'], - 'password' => $params['password'], - ]); - if (!$ok) { - if ($params['username'] != false and filter_var($params['username'], FILTER_VALIDATE_EMAIL)) { - $ok = Auth::attempt([ - 'email' => $params['username'], - 'password' => $params['password'], - ]); - } - } - } elseif (isset($params['email'])) { - if (!$params['email']) { - return array('error' => 'Please enter email'); - } - $ok = Auth::attempt([ - 'email' => $params['email'], - 'password' => $params['password'], - ]); - } - - if (!isset($ok)) { - return; - } - if ($ok) { - if (defined('MW_USER_IP') and intval(Auth::user()->is_admin) == 1) { - $allowed_ips = config('microweber.admin_allowed_ips'); - if ($allowed_ips) { - $allowed_ips = explode(',', $allowed_ips); - $allowed_ips = array_trim($allowed_ips); - if (!empty($allowed_ips)) { - $is_allowed = false; - foreach ($allowed_ips as $allowed_ip) { - $is = \Symfony\Component\HttpFoundation\IpUtils::checkIp(MW_USER_IP, $allowed_ip); - if ($is) { - $is_allowed = $is; - } - } - if (!$is_allowed) { - $this->logout(); - return array('error' => 'You are not allowed to login from this IP address'); - } - } - } - } - - - $user = Auth::login(Auth::user()); - $user_data = $this->get_by_id(Auth::user()->id); - $user_data['old_sid'] = $old_sid; - - if ($user_data['is_active'] == 0) { - $this->logout(); - $registration_approval_required = get_option('registration_approval_required', 'users'); - if ($registration_approval_required == 'y') { - return array('error' => 'Your account is awaiting approval'); - } else { - return array('error' => 'Your account has been disabled'); - } - } - - $this->update_last_login_time(); - - $this->app->event_manager->trigger('mw.user.login', $user_data); - if ($ok && $redirect_after) { - return $this->app->url_manager->redirect($redirect_after); - } elseif ($ok) { - $this->login_set_success_attempt($params); - return ['success' => 'You are logged in!']; - } - } else { - $this->login_set_failed_attempt($params); - } - - return array('error' => 'Please enter right username and password!'); - } - - public function logout($params = false) - { - Session::flush(); - $aj = $this->app->url_manager->is_ajax(); - $redirect_after = isset($_GET['redirect']) ? $_GET['redirect'] : false; - if ($redirect_after == false) { - $redirect_after = isset($_GET['redirect_to']) ? $_GET['redirect_to'] : false; - } - if (isset($_COOKIE['editmode'])) { - setcookie('editmode'); - } - - $this->app->event_manager->trigger('mw.user.logout', $params); - if ($redirect_after == false and $aj == false) { - if (isset($_SERVER['HTTP_REFERER'])) { - return $this->app->url_manager->redirect($_SERVER['HTTP_REFERER']); - } - } - - if ($redirect_after == true) { - $redir = $redirect_after; - - // $redir = site_url($redirect_after); - return $this->app->url_manager->redirect($redir); - } - - return true; - } - - public function is_logged() - { - if (Auth::check()) { - return true; - } else { - return false; - } - } - - public function login_as($params) - { - $is_a = $this->is_admin(); - if ($is_a == true) { - return true; - } - } - - public function has_access($function_name) - { - // will be updated with roles and perms - $is_a = $this->is_admin(); - if ($is_a == true) { - return true; - } else { - return false; - } - } - - public function admin_access() - { - if ($this->is_admin() == false) { - exit('You must be logged as admin'); - } - } - - public function attributes($user_id = false) - { - if (!$user_id) { - $user_id = $this->id(); - } - if (!$user_id) { - return; - } - - $data = array(); - $data['rel_type'] = 'users'; - $data['rel_id'] = intval($user_id); - $res = array(); - $get = $this->app->attributes_manager->get($data); - if (!empty($get)) { - foreach ($get as $item) { - if (isset($item['attribute_name']) and isset($item['attribute_value'])) { - $res[$item['attribute_name']] = $item['attribute_value']; - } - } - } - if (!empty($res)) { - return $res; - } - - return $get; - } - - public function data_fields($user_id = false) - { - if (!$user_id) { - $user_id = $this->id(); - } - if (!$user_id) { - return; - } - - $data = array(); - $data['rel_type'] = 'users'; - $data['rel_id'] = intval($user_id); - $res = array(); - $get = $this->app->content_manager->get_data($data); - if (!empty($get)) { - foreach ($get as $item) { - if (isset($item['field_name']) and isset($item['field_value'])) { - $res[$item['field_name']] = $item['field_value']; - } - } - } - if (!empty($res)) { - return $res; - } - - return $get; - } - - public function picture($user_id = false) - { - - if (!$user_id) { - $user_id = $this->id(); - } - - $name = $this->get_by_id($user_id); - if (isset($name['thumbnail']) and $name['thumbnail'] != '') { - if (is_https()) { - $rep = 1; - $name['thumbnail'] = str_ireplace('http://', '//', $name['thumbnail'], $rep); - } - return $name['thumbnail']; - } - } - - /** - * @function user_name - * gets the user's FULL name - * - * @param $user_id the id of the user. If false it will use the curent user (you) - * @param string $mode full|first|last|username - * 'full' //prints full name (first +last) - * 'first' //prints first name - * 'last' //prints last name - * 'username' //prints username - * - * @return string - */ - public function name($user_id = false, $mode = 'full') - { - if ($mode != 'username') { - if ($user_id == user_id()) { - // return 'You'; - } - } - if ($user_id == false) { - $user_id = user_id(); - } - - $name = $this->nice_name($user_id, $mode); - - return $name; - } - - /** - * Function to get user printable name by given ID. - * - * @param $id - * @param string $mode - * - * @return string - * - * @example - * - * //get user name for user with id 10 - * $this->nice_name(10, 'full'); - * - * - * @uses $this->get_by_id() - */ - public function nice_name($id = false, $mode = 'full') - { - - if (!$id) { - $id = $this->id(); - } - - $user = $this->get_by_id($id); - - - $user_data = $user; - if (empty($user)) { - return false; - } - - switch ($mode) { - case 'first' : - case 'fist' : - // because of a common typo :) - $user_data['first_name'] ? $name = $user_data['first_name'] : $name = $user_data['username']; - $name = ucwords($name); - - if (trim($name) == '' and $user_data['email'] != '') { - $n = explode('@', $user_data['email']); - $name = $n[0]; - } - // return $name; - break; - - case 'last' : - $user_data['last_name'] ? $name = $user_data['last_name'] : $name = $user_data['last_name']; - $name = ucwords($name); - break; - - case 'username' : - $name = $user_data['username']; - break; - - - case 'email' : - $name = $user_data['email']; - break; - - case 'full' : - default : - - $name = ''; - if (isset($user_data['first_name'])) { - if ($user_data['first_name']) { - $name = $user_data['first_name']; - } - } - - if (isset($user_data['last_name'])) { - if ($user_data['last_name']) { - $name .= ' ' . $user_data['last_name']; - } - } - $name = ucwords($name); - - if (trim($name) == '' and $user_data['email'] != '') { - $name = $user_data['email']; - $name_from_email = explode('@', $user_data['email']); - $name = $name_from_email[0]; - } - - if (trim($name) == '' and $user_data['username'] != '') { - $name = $user_data['username']; - $name = ucwords($name); - } - - break; - } - - if (!isset($name) or $name == false or $name == null or trim($name) == '') { - if (isset($user_data['username']) and $user_data['username'] != false and trim($user_data['username']) != '') { - $name = $user_data['username']; - } elseif (isset($user_data['email']) and $user_data['email'] != false and trim($user_data['email']) != '') { - $name_from_email = explode('@', $user_data['email']); - $name = $name_from_email[0]; - } - } - - return $name; - } - - public function api_login($api_key = false) - { - if ($api_key == false and isset($_REQUEST['api_key']) and user_id() == 0) { - $api_key = $_REQUEST['api_key']; - } - - if ($api_key == false) { - return false; - } else { - if (trim($api_key) == '') { - return false; - } else { - if (user_id() > 0) { - return true; - } else { - $data = array(); - $data['api_key'] = $api_key; - $data['is_active'] = 1; - $data['limit'] = 1; - - $data = $this->get_all($data); - - if ($data != false) { - if (isset($data[0])) { - $data = $data[0]; - - if (isset($data['api_key']) and $data['api_key'] == $api_key) { - return $this->make_logged($data['id']); - } - } - } - } - } - } - } - - public function register($params) - { - if (defined('MW_API_CALL')) { - // if (isset($params['token'])){ - if ($this->is_admin() == false) { - $validate_token = $this->csrf_validate($params); - if ($validate_token == false) { - return array('error' => 'Invalid token!'); - } - } - //} - } - - $enable_user_gesitration = get_option('enable_user_registration', 'users'); - if ($enable_user_gesitration == 'n') { - return array('error' => 'User registration is disabled.'); - } - - $user = isset($params['username']) ? $params['username'] : false; - $pass = isset($params['password']) ? $params['password'] : false; - $pass2 = isset($params['password2']) ? $params['password2'] : $pass; - $email = isset($params['email']) ? $params['email'] : false; - $first_name = isset($params['first_name']) ? $params['first_name'] : false; - $last_name = isset($params['last_name']) ? $params['last_name'] : false; - $middle_name = isset($params['middle_name']) ? $params['middle_name'] : false; - $confirm_password = isset($params['confirm_password']) ? $params['confirm_password'] : false; - - $no_captcha = get_option('captcha_disabled', 'users') == 'y'; - $disable_registration_with_temporary_email = get_option('disable_registration_with_temporary_email', 'users') == 'y'; - if ($email != false and $disable_registration_with_temporary_email) { - $checker = new \Microweber\Utils\lib\DisposableEmailChecker(); - $is_temp_email = $checker->check($email); - if ($is_temp_email) { - $domain = substr(strrchr($email, "@"), 1); - return array('error' => 'You cannot register with email from ' . $domain . ' domain'); - } - } - - - $terms_accepted = false; - $terms_and_conditions_name = 'terms_user'; - $user_require_terms = $this->app->option_manager->get('require_terms', 'users'); - if ($user_require_terms) { - $user_id_or_email = $email; - if (!$user_id_or_email) { - return array( - 'error' => _e('You must provide email address', true), - 'form_data_required' => 'email' - ); - - } else { - - $check_term = $this->terms_check($terms_and_conditions_name, $user_id_or_email); - if (!$check_term) { - if (isset($params['terms']) and $params['terms']) { - $terms_accepted = true; - } else { - return array( - 'error' => _e('You must agree to terms and conditions', true), - 'form_data_required' => 'terms', - 'form_data_module' => 'users/terms' - ); - } - } - } - } - - if (!$no_captcha) { - if (!isset($params['captcha'])) { - return array( - 'error' => _e('Please enter the captcha answer!', true), - 'form_data_required' => 'captcha', - 'form_data_module' => 'captcha' - ); - - } else { - $validate_captcha = $this->app->captcha->validate($params['captcha']); - if (!$validate_captcha) { - - return array( - 'error' => _e('Invalid captcha answer!', true), - 'captcha_error' => true, - 'form_data_required' => 'captcha', - 'form_data_module' => 'captcha' - ); - - - } - } - } - $override = $this->app->event_manager->trigger('before_user_register', $params); - - if (is_array($override)) { - foreach ($override as $resp) { - if (isset($resp['error']) or isset($resp['success'])) { - return $resp; - } - } - } - - if (defined('MW_API_CALL')) { - - if (isset($params['is_admin']) and $this->is_admin() == false) { - unset($params['is_admin']); - } - if (isset($params['is_verified']) and $this->is_admin() == false) { - unset($params['is_verified']); - } - } - - if (!isset($params['password']) or (isset($params['password']) and ($params['password']) == '')) { - return array('error' => 'Please set password!'); - } - - if (get_option('form_show_password_confirmation', 'users') == 'y') { - if (!isset($params['password2']) or (isset($params['password2']) and ($params['password2'] != $params['password']))) { - return array('error' => 'Two password entries do not match!'); - } - } - - if (!isset($params['username']) and !isset($params['email'])) { - return array('error' => 'Please set username or email!'); - } - if (!isset($params['password'])) { - return array('error' => 'Please set a password!'); - } - - - if (isset($params['password']) and ($params['password']) != '') { - if ($confirm_password != false) { - if ($params['password'] != $confirm_password) { - return array('error' => 'Password confirm does not mach password!'); - } - } - - if ($email != false) { - - - $data = array(); - $data['email'] = $email; - $data['one'] = true; - $data['no_cache'] = true; - $user_data = $this->get_all($data); - - if (empty($user_data)) { - $data = array(); - $data['username'] = $email; - $data['one'] = true; - $data['no_cache'] = true; - $user_data = $this->get_all($data); - } - - if (empty($user_data)) { - $data = array(); - $data['username'] = $email; - $data['password'] = $pass; - $data['is_active'] = 1; - $table = $this->tables['users']; - - $reg = array(); - $reg['username'] = $user; - $reg['email'] = $email; - $reg['password'] = $pass2; - - $registration_approval_required = get_option('registration_approval_required', 'users'); - if ($registration_approval_required == 'y') { - $reg['is_active'] = 0; - } else { - $reg['is_active'] = 1; - } - - if ($first_name != false) { - $reg['first_name'] = $first_name; - } - if ($last_name != false) { - $reg['last_name'] = $last_name; - } - if ($middle_name != false) { - $reg['middle_name'] = $middle_name; - } - - $this->force_save = true; - if (isset($params['attributes'])) { - $reg['attributes'] = $params['attributes']; - } - - $next = $this->save($reg); - - - if ($terms_accepted) { - $this->terms_accept($terms_and_conditions_name, $next); - } - - - // added newsletter subscription - maybe better to use function newsletter_subscribe but it would need modifying - if (isset($params['newsletter_subscribe']) and $params['newsletter_subscribe']) { - - $subscribe = false; - - if ($user_require_terms) { - - // terms_user already logged now log terms_newsletter using the same authorisation - - $check_term = $this->app->user_manager->terms_check('terms_newsletter', $email); - - if (!$check_term) { - if ($terms_accepted) { - $this->app->user_manager->terms_accept('terms_newsletter', $next); - $subscribe = true; - } - } - } else { - $subscribe = true; - } - - if ($subscribe) { - - $subscriber_data = [ - 'email' => $email, - 'name' => $first_name, - 'confirmation_code' => str_random(30), - 'is_subscribed' => 1 - ]; - - $this->app->database_manager->save('newsletter_subscribers', $subscriber_data); - } - } - - - $this->force_save = false; - $this->app->cache_manager->delete('users/global'); - $this->session_del('captcha'); - - - $this->after_register($next); - - $params = $data; - $params['id'] = $next; - if (isset($pass2)) { - $params['password2'] = $pass2; - } - - if ($registration_approval_required != 'y') { - $this->make_logged($params['id']); - } - - return array('success' => 'You have registered successfully'); - } else { - $try_login = $this->login($params); - if (isset($try_login['success'])) { - return $try_login; - } - - return array('error' => 'This user already exists!'); - } - } - } - } - - public function after_register($user_id, $suppress_output = true) - { - if ($suppress_output == true) { - ob_start(); - } - $data = $this->get_by_id($user_id); - if (!$data) { - return; - } - - $notif = array(); - $notif['module'] = 'users'; - $notif['rel_type'] = 'users'; - $notif['rel_id'] = $user_id; - $notif['title'] = 'New user registration'; - $notif['description'] = 'You have new user registration'; - $notif['content'] = 'You have new user registered with the username [' . $data['username'] . '] and id [' . $user_id . ']'; - $this->app->notifications_manager->save($notif); - - $this->app->log_manager->save($notif); - $this->register_email_send($user_id); - - $this->app->event_manager->trigger('mw.user.after_register', $data); - if ($suppress_output == true) { - ob_end_clean(); - } - } - - public function register_email_send($user_id = false) - { - if ($user_id == false) { - $user_id = $this->id(); - } - if ($user_id == false) { - return; - } - $data = $this->get_by_id($user_id); - if (!$data) { - return; - } - if (is_array($data)) { - $register_email_enabled = $this->app->option_manager->get('register_email_enabled', 'users'); - if ($register_email_enabled == true) { - - /* - $register_email_subject = $this->app->option_manager->get('register_email_subject', 'users'); - $register_email_content = $this->app->option_manager->get('register_email_content', 'users'); - */ - - // Get register mail temlate - $new_user_registration_template_id = $this->app->option_manager->get('new_user_registration_email_template', 'users'); - $mail_template = get_mail_template_by_id($new_user_registration_template_id, 'new_user_registration'); - - $register_email_subject = $mail_template['subject']; - $register_email_content = $mail_template['message']; - - - $appendFiles = array(); - if (!empty(get_option('append_files', 'mail_template_id_' . $new_user_registration_template_id))) { - $appendFiles = explode(",", get_option('append_files', 'mail_template_id_' . $new_user_registration_template_id)); - } - - if ($register_email_subject == false or trim($register_email_subject) == '') { - $register_email_subject = 'Thank you for your registration!'; - } - $to = $data['email']; - if ($register_email_content != false and trim($register_email_subject) != '') { - if (!empty($data)) { - foreach ($data as $key => $value) { - if (!is_array($value) and is_string($key)) { - $register_email_content = str_ireplace('{' . $key . '}', $value, $register_email_content); - } - } - } - $verify_email_link = $this->app->format->encrypt($data['id']); - $verify_email_link = api_url('users/verify_email_link') . '?key=' . $verify_email_link; - $register_email_content = str_ireplace('{verify_email_link}', $verify_email_link, $register_email_content); - - - if (isset($to) and (filter_var($to, FILTER_VALIDATE_EMAIL))) { - - $sender = new \Microweber\Utils\MailSender(); - return $sender->send($to, $register_email_subject, $register_email_content, false, false, false, false, false, false, $appendFiles); - - } - } - } - } - } - - public function csrf_validate(&$data) - { - $session_token = Session::token(); - if (is_array($data) and $this->session_id()) { - foreach ($data as $k => $v) { - if ($k == 'token' or $k == '_token') { - if ($session_token === $v) { - unset($data[$k]); - - return true; - } - } - } - } - } - - public function hash_pass($pass) - { - $hash = \Hash::make($pass); - - return $hash; - } - - /** - * Allows you to save users in the database. - * - * By default it have security rules. - * - * If you are admin you can save any user in the system; - * - * However if you are regular user you must post param id with the current user id; - * - * @param $params - * @param $params ['id'] = $user_id; // REQUIRED , you must set the user id. - * For security reasons, to make new user please use user_register() function that requires captcha - * or write your own save_user wrapper function that sets mw_var('force_save_user',true); - * and pass its params to save_user(); - * @param $params ['is_active'] = 1; //default is 'n' - * - * @usage - * - * $upd = array(); - * $upd['id'] = 1; - * $upd['email'] = $params['new_email']; - * $upd['password'] = $params['passwordhash']; - * mw_var('force_save_user', false|true); // if true you want to make new user or foce save ... skips id check and is admin check - * mw_var('save_user_no_pass_hash', false|true); //if true skips pass hash function and saves password it as is in the request, please hash the password before that or ensure its hashed - * $s = save_user($upd); - * - * @return bool|int - */ - public $force_save = false; - - public function save($params) - { - $force = false; - if (defined('MW_FORCE_USER_SAVE')) { - $force = MW_FORCE_USER_SAVE; - } elseif ($this->force_save) { - $force = $this->force_save; - } elseif (mw_var('force_save_user')) { - $force = mw_var('force_save_user'); - } - if (!$force) { - if (defined('MW_API_CALL') and mw_is_installed() == true) { - if (isset($params['is_admin']) and $this->is_admin() == false and !is_null(User::first())) { - unset($params['is_admin']); - } - } - } - if ($force == false) { - - if (isset($params['id'])) { - $validate_token = mw()->user_manager->csrf_validate($params); - - if ($validate_token == false) { - - return array( - 'error' => _e('Confirm edit of profile', true), - 'form_data_required' => 'token', - 'form_data_module' => 'users/profile/confirm_edit' - ); - - } - } - - if (isset($params['id']) and $params['id'] != 0) { - $adm = $this->is_admin(); - if ($adm == false) { - $is_logged = user_id(); - if ($is_logged == false or $is_logged == 0) { - return array('error' => 'You must be logged to save user'); - } elseif (intval($is_logged) == intval($params['id']) and intval($params['id']) != 0) { - // the user is editing their own profile - } else { - return array('error' => 'You must be logged to as admin save this user'); - } - } - } else { - if (defined('MW_API_CALL') and mw_is_installed() == true) { - $adm = $this->is_admin(); - if ($adm == false) { - $params['id'] = $this->id(); - $is_logged = user_id(); - if (intval($params['id']) != 0 and $is_logged != $params['id']) { - return array('error' => 'You must be logged save your settings'); - } - } else { - - - if (!isset($params['id'])) { - $params['id'] = $this->id(); - } - } - } - } - } - - $data_to_save = $params; - - if (isset($data_to_save['id']) and $data_to_save['id'] != 0 and isset($data_to_save['email']) and $data_to_save['email'] != false) { - $old_user_data = $this->get_by_id($data_to_save['id']); - if (isset($old_user_data['email']) and $old_user_data['email'] != false) { - if ($data_to_save['email'] != $old_user_data['email']) { - if (isset($old_user_data['password_reset_hash']) and $old_user_data['password_reset_hash'] != false) { - $hash_cache_id = md5(serialize($old_user_data)) . uniqid() . rand(); - $data_to_save['password_reset_hash'] = $hash_cache_id; - } - } - } - } - if (isset($data_to_save['email']) and isset($data_to_save['id'])) { - $email = trim($data_to_save['email']); - if (filter_var($email, FILTER_VALIDATE_EMAIL)) { - $check_existing = array(); - $check_existing['email'] = $email; - $check_existing['single'] = 1; - $check_existing = $this->get_all($check_existing); - - if (isset($check_existing['id']) and $check_existing['id'] != $data_to_save['id']) { - return array('error' => 'User with this email already exists! Try different email address!'); - } - } - } - - - if (isset($params['id']) and intval($params['id']) != 0) { - $user = User::find($params['id']); - - - } else { - $user = new User(); - } - $id_to_return = false; - - $data_to_save = $this->app->format->clean_xss($data_to_save); - - - if ($user->validateAndFill($data_to_save)) { - - if (isset($data_to_save['id'])) { - - $can_edit = $this->__check_id_has_ability_to_edit_user($data_to_save['id']); - if (!$can_edit) { - return array('error' => 'You do not have permission to edit this user'); - } - } - - - if (isset($user->id)) { - $data_to_save['id'] = $params['id'] = $user->id; - } - - - if (isset($data_to_save['id']) and $data_to_save['id'] == 0) { - if ((isset($data_to_save['username']) and $data_to_save['username'] == false) and (isset($data_to_save['email']) and $data_to_save['email'] == false) - ) { - return array('error' => 'You must set email or username'); - } - } - - if (isset($data_to_save['username']) and $data_to_save['username'] != false) { - $check_existing = array(); - $check_existing['username'] = $data_to_save['username']; - $check_existing['single'] = 1; - $check_existing = $this->get_all($check_existing); - - $err = array('error' => 'User with this username already exists! Try different username!'); - - if ($check_existing) { - if (isset($data_to_save['id']) and $data_to_save['id'] != false) { - if (isset($check_existing['id']) and $check_existing['id'] != $data_to_save['id']) { - return $err; - } - } else { - return $err; - } - } - } - - $save = $user->save(); - - if (isset($params['attributes']) or isset($params['data_fields'])) { - $params['extended_save'] = true; - } - - if (isset($params['extended_save'])) { - if (isset($data_to_save['password'])) { - unset($data_to_save['password']); - } - - if (isset($data_to_save['id'])) { - $data_to_save['table'] = 'users'; - $this->app->database_manager->extended_save($data_to_save); - } - } - - - if (isset($params['id']) and intval($params['id']) != 0) { - $id_to_return = intval($params['id']); - } else { - $id_to_return = DB::getPdo()->lastInsertId(); - } - $params['id'] = $id_to_return; - $this->app->event_manager->trigger('mw.user.save', $params); - } else { - return array('error' => 'Error saving the user!'); - } - $this->app->cache_manager->delete('users' . DIRECTORY_SEPARATOR . 'global'); - $this->app->cache_manager->delete('users' . DIRECTORY_SEPARATOR . '0'); - $this->app->cache_manager->delete('users' . DIRECTORY_SEPARATOR . $id_to_return); - - return $id_to_return; - } - - public function login_set_attempt($params = array()) - { - if (!empty($params)) { - if (isset($params['username']) || isset($params['email'])) { - - if (isset($params['username']) && $params['username'] != false and filter_var($params['username'], FILTER_VALIDATE_EMAIL)) { - $params['email'] = $params['username']; - } - - $findUserId = false; - $findByUsername = false; - - if (isset($params['username'])) { - $findByUsername = User::where('username', $params['username'])->first(); - } - - if ($findByUsername) { - $findUserId = $findByUsername->id; - } else { - if (isset($params['email'])) { - $findByEmail = User::where('email', $params['email'])->first(); - if ($findByEmail) { - $findUserId = $findByEmail->id; - } - } - } - - if (!$findUserId) { - return; - } - - $loginAttempt = new LoginAttempt(); - if (isset($params['username'])) { - $loginAttempt->username = $params['username']; - } - if (isset($params['email'])) { - $loginAttempt->email = $params['email']; - } - - $loginAttempt->user_id = $findUserId; - $loginAttempt->time = time(); - $loginAttempt->ip = MW_USER_IP; - $loginAttempt->success = $params['success']; - $loginAttempt->save(); - } - } - } - - public function login_set_success_attempt($params = array()) - { - $params['success'] = true; - $this->login_set_attempt($params); - - $this->app->log_manager->save('title=Success login&is_system=y&rel_type=login_succes&user_ip=' . MW_USER_IP); - } - - public function login_set_failed_attempt($params = array()) - { - $params['success'] = false; - $this->login_set_attempt($params); - - $this->app->log_manager->save('title=Failed login&is_system=y&rel_type=login_failed&user_ip=' . MW_USER_IP); - } - - public function get($params = false) - { - $id = $params; - if ($id == false) { - $id = $this->id(); - } - if ($id == 0) { - return false; - } - $res = $this->get_by_id($id); - if (empty($res)) { - $res = $this->get_by_username($id); - } - - return $res; - } - - public function get_by_email($email) - { - $data = array(); - $data['email'] = $email; - $data['limit'] = 1; - $data = $this->get_all($data); - if (isset($data[0])) { - $data = $data[0]; - } - - return $data; - } - - public function get_by_username($username) - { - $data = array(); - $data['username'] = $username; - $data['limit'] = 1; - $data = $this->get_all($data); - if (isset($data[0])) { - $data = $data[0]; - } - - return $data; - } - - public function delete($data) - { - if (!is_array($data)) { - $new_data = array(); - $new_data['id'] = intval($data); - $data = $new_data; - } - if (isset($data['id'])) { - $c_id = intval($data['id']); - $can_edit = $this->__check_id_has_ability_to_edit_user($c_id); - if (!$can_edit) { - return false; - } - - $this->app->database_manager->delete_by_id('users', $c_id); - - return $c_id; - } - - return $data; - } - - public function reset_password_from_link($params) - { - if (!isset($params['captcha'])) { - return array('error' => 'Please enter the captcha answer!'); - } else { - $validate_captcha = $this->app->captcha->validate($params['captcha']); - if (!$validate_captcha) { - return array('error' => 'Invalid captcha answer!', 'captcha_error' => true); - } - } - - if (!isset($params['id']) or trim($params['id']) == '') { - return array('error' => 'You must send id parameter'); - } - - if (isset($params['id'])) { - - $can_edit = $this->__check_id_has_ability_to_edit_user($params['id']); - if (!$can_edit) { - return array('error' => 'You do not have permission to edit this user'); - } - } - - - if (!isset($params['password_reset_hash']) or trim($params['password_reset_hash']) == '') { - return array('error' => 'You must send password_reset_hash parameter'); - } - - if (!isset($params['pass1']) or trim($params['pass1']) == '') { - return array('error' => 'Enter new password!'); - } - - if (!isset($params['pass2']) or trim($params['pass2']) == '') { - return array('error' => 'Enter repeat new password!'); - } - - if ($params['pass1'] != $params['pass2']) { - return array('error' => 'Your passwords does not match!'); - } - - $data1 = array(); - $data1['id'] = intval($params['id']); - $data1['password_reset_hash'] = $this->app->database_manager->escape_string($params['password_reset_hash']); - $table = $this->tables['users']; - - $check = $this->get_all('single=true&password_reset_hash=[not_null]&password_reset_hash=' . $data1['password_reset_hash'] . '&id=' . $data1['id']); - if (!is_array($check)) { - return array('error' => 'Invalid data or expired link!'); - } else { - $data1['password_reset_hash'] = ''; - } - $this->force_save = true; - $save = $this->app->database_manager->save($table, $data1); - $save_user = array(); - $save_user['id'] = intval($params['id']); - $save_user['password'] = $params['pass1']; - if (isset($check['email'])) { - $save_user['email'] = $check['email']; - } - $this->app->event_manager->trigger('mw.user.change_password', $save_user); - - $this->save($save_user); - - $notif = array(); - $notif['module'] = 'users'; - $notif['rel_type'] = 'users'; - $notif['rel_id'] = $data1['id']; - $notif['title'] = "The user have successfully changed password. (User id: {$data1['id']})"; - - $this->app->log_manager->save($notif); - $this->session_end(); - - return array('success' => 'Your password have been changed!'); - } - - public function session_end() - { - \Session::flush(); - \Session::regenerate(); - } - - public function send_forgot_password($params) - { - $no_captcha = get_option('captcha_disabled', 'users') == 'y'; - if (!$no_captcha) { - if (!isset($params['captcha'])) { - return array('error' => 'Please enter the captcha answer!'); - } else { - $validate_captcha = $this->app->captcha->validate($params['captcha']); - if ($validate_captcha == false) { - return array('error' => 'Invalid captcha answer!', 'captcha_error' => true); - } - } - } - - if (isset($params['email'])) { - //return array('error' => 'Enter username or email!'); - } elseif (!isset($params['username']) or trim($params['username']) == '') { - return array('error' => 'Enter username or email!'); - } - - $data_res = false; - $data = false; - if (isset($params) and !empty($params)) { - $user = isset($params['username']) ? $params['username'] : false; - $email = isset($params['email']) ? $params['email'] : false; - $data = array(); - if (trim($user != '')) { - $data1 = array(); - $data1['username'] = $user; - $data = array(); - if (trim($user != '')) { - $data = $this->get_all($data1); - if ($data == false) { - $data1 = array(); - $data1['email'] = $user; - $data = $this->get_all($data1); - } - } - } elseif (trim($email != '')) { - $data1 = array(); - $data1['email'] = $email; - $data = array(); - if (trim($email != '')) { - $data = $this->get_all($data1); - } - } - - if (isset($data[0])) { - $data_res = $data[0]; - } - if (!is_array($data_res)) { - return array('error' => 'Enter right username or email!'); - } else { - $to = $data_res['email']; - if (isset($to) and (filter_var($to, FILTER_VALIDATE_EMAIL))) { - $subject = 'Password reset!'; - $content = "Hello, {$data_res['username']}
"; - $content .= 'You have requested a password reset link from IP address: ' . MW_USER_IP . '

'; - $security = array(); - $security['ip'] = MW_USER_IP; - // $security['hash'] = $this->app->format->array_to_base64($data_res); - // $function_cache_id = md5(rand()) . uniqid() . rand() . str_random(40); - $function_cache_id = md5($data_res['id']) . uniqid() . rand() . str_random(40); - if (isset($data_res['id'])) { - $data_to_save = array(); - $data_to_save['id'] = $data_res['id']; - $data_to_save['password_reset_hash'] = $function_cache_id; - $table = $this->tables['users']; - $save = $this->app->database_manager->save($table, $data_to_save); - } - - $base_link = $this->app->url_manager->current(1); - - $cur_template = template_dir(); - $cur_template_file = normalize_path($cur_template . 'login.php', false); - $cur_template_file2 = normalize_path($cur_template . 'forgot_password.php', false); - if (is_file($cur_template_file)) { - $base_link = site_url('login'); - } elseif (is_file($cur_template_file2)) { - $base_link = site_url('forgot_password'); - } - - $pass_reset_link = $base_link . '?reset_password_link=' . $function_cache_id; - $security['base_link'] = $base_link; - $security['reset_password_link'] = "" . $pass_reset_link . ''; - $security['username'] = $data_res['username']; - $security['first_name'] = $data_res['first_name']; - $security['last_name'] = $data_res['last_name']; - $security['created_at'] = $data_res['created_at']; - $security['email'] = $data_res['email']; - $security['id'] = $data_res['id']; - - $notif = array(); - $notif['module'] = 'users'; - $notif['rel_type'] = 'users'; - $notif['rel_id'] = $data_to_save['id']; - $notif['title'] = 'Password reset link sent'; - $content_notif = "User with id: {$data_to_save['id']} and email: {$to} has requested a password reset link"; - $notif['description'] = $content_notif; - $this->app->log_manager->save($notif); - $content .= "Click here to reset your password " . $pass_reset_link . '

'; - - //custom email - - if (get_option('forgot_pass_email_enabled', 'users')) { - $cust_subject = get_option('forgot_pass_email_subject', 'users'); - $cust_content = get_option('forgot_pass_email_content', 'users'); - if (trim($cust_subject) != '') { - $subject = $cust_subject; - } - if ($cust_content != false) { - $cust_content_check = strip_tags($cust_content); - $cust_content_check = trim($cust_content_check); - if ($cust_content_check != '') { - foreach ($security as $key => $value) { - if (!is_array($value) and is_string($key)) { - $cust_content = str_ireplace('{' . $key . '}', $value, $cust_content); - } - } - $content = $cust_content; - } - } - } - - $sender = new \Microweber\Utils\MailSender(); - $sender->send($to, $subject, $content); - - return array('success' => 'Your password reset link has been sent to ' . $to); - } else { - return array('error' => 'Error: the user doesn\'t have a valid email address!'); - } - } - } - } - - public function social_login($params) - { - if (is_string($params)) { - $params = parse_params($params); - } - - $return_after_login = false; - if (isset($params['redirect'])) { - $return_after_login = $params['redirect']; - $this->session_set('user_after_login', $return_after_login); - } elseif (isset($_SERVER['HTTP_REFERER']) and stristr($_SERVER['HTTP_REFERER'], $this->app->url_manager->site())) { - $return_after_login = $_SERVER['HTTP_REFERER']; - $this->session_set('user_after_login', $return_after_login); - } - - $provider = false; - if (isset($_REQUEST['provider'])) { - $provider = $_REQUEST['provider']; - $provider = trim(strip_tags($provider)); - } - - if ($provider != false and isset($params) and !empty($params)) { - $this->socialite_config($provider); - switch ($provider) { - case 'github': - return $login = $this->socialite->with($provider)->scopes(['user:email'])->redirect(); - } - - return $login = $this->socialite->with($provider)->redirect(); - } - } - - public function make_logged($user_id) - { - if (is_array($user_id)) { - if (isset($user_id['id'])) { - $user_id = $user_id['id']; - } - } - if (intval($user_id) > 0) { - $data = $this->get_by_id($user_id); - if ($data == false) { - return false; - } else { - if (is_array($data)) { - $user_session = array(); - $user_session['is_logged'] = 'yes'; - $user_session['user_id'] = $data['id']; - - if (!defined('USER_ID')) { - define('USER_ID', $data['id']); - } - - $old_sid = Session::getId(); - $data['old_sid'] = $old_sid; - $user_session['old_session_id'] = $old_sid; - $current_user = Auth::user(); - if ((isset($current_user->id) and $current_user->id == $user_id)) { - Auth::login(Auth::user()); - } else { - Auth::loginUsingId($data['id']); - } -// -// Session::setId($old_sid); -// Session::save(); - - $this->app->event_manager->trigger('mw.user.login', $data); - $this->session_set('user_session', $user_session); - $user_session = $this->session_get('user_session'); - - $this->update_last_login_time(); - $user_session['success'] = _e('You are logged in!', true); - - return $user_session; - } - } - } - } - - /** - * Generic function to get the user by id. - * Uses the getUsers function to get the data. - * - * @param - * int id - * - * @return array - */ - public function get_by_id($id) - { - $id = intval($id); - if ($id == 0) { - return false; - } - - $data = array(); - $data['id'] = $id; - $data['limit'] = 1; - $data['single'] = 1; - - $data = $this->get_all($data); - - return $data; - } - - public function update_last_login_time() - { - $uid = user_id(); - if (intval($uid) > 0) { - $data_to_save = array(); - $data_to_save['id'] = $uid; - $data_to_save['last_login'] = date('Y-m-d H:i:s'); - $data_to_save['last_login_ip'] = MW_USER_IP; - - $table = $this->tables['users']; - $save = $this->app->database_manager->save($table, $data_to_save); - - $this->app->log_manager->delete('is_system=y&rel_type=login_failed&user_ip=' . MW_USER_IP); - } - } - - public function social_login_process($params = false) - { - $user_after_login = $this->session_get('user_after_login'); - - if (!isset($_REQUEST['provider']) and isset($_REQUEST['hauth_done'])) { - $_REQUEST['provider'] = $_REQUEST['hauth_done']; - } - if (!isset($_REQUEST['provider'])) { - return $this->app->url_manager->redirect(site_url()); - } - - $auth_provider = $_REQUEST['provider']; - $this->socialite_config($auth_provider); - - - try { - // $this->socialite_config($auth_provider); - $user = $this->socialite->driver($auth_provider)->user(); - - $email = $user->getEmail(); - - $username = $user->getNickname(); - $oauth_id = $user->getId(); - $avatar = $user->getAvatar(); - $name = $user->getName(); - - $existing = array(); - - if ($email != false) { - $existing['email'] = $email; - } else { - $existing['oauth_uid'] = $oauth_id; - $existing['oauth_provider'] = $auth_provider; - } - $save = $existing; - $save['thumbnail'] = $avatar; - $save['username'] = $username; - $save['is_active'] = 1; - $save['is_admin'] = 0; - $save['first_name'] = ''; - $save['last_name'] = ''; - - if ($name != false) { - $names = explode(' ', $name); - if (isset($names[0])) { - $save['first_name'] = array_shift($names); - if (!empty($names)) { - $last = implode(' ', $names); - $save['last_name'] = $last; - } - } - } - $existing['single'] = true; - $existing['limit'] = 1; - $existing = $this->get_all($existing); - if (!defined('MW_FORCE_USER_SAVE')) { - define('MW_FORCE_USER_SAVE', true); - } - if (isset($existing['id'])) { - if ($save['is_active'] != 1) { - return; - } - $this->make_logged($existing['id']); - } else { - $new_user = $this->save($save); - $this->after_register($new_user); - - $this->make_logged($new_user); - } - } catch (\Laravel\Socialite\Two\InvalidStateException $e) { - //do nothing - } catch (\GuzzleHttp\Exception\ClientException $e) { - //do nothing - } catch (\InvalidArgumentException $e) { - //do nothing - } catch (\Exception $e) { - //do nothing - } - - if ($user_after_login != false) { - return $this->app->url_manager->redirect($user_after_login); - } else { - return $this->app->url_manager->redirect(site_url()); - } - } - - public function count() - { - $options = array(); - $options['count'] = true; - $options['cache_group'] = 'users/global/'; - $data = $this->get_all($options); - - return $data; - } - - /** - * @function get_users - * - * @param $params array|string; - * @params $params['username'] string username for user - * @params $params['email'] string email for user - * @params $params['password'] string password for user - * - * - * @usage $this->get_all('email=my_email'); - * - * @return array of users; - */ - public function get_all($params) - { - $params = parse_params($params); - - $table = $this->tables['users']; - - $data = $this->app->format->clean_html($params); - $orig_data = $data; - - if (isset($data['ids']) and is_array($data['ids'])) { - if (!empty($data['ids'])) { - $ids = $data['ids']; - } - } - if (!isset($params['search_in_fields'])) { - $data['search_in_fields'] = array('id', 'first_name', 'last_name', 'username', 'email'); - } - $cache_group = 'users/global'; - if (isset($limit) and $limit != false) { - $data['limit'] = $limit; - } - if (isset($count_only) and $count_only != false) { - $data['count'] = $count_only; - } - if (isset($data['username']) and $data['username'] == false) { - unset($data['username']); - } - - $data['table'] = $table; - $get = $this->app->database_manager->get($data); - - return $get; - } - - public function register_url() - { - $template_dir = $this->app->template->dir(); - $file = $template_dir . 'register.php'; - $default_url = false; - if (is_file($file)) { - $default_url = 'register'; - } else { - $default_url = 'users/register'; - } - - $checkout_url = $this->app->option_manager->get('register_url', 'users'); - if ($checkout_url != false and trim($checkout_url) != '') { - $default_url = $checkout_url; - } - - $checkout_url_sess = $this->session_get('register_url'); - - if ($checkout_url_sess == false) { - return $this->app->url_manager->site($default_url); - } else { - return $this->app->url_manager->site($checkout_url_sess); - } - } - - public function logout_url() - { - - $template_dir = $this->app->template->dir(); - $file = $template_dir . 'logout.php'; - $logout_url_settings = $this->app->option_manager->get('logout_url', 'users'); - $logout_url_sess = $this->session_get('logout_url'); - - if ($logout_url_sess) { - return $logout_url_sess; - } else if ($logout_url_settings) { - return $logout_url_settings; - } else if (is_file($file)) { - return site_url('logout'); - } else { - return api_url('logout'); - } - - } - - public function login_url() - { - $template_dir = $this->app->template->dir(); - $file = $template_dir . 'login.php'; - $default_url = false; - if (is_file($file)) { - $default_url = 'login'; - } else { - $default_url = 'users/login'; - } - - $login_url = $this->app->option_manager->get('login_url', 'users'); - if ($login_url != false and trim($login_url) != '') { - $default_url = $login_url; - } - - $login_url_sess = $this->session_get('login_url'); - - if ($login_url_sess == false) { - return $this->app->url_manager->site($default_url); - } else { - return $this->app->url_manager->site($login_url_sess); - } - } - - public function profile_url() - { - $template_dir = $this->app->template->dir(); - $file = $template_dir . 'profile.php'; - $default_url = false; - if (is_file($file)) { - $default_url = 'profile'; - } else { - $default_url = 'users/profile'; - } - - $profile_url = $this->app->option_manager->get('profile_url', 'users'); - if ($profile_url != false and trim($profile_url) != '') { - $profile_url = $profile_url; - } - - $profile_url_sess = $this->session_get('profile_url'); - - if ($profile_url_sess == false) { - return $this->app->url_manager->site($default_url); - } else { - return $this->app->url_manager->site($profile_url_sess); - } - } - - public function forgot_password_url() - { - $template_dir = $this->app->template->dir(); - $file = $template_dir . 'forgot_password.php'; - $default_url = false; - if (is_file($file)) { - $default_url = 'forgot_password'; - } else { - $default_url = 'users/forgot_password'; - } - $checkout_url = $this->app->option_manager->get('forgot_password_url', 'users'); - if ($checkout_url != false and trim($checkout_url) != '') { - $default_url = $checkout_url; - } - $checkout_url_sess = $this->session_get('forgot_password_url'); - if ($checkout_url_sess == false) { - return $this->app->url_manager->site($default_url); - } else { - return $this->app->url_manager->site($checkout_url_sess); - } - } - - public function session_set($name, $val) - { - $this->app->event_manager->trigger('mw.user.session_set', $name, $val); - - return Session::put($name, $val); - } - - public function csrf_form($unique_form_name = false) - { - if ($unique_form_name == false) { - $unique_form_name = uniqid(); - } - - $token = $this->csrf_token($unique_form_name); - - $input = ''; - - return $input; - } - - public function session_all() - { - $value = Session::all(); - - return $value; - } - - public function session_id() - { - return Session::getId(); - } - - public function session_get($name) - { - $value = Session::get($name); - - return $value; - } - - public function session_del($name) - { - Session::forget($name); - } - - public function csrf_token($unique_form_name = false) - { - return csrf_token(); - } - - public function socialite_config($provider = false) - { - $callback_url = api_url('social_login_process?provider=' . $provider); - - if (get_option('enable_user_fb_registration', 'users') == 'y') { - Config::set('services.facebook.client_id', get_option('fb_app_id', 'users')); - Config::set('services.facebook.client_secret', get_option('fb_app_secret', 'users')); - Config::set('services.facebook.redirect', $callback_url); - } - - if (get_option('enable_user_twitter_registration', 'users') == 'y') { - Config::set('services.twitter.client_id', get_option('twitter_app_id', 'users')); - Config::set('services.twitter.client_secret', get_option('twitter_app_secret', 'users')); - Config::set('services.twitter.redirect', $callback_url); - } - - if (get_option('enable_user_google_registration', 'users') == 'y') { - Config::set('services.google.client_id', get_option('google_app_id', 'users')); - Config::set('services.google.client_secret', get_option('google_app_secret', 'users')); - Config::set('services.google.redirect', $callback_url); - } - - if (get_option('enable_user_github_registration', 'users') == 'y') { - Config::set('services.github.client_id', get_option('github_app_id', 'users')); - Config::set('services.github.client_secret', get_option('github_app_secret', 'users')); - Config::set('services.github.redirect', $callback_url); - } - - if (get_option('enable_user_linkedin_registration', 'users') == 'y') { - Config::set('services.linkedin.client_id', get_option('linkedin_app_id', 'users')); - Config::set('services.linkedin.client_secret', get_option('linkedin_app_secret', 'users')); - Config::set('services.linkedin.redirect', $callback_url); - } - - if (get_option('enable_user_microweber_registration', 'users') == 'y') { - $svc = Config::get('services.microweber'); - if (!isset($svc['client_id'])) { - Config::set('services.microweber.client_id', get_option('microweber_app_id', 'users')); - } - if (!isset($svc['client_secret'])) { - Config::set('services.microweber.client_secret', get_option('microweber_app_secret', 'users')); - } - if (!isset($svc['redirect'])) { - Config::set('services.microweber.redirect', $callback_url); - } - $this->socialite->extend('microweber', function ($app) { - $config = $app['config']['services.microweber']; - - return $this->socialite->buildProvider('\Microweber\Providers\Socialite\MicroweberProvider', $config); - }); - } - } - - public function terms_accept($tos_name, $user_id_or_email = false) - { - $tos = new TosManager(); - return $tos->terms_accept($tos_name, $user_id_or_email); - - } - - public function terms_check($tos_name = false, $user_id_or_email = false) - { - - $tos = new TosManager(); - return $tos->terms_check($tos_name, $user_id_or_email); - - } - - - private function __check_id_has_ability_to_edit_user($user_id) - { - if (!$user_id) { - return true; - } - $disable_edit_users = Config::get('microweber.users_disable_edit'); - if ($disable_edit_users) { - $a = array(); - if (!is_array($disable_edit_users)) { - $a[] = $disable_edit_users; - } else { - $a = $disable_edit_users; - } - if (is_arr($a)) { - foreach ($a as $disabled_user_id) { - if ($disabled_user_id and $disabled_user_id == $user_id) { - return false; - } - } - } - } - - - return true; - - } -} diff --git a/update/src/Microweber/Utils/Adapters/Config/ElementsConfigReader.php b/update/src/Microweber/Utils/Adapters/Config/ElementsConfigReader.php deleted file mode 100644 index dbcea550..00000000 --- a/update/src/Microweber/Utils/Adapters/Config/ElementsConfigReader.php +++ /dev/null @@ -1,242 +0,0 @@ -app)) { - if (is_object($app)) { - $this->app = $app; - } else { - $this->app = mw(); - } - } - - $this->app = $app; - } - - public function scan($folder) - { - $glob_patern = '*.php'; - $dir = rglob($folder . '*.php', 0); - if ($dir) { - $configs = array(); - foreach ($dir as $filename) { - $read = $this->read($filename); - if ($read) { - $configs[] = $this->read($filename); - } - } - return $configs; - } - } - - public function read($filename) - { - - - if (!is_file($filename)) { - return; - } - - $loc_of_config = str_ireplace('.php', '_config.php', $filename); - - $template_dirs = array(); - $template_dirs[] = modules_path(); - if (defined('TEMPLATE_DIR')) { - $template_dirs[] = TEMPLATE_DIR; - } - $config_ready = array(); - - $layout_file = $filename; - - if (isset($template_dirs) and !empty($template_dirs)) { - foreach ($template_dirs as $template_dir) { - $layout_file = str_replace($template_dir, '', $layout_file); - - $layout_file = str_replace(normalize_path($template_dir), '', $layout_file); - } - } - - if (defined('TEMPLATE_DIR')) { - $layout_file = substr(normalize_path($layout_file , false), strpos(normalize_path($layout_file,false), TEMPLATE_DIR),strlen($layout_file) ); - - } - - $layout_file = substr($layout_file, strpos($layout_file, "templates"),strlen($layout_file) ); - - $layout_file = str_replace(DS, '/', $layout_file); - - if (is_file($loc_of_config)) { - include $loc_of_config; - if (isset($config) and is_array($config) and isset($config['as_element']) and $config['as_element'] == true) { - - - $config_ready = $config; - $config_ready['layout_file'] = $layout_file; - $config_ready['module'] = 'element-from-template'; - $config_ready['template'] = $layout_file; - $config_ready['filename'] = $filename; - - $config_ready['type'] = 'layout'; - $config_ready['as_element'] = true; - - - } - } else { - $fin = file_get_contents($filename); - $fin = preg_replace('/\r\n?/', "\n", $fin); - - $here_dir = dirname($filename) . DS; - $to_return_temp = array(); - if (preg_match('/type:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('type:', '', $result); - $to_return_temp['type'] = trim($result); - $to_return_temp['directory'] = $here_dir; - if (strstr($here_dir, templates_path())) { - $templ_dir = str_replace(templates_path(), '', $here_dir); - if ($templ_dir != '') { - $templ_dir = explode(DS, $templ_dir); - if (isset($templ_dir[0])) { - $to_return_temp['template_dir'] = $templ_dir[0]; - } - } - } - if (strstr($here_dir, modules_path())) { - $templ_dir1 = str_replace(modules_path(), '', $here_dir); - - $templ_dir1 = str_ireplace('templates', '', $templ_dir1); - $templ_dir1 = str_ireplace('\\', '/', $templ_dir1); - $templ_dir1 = str_ireplace('//', '/', $templ_dir1); - $templ_dir1 = rtrim($templ_dir1, '/\\'); - - $to_return_temp['module_directory'] = $templ_dir1; - } - - if (strtolower($to_return_temp['type']) == 'layout') { - $to_return_temp['directory'] = $here_dir; - - if (preg_match('/is_shop:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('is_shop:', '', $result); - $to_return_temp['is_shop'] = trim($result); - } - - if (preg_match('/name:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('name:', '', $result); - $to_return_temp['name'] = trim($result); - } - - if (preg_match('/is_default:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('is_default:', '', $result); - $to_return_temp['is_default'] = trim($result); - } - - if (preg_match('/position:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('position:', '', $result); - $to_return_temp['position'] = intval($result); - } else { - $to_return_temp['position'] = 99999; - } - - if (preg_match('/version:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('version:', '', $result); - $to_return_temp['version'] = trim($result); - } - if (preg_match('/visible:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('visible:', '', $result); - $to_return_temp['visible'] = trim($result); - } - - if (preg_match('/icon:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('icon:', '', $result); - $to_return_temp['icon'] = trim($result); - - $possible = $here_dir . $to_return_temp['icon']; - if (is_file($possible)) { - $to_return_temp['icon'] = mw()->url_manager->link_to_file($possible); - } else { - unset($to_return_temp['icon']); - } - } - - if (preg_match('/image:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('image:', '', $result); - $to_return_temp['image'] = trim($result); - $possible = $here_dir . $to_return_temp['image']; - - if (is_file($possible)) { - $to_return_temp['image'] = mw()->url_manager->link_to_file($possible); - } else { - unset($to_return_temp['image']); - } - } - - if (preg_match('/description:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('description:', '', $result); - $to_return_temp['description'] = trim($result); - } - - if (preg_match('/content_type:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('content_type:', '', $result); - $to_return_temp['content_type'] = trim($result); - } - - if (preg_match('/tag:.+/', $fin, $regs)) { - $result = $regs[0]; - $result = str_ireplace('tag:', '', $result); - $to_return_temp['tag'] = trim($result); - } - // $layout_file = $filename; - - // $layout_file = str_replace(DS, '/', $layout_file); - $to_return_temp['layout_file'] = $layout_file; - $to_return_temp['filename'] = $filename; - - - $config_ready = $to_return_temp; - } - } - } - - - if (isset($config_ready['filename'])) { - $screen = str_ireplace('.php', '.png', $config_ready['filename']); - $screen_jpg = str_ireplace('.php', '.jpg', $config_ready['filename']); - if (is_file($screen_jpg)) { - $config_ready['screenshot_file'] = $screen_jpg; - } elseif (is_file($screen)) { - $config_ready['screenshot_file'] = $screen; - } - if (isset($config_ready['screenshot_file'])) { - $config_ready['screenshot'] = mw()->url_manager->link_to_file($config_ready['screenshot_file']); - $config_ready['icon'] = mw()->url_manager->link_to_file($config_ready['screenshot_file']); - - } - } - - if ($config_ready) { - return $config_ready; - } - - } - - -} diff --git a/update/src/Microweber/Utils/Adapters/Event/LaravelEvent.php b/update/src/Microweber/Utils/Adapters/Event/LaravelEvent.php deleted file mode 100644 index 616044cc..00000000 --- a/update/src/Microweber/Utils/Adapters/Event/LaravelEvent.php +++ /dev/null @@ -1,64 +0,0 @@ -[], 'contentIds'=>[], 'tables'=>[]]; - public $exportType = 'json'; - public $exportIncludeMedia = false; - public $importType = false; - public $importFile = false; - public $importBatch = true; - public $importOvewriteById = false; - - public function __construct() - { - if (php_can_use_func('ini_set')) { - ini_set('memory_limit', '-1'); - } - - if (php_can_use_func('set_time_limit')) { - set_time_limit(0); - } - } - - /** - * Set logger - * @param class $logger - */ - public function setLogger($logger) { - - BackupImportLogger::setLogger($logger); - BackupExportLogger::setLogger($logger); - - } - - /** - * Set export full - * @param string $type - */ - public function setExportAllData($exportAllData = true) { - $this->exportAllData = $exportAllData; - } - - /** - * Set export file format - * @param string $type - */ - public function setExportType($type) - { - $this->exportType = $type; - } - - /** - * Set wich data want to export - * @param array $data - */ - public function setExportData($dataType, $dataIds) { - $this->exportData[$dataType] = $dataIds; - } - - public function setExportIncludeMedia($includeMedia) { - $this->exportIncludeMedia = $includeMedia; - } - - /** - * Set import file format - * @param string $type - */ - public function setImportType($type) - { - $this->importType = $type; - } - - public function setImportBatch($importBatch) { - $this->importBatch = $importBatch; - } - - public function setImportOvewriteById($overwrite) { - $this->importOvewriteById = $overwrite; - } - - /** - * Set import file path - * @param string $file - */ - public function setImportFile($file) - { - if (! is_file($file)) { - return array('error' => 'Backup Manager: You have not provided a existing backup to restore.'); - } - - $this->setImportType(pathinfo($file, PATHINFO_EXTENSION)); - $this->importFile = $file; - } - - /** - * Start exporting - * @return string[] - */ - public function startExport() - { - try { - - /* // If we want export media - if (in_array('media', $this->exportData['tables']) || $this->exportAllData == true) { - $this->exportType = 'zip'; - } */ - - $export = new Export(); - $export->setType($this->exportType); - $export->setExportData($this->exportData); - $export->setExportAllData($this->exportAllData); - $export->setIncludeMedia($this->exportIncludeMedia); - - return $export->start(); - - } catch (\Exception $e) { - return array("error"=>$e->getMessage(), "file"=>$e->getFile(), "code"=>$e->getCode(), "line"=>$e->getLine()); - } - - } - - /** - * Start importing - * @return array - */ - public function startImport() - { - try { - $import = new Import(); - $import->setType($this->importType); - $import->setFile($this->importFile); - - $content = $import->readContentWithCache(); - - if (isset($content['error'])) { - return $content; - } - - $writer = new DatabaseWriter(); - $writer->setContent($content['data']); - $writer->setOverwriteById($this->importOvewriteById); - - if ($this->importBatch) { - $writer->runWriterWithBatch(); - } else { - $writer->runWriter(); - } - - return $writer->getImportLog(); - - } catch (\Exception $e) { - return array("file"=>$e->getFile(), "line"=>$e->getLine(), "error"=>$e->getMessage()); - } - } - - /** - * Get backup location path. - * @return string - */ - public function getBackupLocation() - { - $backupContent = storage_path() . '/backup_content/' . \App::environment(). '/'; - - if (! is_dir($backupContent)) { - mkdir_recursive($backupContent); - $htaccess = $backupContent . '.htaccess'; - if (! is_file($htaccess)) { - touch($htaccess); - file_put_contents($htaccess, 'Deny from all'); - } - } - - return $backupContent; - } -} \ No newline at end of file diff --git a/update/src/Microweber/Utils/Backup/DatabaseWriter.php b/update/src/Microweber/Utils/Backup/DatabaseWriter.php deleted file mode 100644 index 059e2372..00000000 --- a/update/src/Microweber/Utils/Backup/DatabaseWriter.php +++ /dev/null @@ -1,406 +0,0 @@ -content = $content; - } - - public function getCurrentStep() { - - $this->currentStep = (int) cache_get('CurrentStep', $this->_cacheGroupName); - - if (!$this->currentStep) { - $this->currentStep = 0; - } - - /* - if ($this->currentStep > $this->totalSteps) { - //$this->_finishUp('getCurrentStep()'); - //$this->currentStep = 0; - }*/ - - return $this->currentStep; - } - - public function setOverwriteById($overwrite) { - $this->overwriteById = $overwrite; - } - - /** - * Unset item fields - * @param array $item - * @return array - */ - private function _unsetItemFields($item) { - $unsetFields = array('id', 'rel_id', 'order_id', 'parent_id', 'position'); - foreach($unsetFields as $field) { - unset($item[$field]); - } - return $item; - } - - private function _saveItemDatabase($item) { - - if ($this->overwriteById) { - - // We will overwrite content by id from our db structure - - $dbSelectParams = array(); - $dbSelectParams['no_cache'] = true; - $dbSelectParams['limit'] = 1; - $dbSelectParams['single'] = true; - $dbSelectParams['do_not_replace_site_url'] = 1; - $dbSelectParams['fields'] = 'id'; - $dbSelectParams['id'] = $item['id']; - - $itemIdDatabase = DatabaseSave::save($item['save_to_table'], $item); - - return array('item'=>$item, 'itemIdDatabase'=>$itemIdDatabase); - } - - if ($item['save_to_table'] == 'options') { - if (isset($item['option_key']) && $item['option_key'] == 'current_template') { - if (!is_dir(userfiles_path().'/templates/'.$item['option_value'])) { - // Template not found - return; - } - } - } - - if ($item['save_to_table'] == 'custom_fields') { - $this->_saveCustomField($item); - return; - } - - if ($item['save_to_table'] == 'content_data') { - $this->_saveContentData($item); - return; - } - - if ($item['save_to_table'] == 'tagging_tagged') { - $this->_taggingTagged($item); - return; - } - - if (isset($item['rel_type']) && $item['rel_type'] == 'modules' && $item['save_to_table'] == 'media') { - $this->_saveModule($item); - return; - } - - if ($item['save_to_table'] == 'media' && empty($item['title'])) { - $this->_saveMedia($item); - return; - } - - if ($item['save_to_table'] == 'menus') { - if($this->_saveMenuItem($item)) { - $this->_fixMenuParents(); - } - return; - } - - if ($item['save_to_table'] == 'categories_items') { - if ($this->_saveCategoriesItems($item)) { - $this->_fixCategoryParents(); - return; - } - } - - if ($item['save_to_table'] == 'categories') { - $this->_fixCategoryParents(); - } - - // Dont import menus without title - if ($item['save_to_table'] == 'content_fields' && empty($item['title'])) { - $this->_saveContentField($item); - return; - } - - $dbSelectParams = array(); - $dbSelectParams['no_cache'] = true; - $dbSelectParams['limit'] = 1; - $dbSelectParams['single'] = true; - $dbSelectParams['do_not_replace_site_url'] = 1; - $dbSelectParams['fields'] = 'id'; - - foreach(DatabaseDublicateChecker::getRecognizeFields($item['save_to_table']) as $tableField) { - if (isset($item[$tableField])) { - $dbSelectParams[$tableField] = $item[$tableField]; - } - } - - $checkItemIsExists = db_get($item['save_to_table'], $dbSelectParams); - if ($checkItemIsExists) { - BackupImportLogger::setLogInfo('Update item ' . $this->_getItemFriendlyName($item) . ' in ' . $item['save_to_table']); - } else { - BackupImportLogger::setLogInfo('Save item ' . $this->_getItemFriendlyName($item) . ' in ' . $item['save_to_table']); - } - - $saveItem = $this->_unsetItemFields($item); - if ($checkItemIsExists) { - $saveItem['id'] = $checkItemIsExists['id']; - } - - $saveAsContent = false; - if ($saveItem['save_to_table'] == 'content') { - $saveAsContent = true; - if (isset($saveItem['content_type']) && $saveItem['content_type'] == 'page') { - $saveAsContent = false; - } - } - - if ($saveAsContent) { - $itemIdDatabase = DatabaseSaveContent::save($saveItem['save_to_table'], $saveItem); - } else { - $itemIdDatabase = DatabaseSave::save($saveItem['save_to_table'], $saveItem); - } - - return array('item'=>$item, 'itemIdDatabase'=>$itemIdDatabase); - } - - private function _getItemFriendlyName($item) { - $name = ''; - if (isset($item['title'])) { - $name = $item['title']; - } - if (isset($item['name'])) { - $name = $item['name']; - } - return $name; - } - - /** - * Save item in database - * @param string $table - * @param array $item - */ - private function _saveItem($item) { - - $savedItem = $this->_saveItemDatabase($item); - - if ($savedItem) { - $this->_fixRelations($savedItem); - $this->_fixParentRelationship($savedItem); - } - - //echo $item['save_to_table']; - //die(); - } - - /** - * Run database writer. - * @return string[] - */ - public function runWriter() - { - /* - //$importTables = array('users', 'categories', 'modules', 'comments', 'content', 'media', 'options', 'calendar', 'cart_orders'); - */ - - /* $importTables = array('comments'); - - foreach ($importTables as $table) { - if (isset($this->content[$table])) { - foreach ($this->content[$table] as $item) { - $item['save_to_table'] = $table; - $this->_saveItem($item); - $items[] = $item; - } - } - } - - var_dump($items); - return; */ - - foreach ($this->content as $table=>$items) { - if (!empty($items)) { - foreach($items as $item) { - $item['save_to_table'] = $table; - $this->_saveItem($item); - } - } - } - - $this->_finishUp('runWriterBottom'); - cache_save($this->totalSteps, 'CurrentStep', $this->_cacheGroupName, 60 * 10); - - } - - public function runWriterWithBatch() - { - if ($this->getCurrentStep() == 0) { - BackupImportLogger::clearLog(); - } - - BackupImportLogger::setLogInfo('Importing database batch: ' . ($this->getCurrentStep() + 1) . '/' . $this->totalSteps); - - if (empty($this->content)) { - $this->_finishUp('runWriterWithBatchNothingToImport'); - return array("success"=>"Nothing to import."); - } - - //$importTables = array('users', 'categories', 'modules', 'comments', 'content', 'media', 'options', 'calendar', 'cart_orders'); - //$importTables = array('content', 'categories'); - $excludeTables = array(); - - // All db tables - $itemsForSave = array(); - foreach ($this->content as $table=>$items) { - - if (in_array($table, $excludeTables)) { - continue; - } - - if (!empty($items)) { - foreach($items as $item) { - $item['save_to_table'] = $table; - $itemsForSave[] = $item; - } - } - BackupImportLogger::setLogInfo('Save content to table: ' . $table); - } - - if (!empty($itemsForSave)) { - - $totalItemsForSave = sizeof($itemsForSave); - $totalItemsForBatch = ($totalItemsForSave / $this->totalSteps); - $totalItemsForBatch = ceil($totalItemsForBatch); - - if ($totalItemsForBatch > 0) { - $itemsBatch = array_chunk($itemsForSave, $totalItemsForBatch); - } else { - $itemsBatch[0] = $itemsForSave; - } - - if (!isset($itemsBatch[$this->getCurrentStep()])) { - - BackupImportLogger::setLogInfo('No items in batch for current step.'); - - cache_save($this->totalSteps, 'CurrentStep', $this->_cacheGroupName, 60 * 10); - - return array("success"=>"Done! All steps are finished."); - } - - $success = array(); - foreach($itemsBatch[$this->getCurrentStep()] as $item) { - //echo 'Save item' . PHP_EOL; - // BackupImportLogger::setLogInfo('Save content to table: ' . $item['save_to_table']); - $success[] = $this->_saveItem($item); - } - - //echo 'Save cache ... ' .$this->currentStep. PHP_EOL; - - cache_save($this->getCurrentStep() + 1, 'CurrentStep', $this->_cacheGroupName, 60 * 10); - - } - - } - - public function getImportLog() { - - $log = array(); - $log['current_step'] = $this->getCurrentStep(); - $log['total_steps'] = $this->totalSteps; - $log['precentage'] = ($this->getCurrentStep() * 100) / $this->totalSteps; - - if ($this->getCurrentStep() >= $this->totalSteps) { - - $log['done'] = true; - - // Finish up - $this->_finishUp(); - - // Clear log file - BackupImportLogger::clearLog(); - - } - - return $log; - } - - /** - * Clear all cache on framework - */ - private function _finishUp($callFrom = '') { - - // BackupImportLogger::setLogInfo('Call from: ' . $callFrom); - - // cache_delete($this->_cacheGroupName); - - if (function_exists('mw_post_update')) { - mw_post_update(); - } - - BackupImportLogger::setLogInfo('Cleaning up system cache'); - - mw()->cache_manager->clear(); - - BackupImportLogger::setLogInfo('Done!'); - } -} diff --git a/update/src/Microweber/Utils/Backup/Export.php b/update/src/Microweber/Utils/Backup/Export.php deleted file mode 100644 index 339d9337..00000000 --- a/update/src/Microweber/Utils/Backup/Export.php +++ /dev/null @@ -1,361 +0,0 @@ -type = $type; - } - - public function setExportData($data) { - $this->exportData = $data; - } - - public function setExportAllData($exportAllData) { - $this->exportAllData = $exportAllData; - } - - public function setIncludeMedia($includeMedia) { - $this->includeMedia = $includeMedia; - } - - public function exportAsType($data) - { - $exportWithZip = false; - $exportMediaUserFiles = false; - - if (array_key_exists('media', $data)) { - $exportMediaUserFiles = true; - } - - $export = $this->_getExporter($data); - - if (isset($export['files']) && count($export['files']) > 1) { - $exportWithZip = true; - } - - if ($exportWithZip || $exportMediaUserFiles) { - - // Make Zip - $zipExport = new ZipExport(); - - // Add exported files - if (isset($export['files'])) { - foreach ($export['files'] as $file) { - $zipExport->addFile($file); - } - } - - if ($exportMediaUserFiles) { - $zipExport->setExportMedia(true); - } - - if ($this->includeMedia == false) { - $zipExport->setExportMedia(false); - } - - $zipExportReady = $zipExport->start(); - - if (isset($zipExportReady['download']) && !empty($zipExportReady['download'])) { - - // Delete unused ziped files - if (isset($export['files'])) { - foreach ($export['files'] as $file) { - @unlink($file['filepath']); - } - } - - return array( - 'success' => 'Items are exported', - 'export_type' => $this->type, - 'data' => $zipExportReady - ); - } else { - return $zipExportReady; - } - } - - if (isset($export['files'])) { - - $exportSingleFile = false; - - if (count($export['files']) == 1) { - $exportSingleFile = true; - } - - if ($exportSingleFile && isset($export['files']) && !empty($export['files'])) { - return array( - 'success' => 'Items are exported', - 'export_type' => $this->type, - 'data' => $export['files'][0] - ); - } else { - return $export; - } - - } - - } - - public function start() { - - $readyData = $this->_getReadyDataCached(); - - if (empty($readyData)) { - return array("error"=>"Empty content data."); - } - - return $this->exportAsType($readyData); - } - - private function _getExportDataHash() { - return md5(json_encode($this->exportData)); - } - - private function _getReadyDataCached() { - - return $this->_getReadyData(); - - /* $exportDataHash = $this->_getExportDataHash(); - - $zipExport = new ZipExport(); - $currentStep = $zipExport->getCurrentStep(); - - if ($currentStep == 0) { - // This is frist step - Cache::forget($exportDataHash); - return Cache::rememberForever($exportDataHash, function () { - return $this->_getReadyData(); - }); - } else { - BackupExportLogger::setLogInfo('Start exporting selected data...'); - // This is for the next steps from wizard - return Cache::get($exportDataHash); - } */ - } - - private function _getReadyData() { - - $exportTables = new ExportTables(); - - $readyContent = array(); - $tables = $this->_getTablesForExport(); - - foreach($tables as $table) { - - BackupExportLogger::setLogInfo('Exporting table: ' . $table. ''); - - $ids = array(); - - if ($table == 'categories') { - - if (!empty($this->exportData['categoryIds'])) { - $ids = $this->exportData['categoryIds']; - } - - // Get all posts for this category - $contentForCategories = get_content(array( - "categories"=>$ids, - "no_limit"=>true - )); - if (is_array($contentForCategories) && !empty($contentForCategories)) { - $exportTables->addItemsToTable('content', $contentForCategories); - } - } - - if ($table == 'content') { - if (!empty($this->exportData['contentIds'])) { - $ids = $this->exportData['contentIds']; - } - } - - $tableContent = $this->_getTableContent($table, $ids); - - if (!empty($tableContent)) { - - $exportTables->addItemsToTable($table, $tableContent); - - $relations = array(); - foreach($tableContent as $content) { - if (isset($content['rel_type']) && isset($content['rel_id'])) { - $relations[$content['rel_type']][$content['rel_id']] = $content['rel_id']; - } - } - - if (!empty($relations)) { - - BackupExportLogger::setLogInfo('Get relations from table: ' . $table . ''); - - foreach($relations as $relationTable=>$relationIds) { - - BackupExportLogger::setLogInfo('Get data from relations table: ' . $relationTable. ''); - - $relationTableContent = $this->_getTableContent($relationTable, $relationIds); - - $exportTables->addItemsToTable($relationTable, $relationTableContent); - } - } - - } - } - - return $exportTables->getAllTableItems(); - } - - private function _getTableContent($table, $ids = array()) { - - $exportFilter = array(); - $exportFilter['no_limit'] = 1; - $exportFilter['do_not_replace_site_url'] = 1; - - if (!empty($ids)) { - $exportFilter['ids'] = implode(',', $ids); - } - - $tableExists = mw()->database_manager->table_exists($table); - if (!$tableExists) { - return; - } - - $dbGet = db_get($table, $exportFilter); - - return $dbGet; - } - - private function _skipTables() { - - $this->skipTables[] = 'modules'; - $this->skipTables[] = 'elements'; - $this->skipTables[] = 'users'; - $this->skipTables[] = 'log'; - $this->skipTables[] = 'notifications'; - $this->skipTables[] = 'content_revisions_history'; - $this->skipTables[] = 'module_templates'; - $this->skipTables[] = 'stats_users_online'; - $this->skipTables[] = 'stats_browser_agents'; - $this->skipTables[] = 'stats_referrers_paths'; - $this->skipTables[] = 'stats_referrers_domains'; - $this->skipTables[] = 'stats_referrers'; - $this->skipTables[] = 'stats_visits_log'; - $this->skipTables[] = 'stats_urls'; - $this->skipTables[] = 'system_licenses'; - $this->skipTables[] = 'users_oauth'; - $this->skipTables[] = 'sessions'; - $this->skipTables[] = 'global'; - - return $this->skipTables; - } - - private function _prepareSkipTables() { - - $skipTables = $this->_skipTables(); - - // Add table categories if we have category ids - if (!empty($this->exportData['categoryIds'])) { - if (!in_array('categories',$this->exportData['tables'])) { - $this->exportData['tables'][] = 'categories'; - } - } - - // Add table categories if we have content ids - if (!empty($this->exportData['contentIds'])) { - if (!in_array('content', $this->exportData['tables'])) { - $this->exportData['tables'][] = 'content'; - } - } - - if (!empty($this->exportData['tables'])) { - if (in_array('users', $this->exportData['tables'])) { - $keyOfSkipTable = array_search('users', $skipTables); - if ($keyOfSkipTable) { - unset($skipTables[$keyOfSkipTable]); - } - } - } - - return $skipTables; - } - - private function _getTablesForExport() { - - $skipTables = $this->_prepareSkipTables(); - - $tablesList = mw()->database_manager->get_tables_list(); - $tablePrefix = mw()->database_manager->get_prefix(); - - $readyTableList = array(); - foreach ($tablesList as $tableName) { - - if ($tablePrefix) { - $tableName = str_replace_first($tablePrefix, '', $tableName); - } - - if (in_array($tableName, $skipTables)) { - continue; - } - - if (!empty($this->exportData) && $this->exportAllData == false) { - if (isset($this->exportData['tables'])) { - if (!in_array($tableName, $this->exportData['tables'])) { - continue; - } - } - } - - $readyTableList[] = $tableName; - - } - - return $readyTableList; - } - - private function _getExporter($data) { - - $export = false; - - switch ($this->type) { - case 'json': - $export = new JsonExport($data); - break; - - case 'csv': - $export = new CsvExport($data); - break; - - case 'xml': - $export = new XmlExport($data); - break; - - case 'xlsx': - $export = new XlsxExport($data); - break; - - /* case 'zip': - $export = new ZipExport($data); - break; */ - - default: - throw new \Exception('Format not supported for exporting.'); - } - - $export->setType($this->type); - - return $export->start(); - } - -} \ No newline at end of file diff --git a/update/src/Microweber/Utils/Backup/Readers/CsvReader.php b/update/src/Microweber/Utils/Backup/Readers/CsvReader.php new file mode 100644 index 00000000..ad0019ff --- /dev/null +++ b/update/src/Microweber/Utils/Backup/Readers/CsvReader.php @@ -0,0 +1,67 @@ +readCsv($this->file); + + if (isset($csv[0]['id'])) { + return array("content"=>$csv); + } + + return $csv; + } + + public function uniqueColumns(array $columns):array { + $values = []; + + foreach ($columns as $value) { + $count = 0; + $value = $original = trim($value); + + while (in_array($value, $values)) { + $value = $original . '-' . ++$count; + } + + $values[] = $value; + } + + return $values; + } + + public function readCsv(string $file, int $length = 1000, string $delimiter = ','): array + { + $handle = fopen($file, 'r'); + $hashes = []; + $values = []; + $header = null; + $headerUnique = null; + + if (! $handle) { + return $values; + } + + $header = fgetcsv($handle, $length, $delimiter); + + if (! $header) { + return $values; + } + + $headerUnique = $this->uniqueColumns($header); + + while (false !== ($data = fgetcsv($handle, $length, $delimiter))) { + $hash = md5(serialize($data)); + + if (! isset($hashes[$hash])) { + $hashes[$hash] = true; + $values[] = array_combine($headerUnique, $data); + } + } + + fclose($handle); + + return $values; + } +} \ No newline at end of file diff --git a/update/src/Microweber/Utils/Backup/Readers/JsonReader.php b/update/src/Microweber/Utils/Backup/Readers/JsonReader.php new file mode 100644 index 00000000..5cb0875a --- /dev/null +++ b/update/src/Microweber/Utils/Backup/Readers/JsonReader.php @@ -0,0 +1,32 @@ +file); + + foreach ($json as $jsonKey => $jsonValue) { + $readyJson[$jsonKey] = $jsonValue; + } + + if (isset($readyJson[0]['id'])) { + return EncodingFix::decode(array("content"=>$readyJson)); + } + + return EncodingFix::decode($readyJson); + } +} \ No newline at end of file diff --git a/update/src/Microweber/Utils/Backup/Readers/Vendors/WordpressReader.php b/update/src/Microweber/Utils/Backup/Readers/Vendors/WordpressReader.php new file mode 100644 index 00000000..8584eedb --- /dev/null +++ b/update/src/Microweber/Utils/Backup/Readers/Vendors/WordpressReader.php @@ -0,0 +1,114 @@ +load($this->file); + + $i = 0; + $content = array(); + foreach ($xml->getElementsByTagName('item') as $item) { + + $contentType = false; + $title = false; + $contentDecoded = false; + $price = false; + $categories = array(); + $tags = array(); + + if ($item->hasChildNodes() && $item->childNodes->length > 0) { + foreach ($item->childNodes as $itemChildNode) { + if (isset($itemChildNode->nodeName)) { + + if ($itemChildNode->nodeName == 'title') { + $title = $itemChildNode->nodeValue; + } + + if ($itemChildNode->nodeName == 'price') { + $price = $itemChildNode->nodeValue; + } + + if ($itemChildNode->nodeName == 'content:encoded') { + $contentDecoded = $itemChildNode->nodeValue; + } + + if ($itemChildNode->nodeName == 'category') { + + $isTag = false; + if ($itemChildNode->hasAttribute('domain')) { + if ($itemChildNode->getAttribute('domain') == 'tag') { + $isTag = $itemChildNode->nodeValue; + } + } + + if ($isTag) { + if (! in_array($isTag, $tags)) { + $tags[] = $isTag; + } + } else { + if (! in_array($itemChildNode->nodeValue, $categories)) { + $categories[] = $itemChildNode->nodeValue; + } + } + } + + if ($itemChildNode->nodeName == 'wp:post_type') { + $contentType = $itemChildNode->nodeValue; + } + } + } + } + + $readyContent = array(); + $readyContent['id'] = $i; + $readyContent['title'] = $title; + $readyContent['url'] = $urlManager->slug($title); + $readyContent['content'] = $contentDecoded; + $readyContent['content_type'] = 'post'; + $readyContent['subtype'] = 'post'; + $readyContent['is_active'] = 1; + + if (is_array($tags)) { + $tags = implode(', ', $tags); + } + + if (! empty($tags)) { + $readyContent['tags'] = $tags; + } + + if (is_array($categories)) { + $categories = implode(', ', $categories); + } + + if (! empty($categories)) { + $readyContent['categories'] = $categories; + } + + if ($price) { + $readyContent['custom_field_price'] = $price; + $readyContent['content_type'] = 'product'; + } + + if ($contentType) { + $readyContent['content_type'] = $contentType; + } + + $content[] = $readyContent; + $i ++; + } + + return array( + 'content' => $content + ); + } +} \ No newline at end of file diff --git a/update/src/Microweber/Utils/Backup/Readers/XlsxReader.php b/update/src/Microweber/Utils/Backup/Readers/XlsxReader.php new file mode 100644 index 00000000..930c78b3 --- /dev/null +++ b/update/src/Microweber/Utils/Backup/Readers/XlsxReader.php @@ -0,0 +1,47 @@ +_readSpreadsheet(); + + if (isset($data[0]['id'])) { + return array("content"=>$data); + } + + return $data; + } + + private function _readSpreadsheet() + { + $data = array(); + + $rows = SpreadsheetHelper::newSpreadsheet($this->file)->getRows(); + + $dataHeader = $rows[0]; + unset($rows[0]); + + $i=0; + foreach ($rows as $row) { + + $readyRow = array(); + foreach ($row as $rowKey => $rowValue) { + $readyRow[$dataHeader[$rowKey]] = $rowValue; + } + + if (!isset($readyRow['id'])) { + $readyRow['id'] = $i; + } + + $data[] = $readyRow; + $i++; + } + + return $data; + } +} \ No newline at end of file diff --git a/update/src/Microweber/Utils/Backup/Readers/XmlReader.php b/update/src/Microweber/Utils/Backup/Readers/XmlReader.php new file mode 100644 index 00000000..4ec0ead0 --- /dev/null +++ b/update/src/Microweber/Utils/Backup/Readers/XmlReader.php @@ -0,0 +1,26 @@ +file, 'SimpleXMLElement', LIBXML_NOCDATA); + $xml = json_decode(json_encode($xml), true); + + if (isset($xml['channel']['item'])) { + $xml = $this->readWordpress(); + } + + if (isset($xml[0]['id'])) { + return array("content"=>$xml); + } + + return $xml; + } + +} \ No newline at end of file diff --git a/update/src/Microweber/Utils/Backup/Traits/DatabaseRelationWriter.php b/update/src/Microweber/Utils/Backup/Traits/DatabaseRelationWriter.php deleted file mode 100644 index 50572598..00000000 --- a/update/src/Microweber/Utils/Backup/Traits/DatabaseRelationWriter.php +++ /dev/null @@ -1,74 +0,0 @@ -content[$item['rel_type']])) { - foreach ($this->content[$item['rel_type']] as $dataItem) { - - if (isset($item['rel_id']) && isset($dataItem['id']) && $dataItem['id'] == $item['rel_id']) { - return $dataItem; - } - } - } - } - - private function _getRelationDatabase($item) - { - - $dbSelectParams = array(); - $dbSelectParams['no_cache'] = true; - $dbSelectParams['limit'] = 1; - $dbSelectParams['single'] = true; - $dbSelectParams['do_not_replace_site_url'] = 1; - $dbSelectParams['title'] = $item['title']; - $dbSelectParams['created_at'] = $item['created_at']; - - return db_get($item['rel_type'], $dbSelectParams); - } - - private function _fixRelations($savedItem) - { - $relation = $this->_getRelation($savedItem['item']); - if (empty($relation)) { - //echo 'No relation in this item.' . PHP_EOL; - return; - } - - $relation['rel_type'] = $savedItem['item']['rel_type']; - $relation['save_to_table'] = $savedItem['item']['rel_type']; - - if (! empty($relation) && isset($relation['title'])) { - - $relationDatabase = $this->_getRelationDatabase($relation); - if (empty($relationDatabase)) { - // Save relation data if not exists - $this->_saveItemDatabase($relation); - // Get new relation - $relationDatabase = $this->_getRelationDatabase($relation); - } - - if (!empty($relationDatabase)) { - - $savedItem['item']['rel_id'] = $relationDatabase['id']; - $savedItem['item']['id'] = $savedItem['itemIdDatabase']; - - DatabaseSave::save($savedItem['item']['save_to_table'], $savedItem['item']); - - // echo 'Relation is fixed.' . PHP_EOL; - - } - } - } -} diff --git a/update/src/Microweber/Utils/BackupV2.php b/update/src/Microweber/Utils/BackupV2.php deleted file mode 100644 index 8ac0cd4e..00000000 --- a/update/src/Microweber/Utils/BackupV2.php +++ /dev/null @@ -1,344 +0,0 @@ -app = $app; - } else { - $this->app = mw(); - } - - if (! $this->manager) { - $this->manager = new BackupManager(); - } - } - - public function get() - { - if (! is_admin()) { - error('must be admin'); - } - - $backupLocation = $this->manager->getBackupLocation(); - $backupFiles = glob("$backupLocation{*.sql,*.zip,*.json,*.xml,*.xlsx,*.csv}", GLOB_BRACE); - - usort($backupFiles, function ($a, $b) { - return filemtime($a) < filemtime($b); - }); - - $backups = array(); - if (! empty($backupFiles)) { - foreach ($backupFiles as $file) { - - if (is_file($file)) { - $mtime = filemtime($file); - - $backup = array(); - $backup['filename'] = basename($file); - $backup['date'] = date('F d Y', $mtime); - $backup['time'] = str_replace('_', ':', date('H:i:s', $mtime)); - $backup['size'] = filesize($file); - - $backups[] = $backup; - } - } - } - - return $backups; - } - - public function upload($query) - { - only_admin_access(); - - if (! isset($query['src'])) { - return array( - 'error' => 'You have not provided src to the file.' - ); - } - - $checkFile = url2dir(trim($query['src'])); - - $backupLocation = $this->manager->getBackupLocation(); - - if (is_file($checkFile)) { - $file = basename($checkFile); - - if (copy($checkFile, $backupLocation . $file)) { - @unlink($checkFile); - - return array( - 'success' => "$file was moved!" - ); - } else { - return array( - 'error' => 'Error moving uploaded file!' - ); - } - } else { - return array( - 'error' => 'Uploaded file is not found!' - ); - } - } - - public function download($query) - { - if (! is_admin()) { - mw_error('must be admin'); - } - - if (isset($query['id'])) { - $fileId = $query['id']; - } elseif (isset($_GET['filename'])) { - $fileId = $query['filename']; - } elseif (isset($_GET['file'])) { - $fileId = $query['file']; - } - $fileId = str_replace('..', '', $fileId); - - // Check if the file has needed args - if (! $fileId) { - return array( - 'error' => 'You have not provided filename to download.' - ); - } - - $backupLocation = $this->manager->getBackupLocation(); - - // Generate filename and set error variables - $filename = $backupLocation . $fileId; - $filename = str_replace('..', '', $filename); - if (! is_file($filename)) { - return array( - 'error' => 'You have not provided a existing filename to download.' - ); - } - - // Check if the file exist. - if (file_exists($filename)) { - - // Add headers - header('Cache-Control: public'); - header('Content-Description: File Transfer'); - header('Content-Disposition: attachment; filename=' . basename($filename)); - header('Content-Length: ' . filesize($filename)); - - // Read file - $this->_readfileChunked($filename); - } else { - return array( - 'error' => 'File does not exist.' - ); - } - } - - public function import($query) { - - only_admin_access(); - - $fileId = null; - if (isset($query['id'])) { - $fileId = $query['id']; - } elseif (isset($_GET['filename'])) { - $fileId = $query['filename']; - } elseif (isset($_GET['file'])) { - $fileId = $query['file']; - } - - if (isset($query['overwrite_by_id']) && $query['overwrite_by_id'] == 'true') { - $this->manager->setImportOvewriteById(true); - } - - if (!$fileId) { - return array('error' => 'You have not provided a file to import.'); - } - - $fileId = str_replace('..', '', $fileId); - - $backupLocation = $this->manager->getBackupLocation(); - $filePath = $backupLocation . $fileId; - - if (!is_file($filePath)) { - return array('error' => 'You have not provided a existing backup to import.'); - } else { - - if (isset($query['debug'])) { - $this->manager->setLogger(new BackupV2Logger()); - } - - $this->manager->setImportFile($filePath); - $importLog = $this->manager->startImport(); - - return json_encode($importLog, JSON_PRETTY_PRINT); - } - - return $query; - - } - - public function export($query) { - - $tables = array(); - $categoriesIds = array(); - $contentIds = array(); - - if (isset($query['items'])) { - foreach(explode(',', $query['items']) as $item) { - if (!empty($item)) { - $tables[] = $item; - } - } - } - - $manager = new BackupManager(); - $manager->setExportData('tables', $tables); - - if (isset($query['format'])) { - $manager->setExportType($query['format']); - } - - if (isset($query['all'])) { - if (isset($query['include_media']) && $query['include_media'] == 'true') { - $manager->setExportIncludeMedia(true); - } - $manager->setExportAllData(true); - } - - if (isset($query['debug'])) { - $manager->setLogger(new BackupV2Logger()); - } - - if (isset($query['content_ids']) && !empty($query['content_ids'])) { - $manager->setExportData('contentIds', $query['content_ids']); - } - - if (isset($query['categories_ids']) && !empty($query['categories_ids'])) { - $manager->setExportData('categoryIds', $query['categories_ids']); - } - - if (is_ajax()) { - header('Content-Type: application/json'); - } - - return $manager->startExport(); - - } - - public function delete($query) - { - if (! is_admin()) { - error('must be admin'); - } - - // Get the provided arg - $fileId = $query['id']; - - // Check if the file has needed args - if (! $fileId) { - return array( - 'error' => 'You have not provided filename to be deleted.' - ); - } - - $backupLocation = $this->manager->getBackupLocation(); - $filename = $backupLocation . $fileId; - - $fileId = str_replace('..', '', $fileId); - $filename = str_replace('..', '', $filename); - - if (is_file($filename)) { - unlink($filename); - return array( - 'success' => "$fileId was deleted!" - ); - } else { - $filename = $backupLocation . $fileId . '.sql'; - if (is_file($filename)) { - unlink($filename); - - return array( - 'success' => "$fileId was deleted!" - ); - } - } - } - - private function _readfileChunked($filename, $retbytes = true) - { - $filename = str_replace('..', '', $filename); - - $chunk_size = 1024 * 1024; - $buffer = ''; - $cnt = 0; - $handle = fopen($filename, 'rb'); - if ($handle === false) { - return false; - } - - while (! feof($handle)) { - $buffer = fread($handle, $chunk_size); - echo $buffer; - if (ob_get_level() > 0) { - ob_flush(); - flush(); - } - if ($retbytes) { - $cnt += strlen($buffer); - } - } - $status = fclose($handle); - if ($retbytes && $status) { - return $cnt; // return num. bytes delivered like readfile() does. - } - - return $status; - } -} - -class BackupV2Logger { - - public function log($log) { - echo $log . '
'; - } - -} - - diff --git a/update/src/Microweber/Utils/Format.php b/update/src/Microweber/Utils/Format.php new file mode 100644 index 00000000..15c43ad2 --- /dev/null +++ b/update/src/Microweber/Utils/Format.php @@ -0,0 +1,1129 @@ +. + * + * @param array $arr + * + * @return string + * + * @category Arrays + */ + public function array_to_ul($arr, $ul_tag = 'ul', $li_tag = 'li') + { + $has_items = false; + $retStr = '<' . $ul_tag . '>'; + if (is_array($arr)) { + foreach ($arr as $key => $val) { + if (!is_array($key) and $val) { + $key = str_replace('_', ' ', $key); + $key = ucwords($key); + + if (is_array($val)) { + if (!empty($val)) { + $has_items = true; + if (is_numeric($key)) { + $retStr .= '<' . $ul_tag . '>'; + $retStr .= '<' . $li_tag . '>' . $this->array_to_ul($val, $ul_tag, $li_tag) . ''; + $retStr .= ''; + } else { + $retStr .= '<' . $li_tag . '>' . $key . ': ' . $this->array_to_ul($val, $ul_tag, $li_tag) . ''; + } + } + } else { + if (is_string($val) != false and trim($val) != '') { + $has_items = true; + $print_key = $key; + if (is_numeric($key)) { + $retStr .= '<' . $li_tag . '> ' . $val . ''; + } else { + $retStr .= '<' . $li_tag . '>' . $print_key . ': ' . $val . ''; + + } + + } + } + } else { + if (!empty($val)) { + $has_items = true; + $retStr .= $this->array_to_ul($val, $ul_tag, $li_tag); + } + } + } + } + $retStr .= ''; + if ($has_items) { + return $retStr; + } + } + + function array_to_table($array, $table = true) + { + $out = ''; + foreach ($array as $key => $value) { + if (is_array($value)) { + if (!isset($tableHeader)) { + $tableHeader = + '' . + implode('', array_keys($value)) . + ''; + } + array_keys($value); + $out .= ''; + $out .= $this->array_to_table($value, false); + $out .= ''; + } else { + $out .= "$value"; + } + } + + if ($table) { + return '' . $tableHeader . $out . '
'; + } else { + return $out; + } + } + + + /** + * Formats a date by given pattern. + * + * @param $date Your date + * @param bool|string $date_format The format for example 'Y-m-d' + * + * @return bool|string $date The formatted date + * + * @category Date + */ + public function date($date, $date_format = false) + { + if ($date_format == false) { + $date_format = mw()->option_manager->get('date_format', 'website'); + if ($date_format == false) { + $date_format = 'Y-m-d H:i:s'; + } + } + $date = date($date_format, strtotime($date)); + + return $date; + } + + + /** + * Find Date in a String + * + * @author Etienne Tremel + * @license http://creativecommons.org/licenses/by/3.0/ CC by 3.0 + * @link http://www.etiennetremel.net + * @version 0.2.0 + * + * + * + * @param string find_date( ' some text 01/01/2012 some text' ) or find_date( ' some text October 5th 86 some text' ) + * @return mixed false if no date found else array: array( 'day' => 01, 'month' => 01, 'year' => 2012 ) + */ + function find_date($string) + { + $shortenize = function ($string) { + return substr($string, 0, 3); + }; + // Define month name: + $month_names = array( + "january", + "february", + "march", + "april", + "may", + "june", + "july", + "august", + "september", + "october", + "november", + "december" + ); + $short_month_names = array_map($shortenize, $month_names); + // Define day name + $day_names = array( + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ); + $short_day_names = array_map($shortenize, $day_names); + // Define ordinal number + $ordinal_number = ['st', 'nd', 'rd', 'th']; + $day = ""; + $month = ""; + $year = ""; + // Match dates: 01/01/2012 or 30-12-11 or 1 2 1985 + preg_match('/([0-9]?[0-9])[\.\-\/ ]+([0-1]?[0-9])[\.\-\/ ]+([0-9]{2,4})/', $string, $matches); + if ($matches) { + if ($matches[1]) + $day = $matches[1]; + if ($matches[2]) + $month = $matches[2]; + if ($matches[3]) + $year = $matches[3]; + } + // Match dates: Sunday 1st March 2015; Sunday, 1 March 2015; Sun 1 Mar 2015; Sun-1-March-2015 + preg_match('/(?:(?:' . implode('|', $day_names) . '|' . implode('|', $short_day_names) . ')[ ,\-_\/]*)?([0-9]?[0-9])[ ,\-_\/]*(?:' . implode('|', $ordinal_number) . ')?[ ,\-_\/]*(' . implode('|', $month_names) . '|' . implode('|', $short_month_names) . ')[ ,\-_\/]+([0-9]{4})/i', $string, $matches); + if ($matches) { + if (empty($day) && $matches[1]) + $day = $matches[1]; + if (empty($month) && $matches[2]) { + $month = array_search(strtolower($matches[2]), $short_month_names); + if (!$month) + $month = array_search(strtolower($matches[2]), $month_names); + $month = $month + 1; + } + if (empty($year) && $matches[3]) + $year = $matches[3]; + } + // Match dates: March 1st 2015; March 1 2015; March-1st-2015 + preg_match('/(' . implode('|', $month_names) . '|' . implode('|', $short_month_names) . ')[ ,\-_\/]*([0-9]?[0-9])[ ,\-_\/]*(?:' . implode('|', $ordinal_number) . ')?[ ,\-_\/]+([0-9]{4})/i', $string, $matches); + if ($matches) { + if (empty($month) && $matches[1]) { + $month = array_search(strtolower($matches[1]), $short_month_names); + if (!$month) + $month = array_search(strtolower($matches[1]), $month_names); + $month = $month + 1; + } + if (empty($day) && $matches[2]) + $day = $matches[2]; + if (empty($year) && $matches[3]) + $year = $matches[3]; + } + // Match month name: + if (empty($month)) { + preg_match('/(' . implode('|', $month_names) . ')/i', $string, $matches_month_word); + if ($matches_month_word && $matches_month_word[1]) + $month = array_search(strtolower($matches_month_word[1]), $month_names); + // Match short month names + if (empty($month)) { + preg_match('/(' . implode('|', $short_month_names) . ')/i', $string, $matches_month_word); + if ($matches_month_word && $matches_month_word[1]) + $month = array_search(strtolower($matches_month_word[1]), $short_month_names); + } + $month = $month + 1; + } + // Match 5th 1st day: + if (empty($day)) { + preg_match('/([0-9]?[0-9])(' . implode('|', $ordinal_number) . ')/', $string, $matches_day); + if ($matches_day && $matches_day[1]) + $day = $matches_day[1]; + } + // Match Year if not already setted: + if (empty($year)) { + preg_match('/[0-9]{4}/', $string, $matches_year); + if ($matches_year && $matches_year[0]) + $year = $matches_year[0]; + } + if (!empty ($day) && !empty ($month) && empty($year)) { + preg_match('/[0-9]{2}/', $string, $matches_year); + if ($matches_year && $matches_year[0]) + $year = $matches_year[0]; + } + // Day leading 0 + if (1 == strlen($day)) + $day = '0' . $day; + // Month leading 0 + if (1 == strlen($month)) + $month = '0' . $month; + // Check year: + if (2 == strlen($year) && $year > 20) + $year = '19' . $year; + else if (2 == strlen($year) && $year < 20) + $year = '20' . $year; + $date = array( + 'year' => $year, + 'month' => $month, + 'day' => $day + ); + // Return false if nothing found: + if (empty($year) && empty($month) && empty($day)) + return false; + else + return $date; + } + + function get_date_format() + { + $date_format_set = get_option('date_format', 'website'); + $date_format_default = 'm/d/Y h:i a'; + $date_format = ''; + if ($date_format_set && (strstr($date_format_set, '/') || strstr($date_format_set, '-'))) { + $date_format = str_replace('-', '/', $date_format_set); + if (strstr($date_format, 'd/m')) { + $date_format = 'd/m/Y h:i a'; + } else { + $date_format = $date_format_default; + } + } else { + $date_format = $date_format_default; + } + return $date_format; + } + + function date_system_format($db_date) + { + $date_format = $this->get_date_format(); + $date = date_create($db_date); + return date_format($date, $date_format); + } + + function get_date_db_format($str_date) + { + $date_format_set = get_option('date_format', 'website'); + $date_db_format = 'Y-m-d H:i:s'; + $date_format_default = 'm/d/Y h:i a'; + $str_db_date = ''; + if (strstr($str_date, '/') || strstr($str_date, '-') || strstr($str_date, '.')) { + $str_date = str_replace('-', '/', $str_date); + $str_date = str_replace('.', '/', $str_date); + } + if ($date_format_set) { + $date = $this->find_date($str_date); + $str_db_date = $date['year'] . '-' . $date['month'] . '-' . $date['day']; + } elseif ($dateTime = \DateTime::createFromFormat($date_format_default, $str_date)) { + $str_db_date = $dateTime->format($date_db_format); + } else { + $str_db_date = '0000-00-00 00:00:00'; + } + return $str_db_date; + } + + + public function array_trim($variable) + { + $result = array_map('trim', $variable); + + return $result; + } + + public function add_slashes_recursive($variable) + { + if (is_string($variable)) { + return addslashes($variable); + } elseif (is_array($variable)) { + foreach ($variable as $i => $value) { + $variable[$i] = $this->add_slashes_recursive($value); + } + } + + return $variable; + } + + public function strip_slashes_recursive($variable) + { + if (is_string($variable)) { + return stripslashes($variable); + } + if (is_array($variable)) { + foreach ($variable as $i => $value) { + $variable[$i] = $this->strip_slashes_recursive($value); + } + } + + return $variable; + } + + public function auto_link($text) + { + return $this->autolink($text); + } + + //http://stackoverflow.com/a/1971451/731166 + + public function autolink($text) + { + $pattern = '#\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))#'; + + return preg_replace_callback($pattern, array($this, 'auto_link_text_callback'), $text); + } + + public function auto_link_text_callback($matches) + { + $max_url_length = 150; + $max_depth_if_over_length = 2; + $ellipsis = '…'; + + $url_full = $matches[0]; + $url_short = ''; + + if (strlen($url_full) > $max_url_length) { + $parts = parse_url($url_full); + + $url_short = $parts['scheme'] . '://' . preg_replace('/^www\./', '', $parts['host']) . '/'; + + $path_components = explode('/', trim($parts['path'], '/')); + foreach ($path_components as $dir) { + $url_string_components[] = $dir . '/'; + } + + if (!empty($parts['query'])) { + $url_string_components[] = '?' . $parts['query']; + } + + if (!empty($parts['fragment'])) { + $url_string_components[] = '#' . $parts['fragment']; + } + + for ($k = 0; $k < count($url_string_components); ++$k) { + $curr_component = $url_string_components[$k]; + if ($k >= $max_depth_if_over_length || strlen($url_short) + strlen($curr_component) > $max_url_length) { + if ($k == 0 && strlen($url_short) < $max_url_length) { + // Always show a portion of first directory + $url_short .= substr($curr_component, 0, $max_url_length - strlen($url_short)); + } + $url_short .= $ellipsis; + break; + } + $url_short .= $curr_component; + } + } else { + $url_short = $url_full; + } + + // return "$url_short"; + + return "$url_short"; + } + + public function human_filesize($bytes, $dec = 2) + { + $size = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); + $factor = floor((strlen($bytes) - 1) / 3); + + return sprintf("%.{$dec}f", $bytes / pow(1024, $factor)) . @$size[$factor]; + } + + public function ago($time, $full = false) + { + + $now = new \DateTime; + + if (is_int($time)) { + $date = $time; + $ago = new \DateTime("@" . $time); + } else { + // $date = strtotime($time); + $ago = new \DateTime($time); + } + + + $diff = $now->diff($ago); + + $diff->w = floor($diff->d / 7); + $diff->d -= $diff->w * 7; + + $string = array( + 'y' => 'year', + 'm' => 'month', + 'w' => 'week', + 'd' => 'day', + 'h' => 'hour', + 'i' => 'minute', + 's' => 'second', + ); + foreach ($string as $k => &$v) { + if ($diff->$k) { + $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : ''); + } else { + unset($string[$k]); + } + } + + if (!$full) $string = array_slice($string, 0, 1); + return $string ? implode(', ', $string) . ' ago' : 'just now'; + } + + public function clean_xss($var, $do_not_strip_tags = false, $evil = null, $method = 'process') + { + static $sec; + + if ($sec == false) { + $sec = new \Microweber\Utils\lib\XSSSecurity($evil); + } + + if (is_array($var)) { + foreach ($var as $key => $val) { + $output[$key] = $this->clean_xss($val, $do_not_strip_tags, $evil, $method); + } + } else { + $var = $sec->clean($var); + $var = str_ireplace('', '', $var); + + $var = str_replace('', '?>', $var); + /* $var = str_ireplace(' $val) { + $output[$var] = $this->clean_scripts($val); + } + } elseif (is_string($input)) { + $search = array( + '@]*?>.*?@si', // Strip out javascript + + '@@', // Strip multi-line comments + ); + $output = preg_replace($search, '', $input); + } else { + return $input; + } + + return $output; + } + + public function clean_html($var, $do_not_strip_tags = false) + { + if (is_array($var)) { + foreach ($var as $key => $val) { + $output[$key] = $this->clean_html($val, $do_not_strip_tags); + } + } else { + $path = mw_cache_path() . 'html_purifier'; + + $var = $this->strip_unsafe($var); + $config = \HTMLPurifier_Config::createDefault(); + $config->set('Cache.SerializerPath', $path); + $purifier = new \HTMLPurifier($config); + +// Absolute path with no trailing slash to store serialized definitions in. +// Default is within the HTML Purifier library inside DefinitionCache/Serializer. This path must be writable by the webserver. + + if (!is_dir($path)) { + mkdir_recursive($path); + } + + + //$purifier = new \HTMLPurifier(); + //Cache.SerializerPath + $var = $purifier->purify($var); + // $var = htmlentities($var, ENT_QUOTES, 'UTF-8'); + $var = str_ireplace('', '', $var); + $var = str_replace('', '?>', $var); + // $var = str_ireplace(' $val) { + $string[$key] = $this->strip_unsafe($val, $img); + } + + return $string; + } else { + + // Unsafe HTML tags that members may abuse + $unsafe = array( + '//is', + '//is', + //'//is', + '//is', + '//is', + '//is', + '//is', + '//is', + '//is', + '//is', + '//is', + '//is', + '//is', + '//is', + '//is', + '//is', + '/<\/body>/is', + '//is', + '/<\/head>/is', + '/onload="(.*?)"/is', + '/onunload="(.*?)"/is', + '/onafterprint="(.*?)"/is', + '/onbeforeprint="(.*?)"/is', + '/onbeforeunload="(.*?)"/is', + '/onerrorNew="(.*?)"/is', + '/onhaschange="(.*?)"/is', + '/onoffline="(.*?)"/is', + '/ononline="(.*?)"/is', + '/onpagehide="(.*?)"/is', + '/onpageshow="(.*?)"/is', + '/onpopstate="(.*?)"/is', + '/onredo="(.*?)"/is', + '/onresize="(.*?)"/is', + '/onstorage="(.*?)"/is', + '/onundo="(.*?)"/is', + '/onunload="(.*?)"/is', + '/onblur="(.*?)"/is', + '/onchange="(.*?)"/is', + '/oncontextmenu="(.*?)"/is', + '/onfocus="(.*?)"/is', + '/onformchange="(.*?)"/is', + '/onforminput="(.*?)"/is', + '/oninput="(.*?)"/is', + '/oninvalid="(.*?)"/is', + '/onreset="(.*?)"/is', + '/onselect="(.*?)"/is', + '/onblur="(.*?)"/is', + '/onsubmit="(.*?)"/is', + '/onkeydown="(.*?)"/is', + '/onkeypress="(.*?)"/is', + '/onkeyup="(.*?)"/is', + '/onclick="(.*?)"/is', + '/ondblclick="(.*?)"/is', + '/ondrag="(.*?)"/is', + '/ondragend="(.*?)"/is', + '/ondragenter="(.*?)"/is', + '/ondragleave="(.*?)"/is', + '/ondragover="(.*?)"/is', + '/ondragstart="(.*?)"/is', + '/ondrop="(.*?)"/is', + '/onmousedown="(.*?)"/is', + '/onmousemove="(.*?)"/is', + '/onmouseout="(.*?)"/is', + '/onmouseover="(.*?)"/is', + '/onmousewheel="(.*?)"/is', + '/onmouseup="(.*?)"/is', + '/ondragleave="(.*?)"/is', + '/onabort="(.*?)"/is', + '/oncanplay="(.*?)"/is', + '/oncanplaythrough="(.*?)"/is', + '/ondurationchange="(.*?)"/is', + '/onended="(.*?)"/is', + '/onerror="(.*?)"/is', + '/onloadedmetadata="(.*?)"/is', + '/onloadstart="(.*?)"/is', + '/onpause="(.*?)"/is', + '/onplay="(.*?)"/is', + '/onabort="(.*?)"/is', + '/onplaying="(.*?)"/is', + '/onprogress="(.*?)"/is', + '/onratechange="(.*?)"/is', + '/onreadystatechange="(.*?)"/is', + '/onseeked="(.*?)"/is', + '/onseeking="(.*?)"/is', + '/onstalled="(.*?)"/is', + '/onsuspend="(.*?)"/is', + '/ontimeupdate="(.*?)"/is', + '/onvolumechange="(.*?)"/is', + '/onwaiting="(.*?)"/is', + '/href="javascript:[^"]+"/', + '/href=javascript:/is', + '//is', + '//is', + '//is',); + + // Remove graphic too if the user wants + if ($img == true) { + $unsafe[] = '//is'; + } + // Remove these tags and all parameters within them + $string = preg_replace($unsafe, '', $string); + + return $string; + } + } + + public function string_between($string, $start, $end) + { + $string = ' ' . $string; + $ini = strpos($string, $start); + if ($ini == 0) { + return ''; + } + $ini += strlen($start); + $len = strpos($string, $end, $ini) - $ini; + + return substr($string, $ini, $len); + } + + public function replace_once($needle, $replace, $haystack) + { + $pos = strpos($haystack, $needle); + if ($pos === false) { + return $haystack; + } + + return substr_replace($haystack, $replace, $pos, strlen($needle)); + } + + public function prep_url($str = '') + { + if ($str === 'http://' or $str === 'https://' or $str === '') { + return ''; + } + $url = parse_url($str); + if (!$url or !isset($url['scheme'])) { + if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') { + return 'https://' . $str; + } else { + return 'http://' . $str; + } + } + + return $str; + } + + public function percent($num_amount, $num_total, $format = true) + { + if ($num_amount == 0 or $num_total == 0) { + return 0; + } + $count1 = $num_amount / $num_total; + $count2 = $count1 * 100; + + if (!$format) { + return $count2; + } + $count = number_format($count2, 0); + + return $count; + } + + + public function amount_to_float($money) + { + $cleanString = preg_replace('/([^0-9\.,])/i', '', $money); + $onlyNumbersString = preg_replace('/([^0-9])/i', '', $money); + + $separatorsCountToBeErased = strlen($cleanString) - strlen($onlyNumbersString) - 1; + + $stringWithCommaOrDot = preg_replace('/([,\.])/', '', $cleanString, $separatorsCountToBeErased); + $removedThousendSeparator = preg_replace('/(\.|,)(?=[0-9]{3,}$)/', '', $stringWithCommaOrDot); + + return (float)str_replace(',', '.', $removedThousendSeparator); + } + + /** + * Encodes a variable with json_encode and base64_encode. + * + * @param mixed $var Your $var + * + * @return string Your encoded $var + * + * @category Strings + * + * @see $this->base64_to_array() + */ + public function array_to_base64($var) + { + if ($var == '') { + return ''; + } + + $var = json_encode($var); + $var = base64_encode($var); + + return $var; + } + + /** + * Decodes a variable with base64_decode and json_decode. + * + * @param string $var Your var that has been put trough encode_var + * + * @return string|array Your encoded $var + * + * @category Strings + * + * @see $this->array_to_base64() + */ + public function base64_to_array($var) + { + if (is_array($var)) { + return $var; + } + if ($var == '') { + return false; + } + + $var = base64_decode($var); + try { + $var = @json_decode($var, 1); + } catch (Exception $exc) { + return false; + } + + return $var; + } + + public function titlelize($string) + { + $slug = preg_replace('/-/', ' ', $string); + $slug = preg_replace('/_/', ' ', $slug); + $slug = ucwords($slug); + + return $slug; + } + + public function array_values($ary) + { + $lst = array(); + foreach (array_keys($ary) as $k) { + $v = $ary[$k]; + if (is_scalar($v)) { + $lst[] = $v; + } elseif (is_array($v)) { + $lst = array_merge($lst, $this->array_values($v)); + } + } + + return $lst; + } + + public function lipsum($number_of_characters = false) + { + if ($number_of_characters == false) { + $number_of_characters = 100; + } + + $lipsum = array( + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc quis justo et sapien varius gravida. Fusce porttitor consectetur risus ut tincidunt. Maecenas pellentesque nulla sodales enim consectetur commodo. Aliquam non dui leo, adipiscing posuere metus. Duis adipiscing auctor lorem ut pulvinar. Donec non magna massa, feugiat commodo felis. Donec ut nibh elit. Nulla pellentesque nulla diam, vitae consectetur neque.', + 'Etiam sed lorem augue. Vivamus varius tristique bibendum. Phasellus vitae tempor augue. Maecenas consequat commodo euismod. Aenean a lorem nec leo dignissim ultricies sed quis nisi. Fusce pellentesque tellus lectus, eu varius felis. Mauris lacinia facilisis metus, sed sollicitudin quam faucibus id.', + 'Donec ultrices cursus erat, non pulvinar lectus consectetur eu. Proin sodales risus a ante aliquet vel cursus justo viverra. Duis vel leo felis. Praesent hendrerit, sem vitae scelerisque blandit, enim neque pulvinar mi, vel lobortis elit dui vel dui. Donec ac sem sed neque consequat egestas. Curabitur pellentesque consequat ante, quis laoreet enim gravida eu. Donec varius, nisi non bibendum pellentesque, felis metus pretium ipsum, non vulputate eros magna ac sapien. Donec tincidunt porta tortor, et ornare enim facilisis vitae. Nulla facilisi. Cras ut nisi ac dolor lacinia tempus at sed eros. Integer vehicula arcu in augue adipiscing accumsan. Morbi placerat consectetur sapien sed gravida. Sed fringilla elit nisl, nec molestie felis. Nulla aliquet diam vitae diam iaculis porttitor.', + 'Integer eget tortor nulla, non dapibus erat. Sed ultrices consectetur quam at scelerisque. Nullam varius hendrerit nisl, ac cursus mi bibendum eu. Phasellus varius fermentum massa, sit amet ornare quam malesuada in. Quisque ac massa sem. Nulla eu erat metus, non tincidunt nibh. Nam consequat interdum nulla, at congue libero tincidunt eget. Sed cursus nulla eu felis faucibus porta. Nam sed lacus eros, nec pellentesque lorem. Sed dapibus, sapien mattis sollicitudin bibendum, libero augue dignissim felis, eget elementum felis nulla in velit. Donec varius, lectus non suscipit sollicitudin, urna est hendrerit nulla, vel vehicula arcu sem volutpat sapien. Ut nisi ipsum, accumsan vestibulum pulvinar eu, sodales id lacus. Nulla iaculis eros sit amet lectus tincidunt mattis. Ut eu nisl sit amet eros vestibulum imperdiet ut vel lorem. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.', + 'In hac habitasse platea dictumst. Aenean vehicula auctor eros non tincidunt. Donec tempor arcu ac diam sagittis mattis. Aenean eget augue nulla, non volutpat lorem. Praesent ut cursus magna. Mauris consequat suscipit nisi. Integer eu venenatis ligula. Maecenas leo risus, lacinia et auctor aliquet, aliquet in mi.', + 'Aliquam tincidunt dapibus augue, et vulputate dui aliquet et. Praesent pharetra mauris eu justo dignissim venenatis ornare nec nisl. Aliquam justo quam, varius eget congue vel, congue eget est. Ut nulla felis, luctus imperdiet molestie et, commodo vel nulla. Morbi at nulla dapibus enim bibendum aliquam non et ipsum. Phasellus sed cursus justo. Praesent sit amet metus lorem. Vivamus ut lorem dapibus turpis rhoncus pharetra. Donec in lacus sagittis nisl tempor sagittis quis a orci. Nam volutpat condimentum ante ac facilisis. Cras sem magna, vulputate id consequat rhoncus, suscipit non justo. In fringilla dignissim cursus.', + 'Nunc fringilla orci tellus, et euismod lorem. Ut quis turpis lacus, ac elementum lorem. Praesent fringilla, metus nec tincidunt consequat, sem sapien hendrerit nisi, nec feugiat libero risus a nisl. Duis arcu magna, ullamcorper et semper vitae, tincidunt nec libero. Etiam sed lacus ante. In imperdiet arcu eget elit commodo ut malesuada sem congue. Quisque porttitor porta sagittis. Nam porta elit sit amet mauris fermentum eu feugiat ipsum pretium. Maecenas sollicitudin aliquam eros, ut pretium nunc faucibus quis. Mauris id metus vitae libero viverra adipiscing quis ut nulla. Pellentesque posuere facilisis nibh, facilisis vehicula felis facilisis nec.', + 'Etiam pharetra libero nec erat pellentesque laoreet. Sed eu libero nec nisl vehicula convallis nec non orci. Aenean tristique varius nisl. Cras vel urna eget enim placerat vehicula quis sed velit. Quisque lacinia sagittis lectus eget sagittis. Pellentesque cursus suscipit massa vel ultricies. Quisque hendrerit lobortis elit interdum feugiat. Sed posuere volutpat erat vel lobortis. Vivamus laoreet mattis varius. Fusce tincidunt accumsan lorem, in viverra lectus dictum eu. Integer venenatis tristique dolor, ac porta lacus pellentesque pharetra. Suspendisse potenti. Ut dolor dolor, sollicitudin in auctor nec, facilisis non justo. Mauris cursus euismod gravida. In at orci in sapien laoreet euismod.', + 'Mauris purus urna, vulputate in malesuada ac, varius eget ante. Integer ultricies lacus vel magna dictum sit amet euismod enim dictum. Aliquam iaculis, ipsum at tempor bibendum, dolor tortor eleifend elit, sed fermentum magna nibh a ligula. Phasellus ipsum nisi, porta quis pellentesque sit amet, dignissim vel felis. Quisque condimentum molestie ligula, ac auctor turpis facilisis ac. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent molestie leo velit. Sed sit amet turpis massa. Donec in tortor quis metus cursus iaculis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. In hac habitasse platea dictumst. Proin leo nisl, faucibus non sollicitudin et, commodo id diam. Aliquam adipiscing, lorem a fringilla blandit, felis dui tristique ligula, vitae eleifend orci diam eget quam. Aliquam vulputate gravida leo eget eleifend. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;', + ); + $rand = rand(0, (sizeof($lipsum) - 1)); + + return $this->limit($lipsum[$rand], $number_of_characters, ''); + } + + /** + * Limits a string to a number of characters. + * + * @param $str + * @param int $n + * @param string $end_char + * + * @return string + * + * @category Strings + */ + public function limit($str, $n = 500, $end_char = '…') + { + if (strlen($str) < $n) { + return $str; + } + $str = strip_tags($str); + $str = preg_replace("/\s+/", ' ', str_replace(array("\r\n", "\r", "\n"), ' ', $str)); + if (strlen($str) <= $n) { + return $str; + } + $out = ''; + foreach (explode(' ', trim($str)) as $val) { + $out .= $val . ' '; + if (strlen($out) >= $n) { + $out = trim($out); + + return (strlen($out) == strlen($str)) ? $out : $out . $end_char; + } + } + } + + public function random_color() + { + return '#' . sprintf('%02X%02X%02X', mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); + } + + public function lnotif($text, $class = 'success') + { + $editmode_sess = mw()->user_manager->session_get('editmode'); + + + if (defined('MW_BACKEND') and MW_BACKEND != false) { + return false; + } + if (defined('IN_EDIT') and IN_EDIT != false) { + $editmode_sess = true; + } + // if ($editmode_sess == false) { + if (defined('IN_EDITOR_TOOLS') and IN_EDITOR_TOOLS != false) { + $editmode_sess = true; + } + //} + + if ($editmode_sess == true) { + return $this->notif($text, $class); + } + } + + public function notif($text, $class = 'success') + { + if ($class === true) { + $to_print = '
'; + $to_print = $to_print . ($text) . '
'; + } else { + $to_print = '
'; + $to_print = $to_print . $text . '
'; + } + + return $to_print; + } + + public function no_dashes($string) + { + $slug = preg_replace('/-/', ' ', $string); + $slug = preg_replace('/_/', ' ', $slug); + + return $slug; + } + + public function unvar_dump($str) + { + if (strpos($str, "\n") === false) { + //Add new lines: + $regex = array( + '#(\\[.*?\\]=>)#', + '#(string\\(|int\\(|float\\(|array\\(|NULL|object\\(|})#', + ); + $str = preg_replace($regex, "\n\\1", $str); + $str = trim($str); + } + $regex = array( + '#^\\040*NULL\\040*$#m', + '#^\\s*array\\((.*?)\\)\\s*{\\s*$#m', + '#^\\s*string\\((.*?)\\)\\s*(.*?)$#m', + '#^\\s*int\\((.*?)\\)\\s*$#m', + '#^\\s*float\\((.*?)\\)\\s*$#m', + '#^\\s*\[(\\d+)\\]\\s*=>\\s*$#m', + '#\\s*?\\r?\\n\\s*#m', + ); + $replace = array( + 'N', + 'a:\\1:{', + 's:\\1:\\2', + 'i:\\1', + 'd:\\1', + 'i:\\1', + ';', + ); + $serialized = preg_replace($regex, $replace, $str); + $func = create_function( + '$match', + 'return "s:".strlen($match[1]).":\\"".$match[1]."\\"";' + ); + $serialized = preg_replace_callback( + '#\\s*\\["(.*?)"\\]\\s*=>#', + $func, + $serialized + ); + $func = create_function( + '$match', + 'return "O:".strlen($match[1]).":\\"".$match[1]."\\":".$match[2].":{";' + ); + $serialized = preg_replace_callback( + '#object\\((.*?)\\).*?\\((\\d+)\\)\\s*{\\s*;#', + $func, + $serialized + ); + $serialized = preg_replace( + array('#};#', '#{;#'), + array('}', '{'), + $serialized + ); + + return unserialize($serialized); + } + + public function is_base64($data) + { + $decoded = base64_decode($data, true); + if (false === $decoded || base64_encode($decoded) != $data) { + return false; + } + + return true; + } + + public function is_fqdn($FQDN) + { + return !empty($FQDN) && preg_match('/(?=^.{1,254}$)(^(?:(?!\d|-)[a-z0-9\-]{1,63}(? 0; + } + + public function render_item_custom_fields_data($item) + { + if (isset($item['custom_fields_data']) and $item['custom_fields_data'] != '') { + $item['custom_fields_data'] = $this->base64_to_array($item['custom_fields_data']); + if (isset($item['custom_fields_data']) and is_array($item['custom_fields_data']) and !empty($item['custom_fields_data'])) { + $tmp_val = $this->array_to_ul($item['custom_fields_data']); + $item['custom_fields'] = $tmp_val; + } + } + + return $item; + } + + + public function encrypt($string) + { + return Crypt::encrypt($string); + } + + public function decrypt($string) + { + return Crypt::decrypt($string); + } + + + public function encode_ids($data) + { + $hashids = new \Hashids\Hashids(); + return $hashids->encode($data); + } + + public function decode_ids($data) + { + $hashids = new \Hashids\Hashids(); + return $hashids->decode($data); + } + + + function split_dates($min, $max, $parts = 7, $output = "Y-m-d") + { + $dataCollection[] = date($output, strtotime($min)); + $diff = (strtotime($max) - strtotime($min)) / $parts; + $convert = strtotime($min) + $diff; + + for ($i = 1; $i < $parts; $i++) { + $dataCollection[] = date($output, $convert); + $convert += $diff; + } + $dataCollection[] = date($output, strtotime($max)); + return $dataCollection; + } + + + public function text_to_image($text) + { + $options = array(); + if (is_array($text)) { + $options = $text; + if (isset($options['text'])) { + $text = $options['text']; + } else { + $text = 'Hello world!'; + } + + } + + + $simple_text_image = new lib\SimpleTextImage($text); + if (isset($options['font_size'])) { + $simple_text_image->setFontSize(intval($options['font_size'])); + } + + if (isset($options['padding'])) { + $simple_text_image->setPadding(intval($options['padding'])); + } + + if (isset($options['bg_color'])) { + $color = $options['bg_color']; + $rgb = $this->hex_to_rgb($color); + $simple_text_image->setBackground($rgb['r'], $rgb['g'], $rgb['b']); + } + + if (isset($options['fg_color'])) { + $color = $options['fg_color']; + $rgb = $this->hex_to_rgb($color); + $simple_text_image->setForeground($rgb['r'], $rgb['g'], $rgb['b']); + } + + // Enable output buffering + ob_start(); + $simple_text_image->render('png'); + $imagedata = ob_get_contents(); + + ob_end_clean(); + + + return 'data:image/png;base64,' . base64_encode($imagedata); + + + } + + public function hex_to_rgb($hex, $alpha = false) + { + $hex = str_replace('#', '', $hex); + if (strlen($hex) == 6) { + $rgb['r'] = hexdec(substr($hex, 0, 2)); + $rgb['g'] = hexdec(substr($hex, 2, 2)); + $rgb['b'] = hexdec(substr($hex, 4, 2)); + } else if (strlen($hex) == 3) { + $rgb['r'] = hexdec(str_repeat(substr($hex, 0, 1), 2)); + $rgb['g'] = hexdec(str_repeat(substr($hex, 1, 1), 2)); + $rgb['b'] = hexdec(str_repeat(substr($hex, 2, 1), 2)); + } else { + $rgb['r'] = '0'; + $rgb['g'] = '0'; + $rgb['b'] = '0'; + } + if ($alpha) { + $rgb['a'] = $alpha; + } + return $rgb; + } + + +} diff --git a/update/src/Microweber/Utils/MailSender.php b/update/src/Microweber/Utils/MailSender.php deleted file mode 100644 index 4e0eaa4c..00000000 --- a/update/src/Microweber/Utils/MailSender.php +++ /dev/null @@ -1,387 +0,0 @@ -option_manager->get('email_from_name', 'email'); - if ($email_from == false or trim($email_from) == '') { - $email_from = getenv('USERNAME'); - } - $this->email_from_name = $email_from; - - $this->smtp_host = trim(mw()->option_manager->get('smtp_host', 'email')); - $this->smtp_port = intval(mw()->option_manager->get('smtp_port', 'email')); - - $this->smtp_username = trim(mw()->option_manager->get('smtp_username', 'email')); - $this->smtp_password = trim(mw()->option_manager->get('smtp_password', 'email')); - $this->smtp_auth = trim(mw()->option_manager->get('smtp_auth', 'email')); - $this->transport = trim(mw()->option_manager->get('email_transport', 'email')); - - $sec = mw()->option_manager->get('smtp_secure', 'email'); - - $this->smtp_secure = intval($sec); - - $email_from = mw()->option_manager->get('email_from', 'email'); - - $hostname = mw()->url_manager->hostname(); - - - if ($email_from == false or trim($email_from) == '') { - if ($this->email_from_name != '') { - $email_from = ($this->email_from_name) . '@' .$hostname; - } else { - $email_from = 'noreply@' . $hostname; - } - $email_from = str_replace(' ', '-', $email_from); - } - $this->email_from = $email_from; - - $this->here = dirname(__FILE__); - - Config::set('mail.from.name', $this->email_from_name); - Config::set('mail.from.address', $this->email_from); - - Config::set('mail.username', $this->smtp_username); - Config::set('mail.password', $this->smtp_password); - - if ($this->transport == '' or $this->transport == 'php') { - Config::set('mail.driver', 'mail'); - - $disabled_functions = @ini_get('disable_functions'); - // check if escapeshellcmd() has been disabled - if (strstr($disabled_functions, 'escapeshellarg')) { - //if disabled, switch mail transporter - $transport = \Microweber\Utils\lib\mail\Swift_MailTransport::newInstance(); - - // set new swift mailer - \Mail::setSwiftMailer(new \Swift_Mailer($transport)); - } - - } - - - if ($this->transport == 'gmail') { - Config::set('mail.host', 'smtp.gmail.com'); - Config::set('mail.port', 587); - Config::set('mail.encryption', 'tls'); - } else if ($this->transport == 'cpanel') { - Config::set('mail.host', $this->smtp_host); - Config::set('mail.port', 587); - Config::set('mail.encryption', 'tls'); - } else if ($this->transport == 'plesk') { - Config::set('mail.host', $this->smtp_host); - Config::set('mail.port', 25); - Config::set('mail.encryption', 'tls'); - } else { - Config::set('mail.host', $this->smtp_host); - Config::set('mail.port', $this->smtp_port); - Config::set('mail.encryption', $this->smtp_auth); - } - - } - - public function setEmailTo($email) { - $this->email_to = $email; - } - - public function setEmailSubject($subject) { - $this->email_subject = $subject; - } - - public function setEmailMessage($message) { - $this->email_message = $message; - } - - public function setEmailHostnameToSubject($hostname) { - $this->email_add_hostname_to_subject = $hostname; - } - - public function setEmailNoCache($cache) { - $this->email_no_cache = $cache; - } - - public function setEmailCc($cc) { - $this->email_cc = $cc; - } - - public function setEmailFrom($email) { - $this->email_from = $email; - } - public function setEmailFromName($name) { - $this->email_from_name = $name; - } - public function setEmailReplyTo($replyTo) { - $this->email_reply_to = $replyTo; - } - - public function setEmailAttachments($attachments) { - $this->email_attachments = $attachments; - } - - /** - * Send email - * @param string $to - * @param string $subject - * @param string $message - * @param boolean $add_hostname_to_subject - * @param boolean $no_cache - * @param boolean $cc - * @param boolean $email_from - * @param boolean $from_name - * @param boolean $reply_to - * @param array $attachments - * @return boolean - */ - public function send( - $to = false, - $subject = false, - $message = false, - $add_hostname_to_subject = false, - $no_cache = false, - $cc = false, - $email_from = false, - $from_name = false, - $reply_to = false, - $attachments = array() - ) - { - if (empty($to)) { - $to = $this->email_to; - } - - if (empty($subject)) { - $subject = $this->email_subject; - } - - if (empty($message)) { - $message = $this->email_message; - } - - if (empty($add_hostname_to_subject)) { - $add_hostname_to_subject = $this->email_add_hostname_to_subject; - } - - if (empty($no_cache)) { - $no_cache = $this->email_no_cache; - } - - if (empty($cc)) { - $cc = $this->email_cc; - } - - if (empty($email_from)) { - $email_from = $this->email_from; - } - - if (empty($from_name)) { - $from_name = $this->email_from_name; - } - - if (empty($reply_to)) { - $reply_to = $this->email_reply_to; - } - - if (empty($attachments)) { - $attachments = $this->email_attachments; - } - - if (is_array($to)) { - extract($to); - } - - -// $function_cache_id = false; -// -// $args = func_get_args(); -// -// foreach ($args as $k => $v) { -// $function_cache_id = $function_cache_id . serialize($k) . serialize($v); -// } -// -// $function_cache_id = __FUNCTION__ . crc32($function_cache_id); -// $cache_group = 'notifications/email'; -// $cache_content = mw()->cache_manager->get($function_cache_id, $cache_group); -// -// if ($no_cache == false and ($cache_content) != false) { -// -// // return $cache_content; -// } - - $email_from = $email_from ?: mw()->option_manager->get('email_from', 'email'); - - if ($email_from == false or $email_from == '') { - } elseif (!filter_var($email_from, FILTER_VALIDATE_EMAIL)) { - } - - if ($add_hostname_to_subject != false) { - $subject = '[' . mw()->url_manager->hostname() . '] ' . $subject; - } - - if (isset($to) and (filter_var($to, FILTER_VALIDATE_EMAIL))) { - $sender = $this->exec_send($to, $subject, $message, $email_from, $from_name, $reply_to, $attachments); - if (isset($cc) and ($cc) != false and (filter_var($cc, FILTER_VALIDATE_EMAIL))) { - $sender = $this->exec_send($cc, $subject, $message, $email_from, $from_name, $reply_to, $attachments); - } - - // mw()->cache_manager->save(true, $function_cache_id, $cache_group, 30); - - return $sender; - } else { - return false; - } - } - - public function test($params) - { - $is_admin = is_admin(); - if ($is_admin == false) { - return array('error' => 'Error: not logged in as admin.' . __FILE__ . __LINE__); - } - - $email_from = mw()->option_manager->get('email_from', 'email'); - if ($email_from == false or $email_from == '') { - return array('error' => 'Sender E-mail is not set'); - } elseif (!filter_var($email_from, FILTER_VALIDATE_EMAIL)) { - return array('error' => 'Sender E-mail is not valid'); - } - if (isset($params['to']) and (filter_var($params['to'], FILTER_VALIDATE_EMAIL))) { - $to = $params['to']; - $subject = 'Test mail'; - - if (isset($params['subject'])) { - $subject = $params['subject']; - } - - $message = 'Hello! This is a simple email message.'; - - $send = $this->exec_send($to, $subject, $message); - if ($send) { - return array('success' => $send); - } else { - return array('error' => 'Email is not sent'); - - } - } - - return true; - } - - public function setCc($to) - { - $this->cc = $to; - $this->email_cc = $to; - } - - public function exec_send($to, $subject, $text, $from_address = false, $from_name = false, $reply_to = false, $attachments = array()) - { - $from_address = $from_address ?: $this->email_from; - $from_name = $from_name ?: $this->email_from_name; - $text = mw()->url_manager->replace_site_url_back($text); - - $content = array(); - $content['content'] = $text; - $content['subject'] = $subject; - $content['to'] = $to; - $content['from'] = $from_address; - $content['from_name'] = $from_name; - - // $reply_to = mw()->option_manager->get('email_reply', 'contact_form_default'); - - /// escapeshellcmd() has been disabled for security reasons - - if (defined('MW_UNIT_TEST')) { - self::$last_send = $content; - } - - try { - \Mail::send( - 'mw_email_send::emails.simple', - $content, - function ($message) use ($to, $subject, $from_address, $from_name, $reply_to, $attachments) { - - $from_name = $from_name ?: $from_address; - if ($from_address != false) { - $message->from($from_address, $from_name); - } - if ($reply_to != false) { - if (is_string($reply_to) and (filter_var($reply_to, FILTER_VALIDATE_EMAIL))) { - $message->replyTo($reply_to); - } - } - $message->to($to)->subject($subject); - - if (is_array($attachments) && !empty($attachments)) { - foreach($attachments as $attachmentFile) { - $message->attach($attachmentFile); - } - } - - return true; - } - ); - return true; - } catch (\Exception $e) { - - $exceptionMessage = 'C aught exception: ' . $e->getMessage() . "\n"; - $exceptionMessage .= 'File: ' . $e->getFile() . "\n"; - $exceptionMessage .= 'Line: ' . $e->getLine() . "\n"; - - mw()->log_manager->save('is_system=y&field=action&rel=mail_sender&title=Can\'t send test email&content=' . $exceptionMessage); - - if ($this->silent_exceptions) { - return false; - } else { - echo $exceptionMessage; - return false; - } - } - - - return false; - - - } -} diff --git a/update/src/Microweber/Utils/lib/JShrink/Minifier.php b/update/src/Microweber/Utils/lib/JShrink/Minifier.php deleted file mode 100644 index f632236a..00000000 --- a/update/src/Microweber/Utils/lib/JShrink/Minifier.php +++ /dev/null @@ -1,592 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * JShrink - * - * - * @package JShrink - * @author Robert Hafner - */ - -namespace JShrink; - -/** - * Minifier - * - * Usage - Minifier::minify($js); - * Usage - Minifier::minify($js, $options); - * Usage - Minifier::minify($js, array('flaggedComments' => false)); - * - * @package JShrink - * @author Robert Hafner - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - */ -class Minifier -{ - /** - * The input javascript to be minified. - * - * @var string - */ - protected $input; - - /** - * The location of the character (in the input string) that is next to be - * processed. - * - * @var int - */ - protected $index = 0; - - /** - * The first of the characters currently being looked at. - * - * @var string - */ - protected $a = ''; - - /** - * The next character being looked at (after a); - * - * @var string - */ - protected $b = ''; - - /** - * This character is only active when certain look ahead actions take place. - * - * @var string - */ - protected $c; - - /** - * Contains the options for the current minification process. - * - * @var array - */ - protected $options; - - /** - * These characters are used to define strings. - */ - protected $stringDelimiters = ['\'' => true, '"' => true, '`' => true]; - - /** - * Contains the default options for minification. This array is merged with - * the one passed in by the user to create the request specific set of - * options (stored in the $options attribute). - * - * @var array - */ - protected static $defaultOptions = array('flaggedComments' => true); - - /** - * Contains lock ids which are used to replace certain code patterns and - * prevent them from being minified - * - * @var array - */ - protected $locks = array(); - - /** - * Takes a string containing javascript and removes unneeded characters in - * order to shrink the code without altering it's functionality. - * - * @param string $js The raw javascript to be minified - * @param array $options Various runtime options in an associative array - * @throws \Exception - * @return bool|string - */ - public static function minify($js, $options = array()) - { - try { - ob_start(); - - $jshrink = new Minifier(); - $js = $jshrink->lock($js); - $jshrink->minifyDirectToOutput($js, $options); - - // Sometimes there's a leading new line, so we trim that out here. - $js = ltrim(ob_get_clean()); - $js = $jshrink->unlock($js); - unset($jshrink); - - return $js; - } catch (\Exception $e) { - if (isset($jshrink)) { - // Since the breakdownScript function probably wasn't finished - // we clean it out before discarding it. - $jshrink->clean(); - unset($jshrink); - } - - // without this call things get weird, with partially outputted js. - ob_end_clean(); - throw $e; - } - } - - /** - * Processes a javascript string and outputs only the required characters, - * stripping out all unneeded characters. - * - * @param string $js The raw javascript to be minified - * @param array $options Various runtime options in an associative array - */ - protected function minifyDirectToOutput($js, $options) - { - $this->initialize($js, $options); - $this->loop(); - $this->clean(); - } - - /** - * Initializes internal variables, normalizes new lines, - * - * @param string $js The raw javascript to be minified - * @param array $options Various runtime options in an associative array - */ - protected function initialize($js, $options) - { - $this->options = array_merge(static::$defaultOptions, $options); - $js = str_replace("\r\n", "\n", $js); - $js = str_replace('/**/', '', $js); - $this->input = str_replace("\r", "\n", $js); - - // We add a newline to the end of the script to make it easier to deal - // with comments at the bottom of the script- this prevents the unclosed - // comment error that can otherwise occur. - $this->input .= PHP_EOL; - - // Populate "a" with a new line, "b" with the first character, before - // entering the loop - $this->a = "\n"; - $this->b = $this->getReal(); - } - - /** - * The primary action occurs here. This function loops through the input string, - * outputting anything that's relevant and discarding anything that is not. - */ - protected function loop() - { - while ($this->a !== false && !is_null($this->a) && $this->a !== '') { - switch ($this->a) { - // new lines - case "\n": - // if the next line is something that can't stand alone preserve the newline - if ($this->b !== false && strpos('(-+[@', $this->b) !== false) { - echo $this->a; - $this->saveString(); - break; - } - - // if B is a space we skip the rest of the switch block and go down to the - // string/regex check below, resetting $this->b with getReal - if ($this->b === ' ') { - break; - } - - // otherwise we treat the newline like a space - - // no break - case ' ': - if (static::isAlphaNumeric($this->b)) { - echo $this->a; - } - - $this->saveString(); - break; - - default: - switch ($this->b) { - case "\n": - if (strpos('}])+-"\'', $this->a) !== false) { - echo $this->a; - $this->saveString(); - break; - } else { - if (static::isAlphaNumeric($this->a)) { - echo $this->a; - $this->saveString(); - } - } - break; - - case ' ': - if (!static::isAlphaNumeric($this->a)) { - break; - } - - // no break - default: - // check for some regex that breaks stuff - if ($this->a === '/' && ($this->b === '\'' || $this->b === '"')) { - $this->saveRegex(); - continue 3; - } - - echo $this->a; - $this->saveString(); - break; - } - } - - // do reg check of doom - $this->b = $this->getReal(); - - if (($this->b == '/' && strpos('(,=:[!&|?', $this->a) !== false)) { - $this->saveRegex(); - } - } - } - - /** - * Resets attributes that do not need to be stored between requests so that - * the next request is ready to go. Another reason for this is to make sure - * the variables are cleared and are not taking up memory. - */ - protected function clean() - { - unset($this->input); - $this->index = 0; - $this->a = $this->b = ''; - unset($this->c); - unset($this->options); - } - - /** - * Returns the next string for processing based off of the current index. - * - * @return string - */ - protected function getChar() - { - // Check to see if we had anything in the look ahead buffer and use that. - if (isset($this->c)) { - $char = $this->c; - unset($this->c); - } else { - // Otherwise we start pulling from the input. - $char = substr($this->input, $this->index, 1); - - // If the next character doesn't exist return false. - if (isset($char) && $char === false) { - return false; - } - - // Otherwise increment the pointer and use this char. - $this->index++; - } - - // Normalize all whitespace except for the newline character into a - // standard space. - if ($char !== "\n" && ord($char) < 32) { - return ' '; - } - - return $char; - } - - /** - * This function gets the next "real" character. It is essentially a wrapper - * around the getChar function that skips comments. This has significant - * performance benefits as the skipping is done using native functions (ie, - * c code) rather than in script php. - * - * - * @return string Next 'real' character to be processed. - * @throws \RuntimeException - */ - protected function getReal() - { - $startIndex = $this->index; - $char = $this->getChar(); - - // Check to see if we're potentially in a comment - if ($char !== '/') { - return $char; - } - - $this->c = $this->getChar(); - - if ($this->c === '/') { - $this->processOneLineComments($startIndex); - - return $this->getReal(); - } elseif ($this->c === '*') { - $this->processMultiLineComments($startIndex); - - return $this->getReal(); - } - - return $char; - } - - /** - * Removed one line comments, with the exception of some very specific types of - * conditional comments. - * - * @param int $startIndex The index point where "getReal" function started - * @return void - */ - protected function processOneLineComments($startIndex) - { - $thirdCommentString = substr($this->input, $this->index, 1); - - // kill rest of line - $this->getNext("\n"); - - unset($this->c); - - if ($thirdCommentString == '@') { - $endPoint = $this->index - $startIndex; - $this->c = "\n" . substr($this->input, $startIndex, $endPoint); - } - } - - /** - * Skips multiline comments where appropriate, and includes them where needed. - * Conditional comments and "license" style blocks are preserved. - * - * @param int $startIndex The index point where "getReal" function started - * @return void - * @throws \RuntimeException Unclosed comments will throw an error - */ - protected function processMultiLineComments($startIndex) - { - $this->getChar(); // current C - $thirdCommentString = $this->getChar(); - - // kill everything up to the next */ if it's there - if ($this->getNext('*/')) { - $this->getChar(); // get * - $this->getChar(); // get / - $char = $this->getChar(); // get next real character - - // Now we reinsert conditional comments and YUI-style licensing comments - if (($this->options['flaggedComments'] && $thirdCommentString === '!') - || ($thirdCommentString === '@')) { - - // If conditional comments or flagged comments are not the first thing in the script - // we need to echo a and fill it with a space before moving on. - if ($startIndex > 0) { - echo $this->a; - $this->a = " "; - - // If the comment started on a new line we let it stay on the new line - if ($this->input[($startIndex - 1)] === "\n") { - echo "\n"; - } - } - - $endPoint = ($this->index - 1) - $startIndex; - echo substr($this->input, $startIndex, $endPoint); - - $this->c = $char; - - return; - } - } else { - $char = false; - } - - if ($char === false) { - throw new \RuntimeException('Unclosed multiline comment at position: ' . ($this->index - 2)); - } - - // if we're here c is part of the comment and therefore tossed - $this->c = $char; - } - - /** - * Pushes the index ahead to the next instance of the supplied string. If it - * is found the first character of the string is returned and the index is set - * to it's position. - * - * @param string $string - * @return string|false Returns the first character of the string or false. - */ - protected function getNext($string) - { - // Find the next occurrence of "string" after the current position. - $pos = strpos($this->input, $string, $this->index); - - // If it's not there return false. - if ($pos === false) { - return false; - } - - // Adjust position of index to jump ahead to the asked for string - $this->index = $pos; - - // Return the first character of that string. - return substr($this->input, $this->index, 1); - } - - /** - * When a javascript string is detected this function crawls for the end of - * it and saves the whole string. - * - * @throws \RuntimeException Unclosed strings will throw an error - */ - protected function saveString() - { - $startpos = $this->index; - - // saveString is always called after a gets cleared, so we push b into - // that spot. - $this->a = $this->b; - - // If this isn't a string we don't need to do anything. - if (!isset($this->stringDelimiters[$this->a])) { - return; - } - - // String type is the quote used, " or ' - $stringType = $this->a; - - // Echo out that starting quote - echo $this->a; - - // Loop until the string is done - // Grab the very next character and load it into a - while (($this->a = $this->getChar()) !== false) { - switch ($this->a) { - - // If the string opener (single or double quote) is used - // output it and break out of the while loop- - // The string is finished! - case $stringType: - break 2; - - // New lines in strings without line delimiters are bad- actual - // new lines will be represented by the string \n and not the actual - // character, so those will be treated just fine using the switch - // block below. - case "\n": - if ($stringType === '`') { - echo $this->a; - } else { - throw new \RuntimeException('Unclosed string at position: ' . $startpos); - } - break; - - // Escaped characters get picked up here. If it's an escaped new line it's not really needed - case '\\': - - // a is a slash. We want to keep it, and the next character, - // unless it's a new line. New lines as actual strings will be - // preserved, but escaped new lines should be reduced. - $this->b = $this->getChar(); - - // If b is a new line we discard a and b and restart the loop. - if ($this->b === "\n") { - break; - } - - // echo out the escaped character and restart the loop. - echo $this->a . $this->b; - break; - - - // Since we're not dealing with any special cases we simply - // output the character and continue our loop. - default: - echo $this->a; - } - } - } - - /** - * When a regular expression is detected this function crawls for the end of - * it and saves the whole regex. - * - * @throws \RuntimeException Unclosed regex will throw an error - */ - protected function saveRegex() - { - echo $this->a . $this->b; - - while (($this->a = $this->getChar()) !== false) { - if ($this->a === '/') { - break; - } - - if ($this->a === '\\') { - echo $this->a; - $this->a = $this->getChar(); - } - - if ($this->a === "\n") { - throw new \RuntimeException('Unclosed regex pattern at position: ' . $this->index); - } - - echo $this->a; - } - $this->b = $this->getReal(); - } - - /** - * Checks to see if a character is alphanumeric. - * - * @param string $char Just one character - * @return bool - */ - protected static function isAlphaNumeric($char) - { - return preg_match('/^[\w\$\pL]$/', $char) === 1 || $char == '/'; - } - - /** - * Replace patterns in the given string and store the replacement - * - * @param string $js The string to lock - * @return bool - */ - protected function lock($js) - { - /* lock things like "asd" + ++x; */ - $lock = '"LOCK---' . crc32(time()) . '"'; - - $matches = array(); - preg_match('/([+-])(\s+)([+-])/S', $js, $matches); - if (empty($matches)) { - return $js; - } - - $this->locks[$lock] = $matches[2]; - - $js = preg_replace('/([+-])\s+([+-])/S', "$1{$lock}$2", $js); - /* -- */ - - return $js; - } - - /** - * Replace "locks" with the original characters - * - * @param string $js The string to unlock - * @return bool - */ - protected function unlock($js) - { - if (empty($this->locks)) { - return $js; - } - - foreach ($this->locks as $lock => $replacement) { - $js = str_replace($lock, $replacement, $js); - } - - return $js; - } -} diff --git a/update/src/Microweber/Views/emails/forgot_password.blade.php b/update/src/Microweber/Views/emails/forgot_password.blade.php deleted file mode 100644 index f063cfa9..00000000 --- a/update/src/Microweber/Views/emails/forgot_password.blade.php +++ /dev/null @@ -1,16 +0,0 @@ -

Dear {{username}},

-
-

- Recently a request was submitted to reset your password for our client area from ip {{ip}}. If you did not request - this, please ignore this email. It will expire and become useless in 2 hours time. -

-
-

- To reset your password, please visit the url below: -
- {{reset_password_link}} -

-
-

When you visit the link above, you will have the opportunity to choose a new password.

- -

{{created_at}}

\ No newline at end of file diff --git a/update/src/Microweber/Views/emails/new_order.blade.php b/update/src/Microweber/Views/emails/new_order.blade.php deleted file mode 100644 index fc96c203..00000000 --- a/update/src/Microweber/Views/emails/new_order.blade.php +++ /dev/null @@ -1,22 +0,0 @@ -

Order Information

-

Order ID: {{order_id}}

-

Transaction ID: {{transaction_id}}

-

Currency: {{currency}}

-

Order Status: {{order_status}}

-

Amount: {{amount}}

-

Date: {{date}}

-

Cart items: - {{cart_items}} -

- - -

Customer Information

-

First Name: {{first_name}}

-

Last Name: {{last_name}}

-

Email: {{email}}

-

Phone: {{phone}}

-

Address: {{address}}

-

Zip: {{zip}}

-

State: {{state}}

-

City: {{city}}

-

Country: {{country}}

diff --git a/update/src/Microweber/Views/emails/new_user_registration.blade.php b/update/src/Microweber/Views/emails/new_user_registration.blade.php deleted file mode 100644 index 4576a70a..00000000 --- a/update/src/Microweber/Views/emails/new_user_registration.blade.php +++ /dev/null @@ -1,17 +0,0 @@ -

Dear {{username}},

- -
- -

This message is to confirm that your user registration.

- -
-

Verify email:

-
-{{verify_email_link}} - -


- -Registration Date: {{created_at}}
-First name: {{first_name}}
-Last name: {{last_name}}
-Email: {{email}}
\ No newline at end of file diff --git a/update/src/Microweber/Views/install.php b/update/src/Microweber/Views/install.php deleted file mode 100644 index 2ffce3b6..00000000 --- a/update/src/Microweber/Views/install.php +++ /dev/null @@ -1,696 +0,0 @@ - - - - <?php _e('Installation'); ?> - - - - - - - - - - - - - - - - - - - -
- v. -
-
- -

Setup your website

- - - - - - -
- -
-
-
-
-
-
- -
- - - - -

- -

-

- -

-
    - -
  1. - -
- - - - -
- -
-
-
-
style="display:none;" > - -

- -

- - -
-
- - - -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
- - -
-
- -
- true); - $templates = site_templates($templates_opts); - ?> - -
- - -
-
- -
-
- -
-
- -
-
-
- -
- - -
- - - - -
- -
-
-
-
> - -
-
- -

-
- - - - -
-
-
- - value="" /> -
-
- - value="" /> -
- -
- -
-
- -
-
- - value="" /> -
-
- - value="" /> -
- -
-
-
-
-
- - -
- Show advanced options - -
-
- - - - - - - -
- - - - - -
- - -

-
- - - - - - - -
- -
-
- -
-
-
- - diff --git a/update/src/Microweber/functions/bootstrap.php b/update/src/Microweber/functions/bootstrap.php index 85943a92..b77d3b64 100644 --- a/update/src/Microweber/functions/bootstrap.php +++ b/update/src/Microweber/functions/bootstrap.php @@ -11,7 +11,7 @@ } if (!defined('MW_VERSION')) { - define('MW_VERSION', '1.1.12'); + define('MW_VERSION', '1.1.13'); } diff --git a/update/src/Microweber/functions/common.php b/update/src/Microweber/functions/common.php deleted file mode 100644 index 8682afe6..00000000 --- a/update/src/Microweber/functions/common.php +++ /dev/null @@ -1,598 +0,0 @@ -make($class); - return $app->make($class); - } -} - -if (!function_exists('d')) { - function d($dump) - { - var_dump($dump); - } -} - -if (!function_exists('site_url')) { - function site_url($add_string = false) - { - static $site_url; - - if (defined('MW_SITE_URL')) { - $site_url = MW_SITE_URL; - } - - - if ($site_url == false) { - $pageURL = 'http'; - if (is_https()) { - $pageURL .= 's'; - } - $subdir_append = false; - if (isset($_SERVER['PATH_INFO'])) { - // $subdir_append = $_SERVER ['PATH_INFO']; - } elseif (isset($_SERVER['REDIRECT_URL'])) { - $subdir_append = $_SERVER['REDIRECT_URL']; - } - - $pageURL .= '://'; - - if (isset($_SERVER['HTTP_HOST'])) { - $pageURL .= $_SERVER['HTTP_HOST']; - } elseif (isset($_SERVER['SERVER_NAME']) and isset($_SERVER['SERVER_PORT']) and $_SERVER['SERVER_PORT'] != '80' and $_SERVER['SERVER_PORT'] != '443') { - $pageURL .= $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT']; - } elseif (isset($_SERVER['SERVER_NAME'])) { - $pageURL .= $_SERVER['SERVER_NAME']; - } elseif (isset($_SERVER['HOSTNAME'])) { - $pageURL .= $_SERVER['HOSTNAME']; - } - $pageURL_host = $pageURL; - $pageURL .= $subdir_append; - $d = ''; - if (isset($_SERVER['SCRIPT_NAME'])) { - $d = dirname($_SERVER['SCRIPT_NAME']); - $d = trim($d, DIRECTORY_SEPARATOR); - } - - if ($d == '') { - $pageURL = $pageURL_host; - } else { - $pageURL_host = rtrim($pageURL_host, '/') . '/'; - $d = ltrim($d, '/'); - $d = ltrim($d, DIRECTORY_SEPARATOR); - $pageURL = $pageURL_host . $d; - } - if (isset($_SERVER['QUERY_STRING'])) { - // $pageURL = str_replace($_SERVER['QUERY_STRING'], '', $pageURL); - } - - $uz = parse_url($pageURL); -// if (isset($uz['query'])) { -// $pageURL = str_replace($uz['query'], '', $pageURL); -// $pageURL = rtrim($pageURL, '?'); -// } - - $url_segs = explode('/', $pageURL); - - $i = 0; - $unset = false; - foreach ($url_segs as $v) { - if ($unset == true and $d != '') { - unset($url_segs[$i]); - } - if ($v == $d and $d != '') { - $unset = true; - } - - ++$i; - } - $url_segs[] = ''; - $site_url = implode('/', $url_segs); - } - if (defined('MW_SITE_URL_PATH_PREFIX')) { - $site_url .= MW_SITE_URL_PATH_PREFIX; - } - - if(!$site_url){ - $site_url = 'http://localhost/'; - } - - return $site_url . $add_string; - } -} - -/** - * Converts a path in the appropriate format for win or linux. - * - * @param string $path - * The directory path. - * @param bool $slash_it - * If true, ads a slash at the end, false by default - * - * @return string The formatted string - */ -function normalize_path($path, $slash_it = true) -{ - $path_original = $path; - $s = DIRECTORY_SEPARATOR; - $path = preg_replace('/[\/\\\]/', $s, $path); - $path = str_replace($s . $s, $s, $path); - if (strval($path) == '') { - $path = $path_original; - } - if ($slash_it == false) { - $path = rtrim($path, DIRECTORY_SEPARATOR); - } else { - $path .= DIRECTORY_SEPARATOR; - $path = rtrim($path, DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR); - } - if (strval(trim($path)) == '' or strval(trim($path)) == '/') { - $path = $path_original; - } - if ($slash_it == false) { - } else { - $path = $path . DIRECTORY_SEPARATOR; - $path = reduce_double_slashes($path); - } - - return $path; -} - -if (!function_exists('reduce_double_slashes')) { - /** - * Removes double slashes from sting. - * - * @param $str - * - * @return string - */ - function reduce_double_slashes($str) - { - return preg_replace('#([^:])//+#', '\\1/', $str); - } -} - -function lipsum($number_of_characters = false) -{ - if ($number_of_characters == false) { - $number_of_characters = 100; - } - - $lipsum = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc quis justo et sapien varius gravida. Fusce porttitor consectetur risus ut tincidunt. Maecenas pellentesque nulla sodales enim consectetur commodo. Aliquam non dui leo, adipiscing posuere metus. Duis adipiscing auctor lorem ut pulvinar. Donec non magna massa, feugiat commodo felis. Donec ut nibh elit. Nulla pellentesque nulla diam, vitae consectetur neque. - Etiam sed lorem augue. Vivamus varius tristique bibendum. Phasellus vitae tempor augue. Maecenas consequat commodo euismod. Aenean a lorem nec leo dignissim ultricies sed quis nisi. Fusce pellentesque tellus lectus, eu varius felis. Mauris lacinia facilisis metus, sed sollicitudin quam faucibus id. - Donec ultrices cursus erat, non pulvinar lectus consectetur eu. Proin sodales risus a ante aliquet vel cursus justo viverra. Duis vel leo felis. Praesent hendrerit, sem vitae scelerisque blandit, enim neque pulvinar mi, vel lobortis elit dui vel dui. Donec ac sem sed neque consequat egestas. Curabitur pellentesque consequat ante, quis laoreet enim gravida eu. Donec varius, nisi non bibendum pellentesque, felis metus pretium ipsum, non vulputate eros magna ac sapien. Donec tincidunt porta tortor, et ornare enim facilisis vitae. Nulla facilisi. Cras ut nisi ac dolor lacinia tempus at sed eros. Integer vehicula arcu in augue adipiscing accumsan. Morbi placerat consectetur sapien sed gravida. Sed fringilla elit nisl, nec molestie felis. Nulla aliquet diam vitae diam iaculis porttitor. - Integer eget tortor nulla, non dapibus erat. Sed ultrices consectetur quam at scelerisque. Nullam varius hendrerit nisl, ac cursus mi bibendum eu. Phasellus varius fermentum massa, sit amet ornare quam malesuada in. Quisque ac massa sem. Nulla eu erat metus, non tincidunt nibh. Nam consequat interdum nulla, at congue libero tincidunt eget. Sed cursus nulla eu felis faucibus porta. Nam sed lacus eros, nec pellentesque lorem. Sed dapibus, sapien mattis sollicitudin bibendum, libero augue dignissim felis, eget elementum felis nulla in velit. Donec varius, lectus non suscipit sollicitudin, urna est hendrerit nulla, vel vehicula arcu sem volutpat sapien. Ut nisi ipsum, accumsan vestibulum pulvinar eu, sodales id lacus. Nulla iaculis eros sit amet lectus tincidunt mattis. Ut eu nisl sit amet eros vestibulum imperdiet ut vel lorem. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. - In hac habitasse platea dictumst. Aenean vehicula auctor eros non tincidunt. Donec tempor arcu ac diam sagittis mattis. Aenean eget augue nulla, non volutpat lorem. Praesent ut cursus magna. Mauris consequat suscipit nisi. Integer eu venenatis ligula. Maecenas leo risus, lacinia et auctor aliquet, aliquet in mi. - Aliquam tincidunt dapibus augue, et vulputate dui aliquet et. Praesent pharetra mauris eu justo dignissim venenatis ornare nec nisl. Aliquam justo quam, varius eget congue vel, congue eget est. Ut nulla felis, luctus imperdiet molestie et, commodo vel nulla. Morbi at nulla dapibus enim bibendum aliquam non et ipsum. Phasellus sed cursus justo. Praesent sit amet metus lorem. Vivamus ut lorem dapibus turpis rhoncus pharetra. Donec in lacus sagittis nisl tempor sagittis quis a orci. Nam volutpat condimentum ante ac facilisis. Cras sem magna, vulputate id consequat rhoncus, suscipit non justo. In fringilla dignissim cursus. - Nunc fringilla orci tellus, et euismod lorem. Ut quis turpis lacus, ac elementum lorem. Praesent fringilla, metus nec tincidunt consequat, sem sapien hendrerit nisi, nec feugiat libero risus a nisl. Duis arcu magna, ullamcorper et semper vitae, tincidunt nec libero. Etiam sed lacus ante. In imperdiet arcu eget elit commodo ut malesuada sem congue. Quisque porttitor porta sagittis. Nam porta elit sit amet mauris fermentum eu feugiat ipsum pretium. Maecenas sollicitudin aliquam eros, ut pretium nunc faucibus quis. Mauris id metus vitae libero viverra adipiscing quis ut nulla. Pellentesque posuere facilisis nibh, facilisis vehicula felis facilisis nec. - Etiam pharetra libero nec erat pellentesque laoreet. Sed eu libero nec nisl vehicula convallis nec non orci. Aenean tristique varius nisl. Cras vel urna eget enim placerat vehicula quis sed velit. Quisque lacinia sagittis lectus eget sagittis. Pellentesque cursus suscipit massa vel ultricies. Quisque hendrerit lobortis elit interdum feugiat. Sed posuere volutpat erat vel lobortis. Vivamus laoreet mattis varius. Fusce tincidunt accumsan lorem, in viverra lectus dictum eu. Integer venenatis tristique dolor, ac porta lacus pellentesque pharetra. Suspendisse potenti. Ut dolor dolor, sollicitudin in auctor nec, facilisis non justo. Mauris cursus euismod gravida. In at orci in sapien laoreet euismod. - Mauris purus urna, vulputate in malesuada ac, varius eget ante. Integer ultricies lacus vel magna dictum sit amet euismod enim dictum. Aliquam iaculis, ipsum at tempor bibendum, dolor tortor eleifend elit, sed fermentum magna nibh a ligula. Phasellus ipsum nisi, porta quis pellentesque sit amet, dignissim vel felis. Quisque condimentum molestie ligula, ac auctor turpis facilisis ac. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent molestie leo velit. Sed sit amet turpis massa. Donec in tortor quis metus cursus iaculis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. In hac habitasse platea dictumst. Proin leo nisl, faucibus non sollicitudin et, commodo id diam. Aliquam adipiscing, lorem a fringilla blandit, felis dui tristique ligula, vitae eleifend orci diam eget quam. Aliquam vulputate gravida leo eget eleifend. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; - Etiam et consectetur justo. Integer et ante dui, quis rutrum massa. Fusce nibh nisl, congue sit amet tempor vitae, ornare et nisi. Nulla mattis nisl ut ligula sagittis aliquam. Curabitur ac augue at velit facilisis venenatis quis sit amet erat. Donec lacus elit, auctor sed lobortis aliquet, accumsan nec mi. Quisque non est ante. Morbi vehicula pulvinar magna, quis luctus tortor varius et. Donec hendrerit nulla posuere odio lobortis interdum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec dapibus magna id ante sodales tempus. Maecenas at eleifend nulla. - Sed eget gravida magna. Quisque vulputate diam nec libero faucibus vitae fringilla ligula lobortis. Aenean congue, dolor ut dapibus fermentum, justo lectus luctus sem, et vestibulum lectus orci non mauris. Vivamus interdum mauris at diam scelerisque porta mollis massa hendrerit. Donec condimentum lacinia bibendum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam neque dolor, faucibus sed varius sit amet, vulputate vitae nunc. - Etiam in lorem congue nunc sollicitudin rhoncus vel in metus. Integer luctus semper sem ut interdum. Sed mattis euismod diam, at porta mauris laoreet quis. Nam pellentesque enim id mi vestibulum gravida in vel libero. Nulla facilisi. Morbi fringilla mollis malesuada. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum sagittis consectetur auctor. Phasellus convallis turpis eget diam tristique feugiat. In consectetur quam faucibus purus suscipit euismod quis sed quam. Curabitur eget sodales dui. Quisque egestas diam quis sapien aliquet tincidunt. - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam velit est, imperdiet ac posuere non, dictum et nunc. Duis iaculis lacus in libero lacinia ut consectetur nisi facilisis. Fusce aliquet nisl id eros dapibus viverra. Phasellus eget ultrices nisl. Nullam euismod tortor a metus hendrerit convallis. Donec dolor magna, fringilla in sollicitudin sit amet, tristique eget elit. Praesent adipiscing magna in ipsum vulputate non lacinia metus vestibulum. Aenean dictum suscipit mollis. Nullam tristique commodo dapibus. Fusce in tellus sapien, at vulputate justo. Nam ornare, lorem sit amet condimentum ultrices, ipsum velit tempor urna, tincidunt convallis sapien enim eget leo. Proin ligula tellus, ornare vitae scelerisque vitae, fringilla fermentum sem. Phasellus ornare, diam sed luctus condimentum, nisl felis ultricies tortor, ac tempor quam lacus sit amet lorem. Nunc egestas, nibh ornare dictum iaculis, diam nisl fermentum magna, malesuada vestibulum est mauris quis nisl. Ut vulputate pharetra laoreet. - Donec mattis mauris et dolor commodo et pellentesque libero congue. Sed tristique bibendum augue sed auctor. Sed in ante enim. In sed lectus massa. Nulla imperdiet nisi at libero faucibus sagittis ac ac lacus. In dui purus, sollicitudin tempor euismod euismod, dapibus vehicula elit. Aliquam vulputate, ligula non dignissim gravida, odio elit ornare risus, a euismod est odio nec ipsum. In hac habitasse platea dictumst. Mauris posuere ultrices mattis. Etiam vitae leo vitae nunc porta egestas at vitae nibh. Sed pharetra, magna nec bibendum aliquam, dolor sapien consequat neque, sit amet euismod orci elit vitae enim. Sed erat metus, laoreet quis posuere id, congue id velit. Mauris ac velit vel ipsum dictum ornare eget vitae arcu. Donec interdum, neque at lacinia imperdiet, ante libero convallis quam, pellentesque faucibus quam dolor id est. Ut cursus facilisis scelerisque. Sed vitae ligula in purus malesuada porta. - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum vestibulum metus. Integer ultrices ultricies pellentesque. Nulla gravida nisl a magna gravida ullamcorper. Vestibulum accumsan eros vel massa euismod in aliquam felis suscipit. Ut et purus enim, id congue ante. Mauris magna lectus, varius porta pellentesque quis, dignissim in est. Nulla facilisi. Nullam in malesuada mauris. Ut fermentum orci neque. Aliquam accumsan justo a lacus vestibulum fermentum. Donec molestie, quam id adipiscing viverra, massa velit aliquam enim, vitae dapibus turpis libero id augue. Quisque mi magna, mollis vel tincidunt nec, adipiscing sed metus. Maecenas tincidunt augue quis felis dapibus nec elementum justo fringilla. Sed eget massa at sapien tincidunt porta eu id sapien.'; - - return character_limiter($lipsum, $number_of_characters, ''); -} - -/** - * Returns the current microtime. - * - * @return bool|string $date The current microtime - * - * @category Date - * - * @link http://www.webdesign.org/web-programming/php/script-execution-time.8722.html#ixzz2QKEAC7PG - */ -function microtime_float() -{ - list($msec, $sec) = explode(' ', microtime()); - $microtime = (float)$msec + (float)$sec; - - return $microtime; -} - -/** - * Limits a string to a number of characters. - * - * @param $str - * @param int $n - * @param string $end_char - * - * @return string - * - * @category Strings - */ -function character_limiter($str, $n = 500, $end_char = '…') -{ - if (strlen($str) < $n) { - return $str; - } - $str = strip_tags($str); - $str = preg_replace("/\s+/", ' ', str_replace(array("\r\n", "\r", "\n"), ' ', $str)); - - if (strlen($str) <= $n) { - return $str; - } - - $out = ''; - foreach (explode(' ', trim($str)) as $val) { - $out .= $val . ' '; - - if (strlen($out) >= $n) { - $out = trim($out); - - return (strlen($out) == strlen($str)) ? $out : $out . $end_char; - } - } -} - - -function api_url($str = '') -{ - $str = ltrim($str, '/'); - - return site_url('api/' . $str); -} - -function api_nosession_url($str = '') -{ - $str = ltrim($str, '/'); - - return site_url('api_nosession/' . $str); -} - -function auto_link($text) -{ - return mw()->format->auto_link($text); -} - -function prep_url($text) -{ - return mw()->format->prep_url($text); -} - -function is_arr($var) -{ - return isarr($var); -} - -function isarr($var) -{ - if (is_array($var) and !empty($var)) { - return true; - } else { - return false; - } -} - -function array_search_multidimensional($array, $column, $key) -{ - return (array_search($key, array_column($array, $column))); -} - -function is_ajax() -{ - return mw()->url_manager->is_ajax(); -} - -function url_current($skip_ajax = false, $no_get = false) -{ - return mw()->url_manager->current($skip_ajax, $no_get); -} - -function url_segment($k = -1, $page_url = false) -{ - return mw()->url_manager->segment($k, $page_url); -} - -/** - * Returns the curent url path, does not include the domain name. - * - * @return string the url string - */ -function url_path($skip_ajax = false) -{ - return mw()->url_manager->string($skip_ajax); -} - -/** - * Returns the curent url path, does not include the domain name. - * - * @return string the url string - */ -function url_string($skip_ajax = false) -{ - return mw()->url_manager->string($skip_ajax); -} - -function url_title($text) -{ - return mw()->url_manager->slug($text); -} - -function url_param($param, $skip_ajax = false) -{ - return mw()->url_manager->param($param, $skip_ajax); -} - -function url_set_param($param, $value) -{ - return site_url(mw()->url_manager->param_set($param, $value)); -} - -function url_unset_param($param) -{ - return site_url(mw()->url_manager->param_unset($param)); -} - -/** - * Gets the data from the cache. - * - * If data is not found it return false - * - * - * @example - * - * - * $cache_id = 'my_cache_'.crc32($sql_query_string); - * $cache_content = cache_get_content($cache_id, 'my_cache_group'); - * - * - * - * @param string $cache_id id of the cache - * @param string $cache_group (default is 'global') - this is the subfolder in the cache dir. - * @param bool $expiration_in_seconds You can pass custom cache object or leave false. - * - * @return mixed returns array of cached data or false - */ -function cache_get($cache_id, $cache_group = 'global', $expiration = false) -{ - return mw()->cache_manager->get($cache_id, $cache_group, $expiration); -} - -/** - * Stores your data in the cache. - * It can store any value that can be serialized, such as strings, array, etc. - * - * @example - * - * //store custom data in cache - * $data = array('something' => 'some_value'); - * $cache_id = 'my_cache_id'; - * $cache_content = cache_save($data, $cache_id, 'my_cache_group'); - * - * - * @param mixed $data_to_cache - * your data, anything that can be serialized - * @param string $cache_id - * id of the cache, you must define it because you will use it later to - * retrieve the cached content. - * @param string $cache_group - * (default is 'global') - this is the subfolder in the cache dir. - * @param int $expiration_in_minutes - * - * @return bool - */ -function cache_save($data_to_cache, $cache_id, $cache_group = 'global', $expiration_in_minutes = false) -{ - return mw()->cache_manager->save($data_to_cache, $cache_id, $cache_group, $expiration_in_minutes); -} - -api_expose_admin('clearcache'); -/** - * Clears all cache data. - * - * @example - * - * //delete all cache - * clearcache(); - * - * - * @return bool - */ -function clearcache() -{ - mw()->cache_manager->clear(); - mw()->template->clear_cache(); - $empty_folder = userfiles_path() . 'cache' . DS; - - if (is_dir($empty_folder)) { - rmdir_recursive($empty_folder, true); - } - - if (!is_dir($empty_folder)) { - mkdir_recursive($empty_folder); - } - - $empty_folder = mw_cache_path().'composer'; - if (is_dir($empty_folder)) { - rmdir_recursive($empty_folder, false); - } - if (!is_dir($empty_folder)) { - mkdir_recursive($empty_folder); - } - return true; -} - -/** - * Prints cache debug information. - * - * @return array - * - * @example - * - * //get cache items info - * $cached_items = cache_debug(); - * print_r($cached_items); - * - */ -function cache_debug() -{ - return mw()->cache_manager->debug(); -} - -/** - * Deletes cache for given $cache_group recursively. - * - * @param string $cache_group - * (default is 'global') - this is the subfolder in the cache dir. - * - * @return bool - * - * @example - * - * //delete the cache for the content - * cache_clear("content"); - * - * //delete the cache for the content with id 1 - * cache_clear("content/1"); - * - * //delete the cache for users - * cache_clear("users"); - * - * //delete the cache for your custom table eg. my_table - * cache_clear("my_table"); - * - */ -function cache_clear($cache_group = 'global') -{ - return mw()->cache_manager->delete($cache_group); -} - -//same as cache_clear -function cache_delete($cache_group = 'global') -{ - return mw()->cache_manager->delete($cache_group); -} - - -if (!function_exists('is_cli')) { - function is_cli() - { - static $is; - if ($is !== null) { - return $is; - } - if (function_exists('php_sapi_name') and - php_sapi_name() === 'apache2handler' - ) { - $is = false; - return false; - } - - - if ( - defined('STDIN') - or php_sapi_name() === 'cli' - or php_sapi_name() === 'cli-server' - or array_key_exists('SHELL', $_ENV) - - ) { - $is = true; - return true; - } - - - $is = false; - return false; - } -} - - -if (!function_exists('is_https')) { - function is_https() - { - if (isset($_SERVER['HTTPS']) and (strtolower($_SERVER['HTTPS']) == 'on')) { - return true; - } else if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and (strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https')) { - return true; - } - return false; - } -} -if (!function_exists('is_closure')) { - function is_closure($t) - { - return is_object($t) or ($t instanceof \Closure); - } -} - -if (!function_exists('collection_to_array')) { - function collection_to_array($data) - { - if ( - $data instanceof \Illuminate\Database\Eloquent\Collection - or $data instanceof \Illuminate\Support\Collection - or $data instanceof \Illuminate\Database\Eloquent\Model - ) { - return $data->toArray(); - } - return $data; - - } -} - - -function str_replace_bulk($search, $replace, $subject, &$count = null) -{ - // Assumes $search and $replace are equal sized arrays - $lookup = array_combine($search, $replace); - $result = preg_replace_callback( - '/' . - implode('|', array_map( - function ($s) { - return preg_quote($s, '/'); - }, - $search - )) . - '/', - function ($matches) use ($lookup) { - return $lookup[$matches[0]]; - }, - $subject, - -1, - $count - ); - if ( - $result !== null || - count($search) < 2 // avoid infinite recursion on error - ) { - return $result; - } - // With a large number of replacements (> ~2500?), - // PHP bails because the regular expression is too large. - // Split the search and replacements in half and process each separately. - // NOTE: replacements within replacements may now occur, indeterminately. - $split = (int)(count($search) / 2); - $result = str_replace_bulk( - array_slice($search, $split), - array_slice($replace, $split), - str_replace_bulk( - array_slice($search, 0, $split), - array_slice($replace, 0, $split), - $subject, - $count1 - ), - $count2 - ); - $count = $count1 + $count2; - return $result; -} \ No newline at end of file diff --git a/update/src/Microweber/functions/config.php b/update/src/Microweber/functions/config.php deleted file mode 100644 index a879f11e..00000000 --- a/update/src/Microweber/functions/config.php +++ /dev/null @@ -1,31 +0,0 @@ - $item) { - if (is_array($item) and !empty($item)) { - foreach ($item as $config_k => $config) { - if (is_string($config_k)) { - if (is_numeric($config)) { - $config = intval($config); - } - Config::set($k . '.' . $config_k, $config); - $save_configs[] = $k; - } - } - } - } - if (!empty($save_configs)) { - Config::save($save_configs); - return array('success' => 'Config is changed!'); - - } -}); diff --git a/update/src/Microweber/routes.php b/update/src/Microweber/routes.php deleted file mode 100644 index 2cf5817b..00000000 --- a/update/src/Microweber/routes.php +++ /dev/null @@ -1,53 +0,0 @@ - '\Microweber\App\Http\Middleware\SessionlessMiddleware', 'namespace' => '\Microweber\Controllers'], function () { - Route::any('/apijs', 'JsCompileController@apijs'); - Route::any('apijs/{all}', array('as' => 'apijs', 'uses' => 'JsCompileController@apijs'))->where('all', '.*'); - Route::any('/apijs_settings', 'JsCompileController@apijs_settings'); - Route::any('/apijs_liveedit', 'JsCompileController@apijs_liveedit'); - - Route::any('api_nosession/{all}', array('as' => 'api', 'uses' => 'DefaultController@api'))->where('all', '.*'); - Route::any('/api_nosession', 'DefaultController@api'); - Route::any('/favicon.ico', function () { - return; - }); - -}); - -Route::group(['namespace' => '\Microweber\Controllers'], function () { - Route::any('/', 'DefaultController@index'); - - Route::any('/api', 'DefaultController@api'); - Route::any('/api/{slug}', 'DefaultController@api'); - - - $custom_admin_url = \Config::get('microweber.admin_url'); - $admin_url = 'admin'; - if($custom_admin_url){ - $admin_url = $custom_admin_url; - } - - Route::any('/'.$admin_url, 'AdminController@index'); - Route::any($admin_url, array('as' => 'admin', 'uses' => 'AdminController@index')); - - Route::any($admin_url.'/{all}', array('as' => 'admin', 'uses' => 'AdminController@index'))->where('all', '.*'); - - - Route::any('api/{all}', array('as' => 'api', 'uses' => 'DefaultController@api'))->where('all', '.*'); - Route::any('api_html/{all}', array('as' => 'api', 'uses' => 'DefaultController@api_html'))->where('all', '.*'); - Route::any('/api_html', 'DefaultController@api_html'); - // - Route::any('/editor_tools', 'DefaultController@editor_tools'); - Route::any('editor_tools/{all}', array('as' => 'editor_tools', 'uses' => 'DefaultController@editor_tools'))->where('all', '.*'); - Route::any('/plupload', 'ModuleController@plupload'); - Route::any('plupload/{all}', array('as' => 'plupload', 'uses' => 'ModuleController@plupload'))->where('all', '.*'); - //Route::any('/module/', 'ModuleController@index'); - //Route::any('module/{all}', array('as' => 'module', 'uses' => 'ModuleController@index'))->where('all', '.*'); - Route::any('/module/', 'DefaultController@module'); - Route::any('module/{all}', array('as' => 'module', 'uses' => 'DefaultController@module'))->where('all', '.*'); - Route::any('robots.txt', 'DefaultController@robotstxt'); - Route::any('sitemap.xml', 'DefaultController@sitemapxml'); - Route::any('rss', 'DefaultController@rss'); - Route::any('{all}', array('as' => 'all', 'uses' => 'DefaultController@index'))->where('all', '.*'); - -}); diff --git a/update/src/Microweber/tests/CheckoutTest.php b/update/src/Microweber/tests/CheckoutTest.php deleted file mode 100644 index 1f2e2ec3..00000000 --- a/update/src/Microweber/tests/CheckoutTest.php +++ /dev/null @@ -1,141 +0,0 @@ - $title, - 'content_type' => 'product', - 'subtype' => 'product', - 'custom_fields' => array( - array('type' => 'dropdown', 'name' => 'Color', 'value' => array('Purple', 'Blue')), - array('type' => 'price', 'name' => 'Price', 'value' => '9.99'), - - ), - 'is_active' => 1,); - - - $saved_id = save_content($params); - $get = get_content_by_id($saved_id); - - $this->assertEquals($saved_id, ($get['id'])); - self::$content_id = $saved_id; - - $add_to_cart = array( - 'content_id' => self::$content_id, - 'price' => $productPrice, - ); - $cart_add = update_cart($add_to_cart); - - $this->assertEquals(isset($cart_add['success']), true); - $this->assertEquals(isset($cart_add['product']), true); - $this->assertEquals($cart_add['product']['price'], $productPrice); - } - - public function testCheckout() - { - $this->_addProductToCart('Product 1'); - $this->_addProductToCart('Product 2'); - $this->_addProductToCart('Product 3'); - $this->_addProductToCart('Product 4'); - - $data['option_value'] = 'y'; - $data['option_key'] = 'order_email_enabled'; - $data['option_group'] = 'orders'; - $save = save_option($data); - - $checkoutDetails = array(); - $checkoutDetails['email'] = 'client@microweber.com'; - $checkoutDetails['first_name'] = 'Client'; - $checkoutDetails['last_name'] = 'Microweber'; - $checkoutDetails['phone'] = '08812345678'; - $checkoutDetails['address'] = 'Business Park, Mladost 4'; - $checkoutDetails['city'] = 'Sofia'; - $checkoutDetails['state'] = 'Sofia City'; - $checkoutDetails['country'] = 'Bulgaria'; - $checkoutDetails['zip'] = '1000'; - - $checkout = new CheckoutManager(); - $checkoutStatus = $checkout->checkout($checkoutDetails); - - $this->assertArrayHasKey('success', $checkoutStatus); - $this->assertArrayHasKey('id', $checkoutStatus); - $this->assertArrayHasKey('order_completed', $checkoutStatus); - $this->assertArrayHasKey('amount', $checkoutStatus); - $this->assertArrayHasKey('currency', $checkoutStatus); - $this->assertArrayHasKey('order_status', $checkoutStatus); - - $checkEmailContent = MailSender::$last_send['content']; - - $findFirstName = false; - if (strpos($checkEmailContent, $checkoutDetails['first_name']) !== false) { - $findFirstName = true; - } - - $findLastName = false; - if (strpos($checkEmailContent, $checkoutDetails['last_name']) !== false) { - $findLastName = true; - } - - $findEmail = false; - if (strpos($checkEmailContent, $checkoutDetails['email']) !== false) { - $findEmail = true; - } - - $findPhone = false; - if (strpos($checkEmailContent, $checkoutDetails['phone']) !== false) { - $findPhone = true; - } - - $findCity = false; - if (strpos($checkEmailContent, $checkoutDetails['city']) !== false) { - $findCity = true; - } - - $findZip = false; - if (strpos($checkEmailContent, $checkoutDetails['zip']) !== false) { - $findZip = true; - } - - $findState = false; - if (strpos($checkEmailContent, $checkoutDetails['state']) !== false) { - $findState = true; - } - - $findCountry = false; - if (strpos($checkEmailContent, $checkoutDetails['country']) !== false) { - $findCountry = true; - } - - $findAddress = false; - if (strpos($checkEmailContent, $checkoutDetails['address']) !== false) { - $findAddress = true; - } - - $this->assertEquals(true, $findFirstName); - $this->assertEquals(true, $findLastName); - $this->assertEquals(true, $findEmail); - $this->assertEquals(true, $findPhone); - $this->assertEquals(true, $findCity); - $this->assertEquals(true, $findZip); - $this->assertEquals(true, $findState); - $this->assertEquals(true, $findCountry); - $this->assertEquals(true, $findAddress); - - } -} diff --git a/update/src/Microweber/tests/CustomFieldsTemplatesTest.php b/update/src/Microweber/tests/CustomFieldsTemplatesTest.php new file mode 100644 index 00000000..966c0f50 --- /dev/null +++ b/update/src/Microweber/tests/CustomFieldsTemplatesTest.php @@ -0,0 +1,250 @@ +database_manager->extended_save_set_permission(true); + } + + public function testCustomTemplate() + { + // Make new custom template + $templateCustomFields = mw()->template->dir() + . 'modules' . DS + . 'custom_fields' .DS + . 'templates' . DS + . 'unit-test'; + mkdir_recursive($templateCustomFields); + + $templateCustomFieldsIndex = ' + + + + + + + + + + + + + + '; + + file_put_contents($templateCustomFields . DS . 'index.php', $templateCustomFieldsIndex); + file_put_contents($templateCustomFields . DS . 'text.php', ''); + + $rel = 'module'; + $rel_id = 'layouts-' . rand(1111, 9999) . '-contact-form'; + $fields_csv_str = 'text, email'; + $fields_csv_array = explode(',', $fields_csv_str); + + $fields = mw()->fields_manager->make_default($rel, $rel_id, $fields_csv_str); + foreach ($fields as $key => $field_id) { + + $option = array(); + $option['option_value'] = 'unit-test/index.php'; + $option['option_key'] = 'data-template'; + $option['option_group'] = $field_id; + $save = save_option($option); + + $output = mw()->fields_manager->make($field_id); + $field = mw()->fields_manager->get_by_id($field_id); + + + if ($field['type'] == 'text') { + $checkInputClass = false; + if (strpos($output, 'class="unit-test"') !== false) { + $checkInputClass = true; + } + $this->assertEquals(true, $checkInputClass); + } + + if ($field['type'] == 'email') { + $checkInputClass = false; + if (strpos($output, 'class="mw-ui-field"') !== false) { + $checkInputClass = true; + } + $this->assertEquals(true, $checkInputClass); + } + + } + + unlink($templateCustomFields . DS . 'index.php'); + unlink($templateCustomFields . DS . 'text.php'); + rmdir($templateCustomFields); + + } + + public function testBootstrapTempalte() + { + $rel = 'module'; + $rel_id = 'layouts-' . rand(1111, 9999) . '-contact-form'; + $fields_csv_str = 'text, dropdown, number, phone, website, email, fileupload, message'; + $fields_csv_array = explode(',', $fields_csv_str); + + $fields = mw()->fields_manager->make_default($rel, $rel_id, $fields_csv_str); + foreach ($fields as $key => $field_id) { + + $option = array(); + $option['option_value'] = 'bootstrap3/index.php'; + $option['option_key'] = 'data-template'; + $option['option_group'] = $field_id; + $save = save_option($option); + + $output = mw()->fields_manager->make($field_id); + $field = mw()->fields_manager->get_by_id($field_id); + + $checkRow = false; + if (strpos($output, 'class="col-md-12') !== false) { + $checkRow = true; + } + if (!$checkRow) { + // var_dump($field); + //var_dump($output); + // die(); + // echo $field['type'] . PHP_EOL; + } + $this->assertEquals(true, $checkRow); + + $checkInputClass = false; + if (strpos($output, 'class="form-control') !== false) { + $checkInputClass = true; + } + if (!$checkInputClass) { + //var_dump($output); + //echo $field['type'] . PHP_EOL; + } + + $this->assertEquals(true, $checkInputClass); + + $checkFormGroup = false; + if (strpos($output, 'class="form-group') !== false) { + $checkFormGroup = true; + } + if (!$checkFormGroup) { + // echo $field['type'] . PHP_EOL; + } + $this->assertEquals(true, $checkFormGroup); + + } + } + + public function testBootstrapNewTempalte() + { + $rel = 'module'; + $rel_id = 'layouts-' . rand(1111, 9999) . '-contact-form'; + $fields_csv_str = 'text, dropdown, number, phone, website, email, fileupload, message'; + $fields_csv_array = explode(',', $fields_csv_str); + + $fields = mw()->fields_manager->make_default($rel, $rel_id, $fields_csv_str); + foreach ($fields as $key => $field_id) { + + $option = array(); + $option['option_value'] = 'bootstrap4/index.php'; + $option['option_key'] = 'data-template'; + $option['option_group'] = $field_id; + $save = save_option($option); + + $output = mw()->fields_manager->make($field_id); + $field = mw()->fields_manager->get_by_id($field_id); + + $checkRow = false; + if (strpos($output, 'class="col-12') !== false) { + $checkRow = true; + } + if (!$checkRow) { + // echo $field['type'] . PHP_EOL; + } + $this->assertEquals(true, $checkRow); + + $checkInputClass = false; + if (strpos($output, 'class="form-control') !== false) { + $checkInputClass = true; + } + if (!$checkInputClass) { + // echo $field['type'] . PHP_EOL; + } + + $this->assertEquals(true, $checkInputClass); + + $checkFormGroup = false; + if (strpos($output, 'class="form-group') !== false) { + $checkFormGroup = true; + } + if (!$checkFormGroup) { + // echo $field['type'] . PHP_EOL; + } + $this->assertEquals(true, $checkFormGroup); + + } + } + + public function testMwUiTempalte() + { + $rel = 'module'; + $rel_id = 'layouts-' . rand(1111, 9999) . '-contact-form'; + $fields_csv_str = 'text, dropdown, number, phone, website, email, fileupload, message'; + $fields_csv_array = explode(',', $fields_csv_str); + + $fields = mw()->fields_manager->make_default($rel, $rel_id, $fields_csv_str); + foreach ($fields as $key => $field_id) { + + $option = array(); + $option['option_value'] = 'mw-ui/index.php'; + $option['option_key'] = 'data-template'; + $option['option_group'] = $field_id; + $save = save_option($option); + + $output = mw()->fields_manager->make($field_id); + $field = mw()->fields_manager->get_by_id($field_id); + + $checkRow = false; + if (strpos($output, 'class="mw-flex-col-md-12') !== false) { + $checkRow = true; + } + if (!$checkRow) { + // echo $field['type'] . PHP_EOL; + } + + $this->assertEquals(true, $checkRow); + + + $checkInputClass = false; + if (strpos($output, 'class="mw-ui-field') !== false) { + $checkInputClass = true; + } + if (!$checkInputClass) { + // echo $field['type'] . PHP_EOL; + } + $this->assertEquals(true, $checkInputClass); + + $checkFormGroup = false; + if (strpos($output, 'class="mw-ui-controls') !== false) { + $checkFormGroup = true; + } + if (!$checkFormGroup) { + // echo $field['type'] . PHP_EOL; + } + + $this->assertEquals(true, $checkFormGroup); + } + } +} \ No newline at end of file diff --git a/update/src/Microweber/tests/EventTest.php b/update/src/Microweber/tests/EventTest.php deleted file mode 100644 index 36d650ab..00000000 --- a/update/src/Microweber/tests/EventTest.php +++ /dev/null @@ -1,29 +0,0 @@ -assertArrayHasKey('wow1', $params); - }); - - event_trigger('some_event', array('wow1'=>'waw!1')); - - - event_bind('some_event2', function($params) use ($unitTest) { - $unitTest->assertArrayHasKey('wow2', $params); - }); - - event_trigger('some_event2', array('wow2'=>'waw!2')); - } -} \ No newline at end of file diff --git a/update/src/Microweber/tests/MailSenderTest.php b/update/src/Microweber/tests/MailSenderTest.php deleted file mode 100644 index 986056be..00000000 --- a/update/src/Microweber/tests/MailSenderTest.php +++ /dev/null @@ -1,42 +0,0 @@ -setEmailTo($to); - $mail->setEmailSubject($subject); - $mail->setEmailReplyTo($replyTo); - $mail->setEmailMessage($content); - $mail->setEmailFrom($from); - $mail->setEmailFromName($fromName); - $mail->send(); - - $checkEmailContent = MailSender::$last_send; - - $this->assertSame($checkEmailContent['content'], $content); - $this->assertSame($checkEmailContent['from_name'], $fromName); - $this->assertSame($checkEmailContent['from'], $from); - $this->assertSame($checkEmailContent['to'], $to); - $this->assertSame($checkEmailContent['subject'], $subject); - } - -} \ No newline at end of file diff --git a/update/src/Microweber/tests/TestCase.php b/update/src/Microweber/tests/TestCase.php deleted file mode 100644 index 2ba6945c..00000000 --- a/update/src/Microweber/tests/TestCase.php +++ /dev/null @@ -1,180 +0,0 @@ - 0, - 'compile_assets' => 0, - 'install_default_template' => 'default', - 'install_default_template_content' => 1, - );" - ); - - $app = require __DIR__ . '/../../../bootstrap/app.php'; - $app->make('Illuminate\Contracts\Console\Kernel')->bootstrap(); - // $app['env'] = $testing_env_name; - $environment = $app->environment(); - - $this->assertEquals(true, is_dir($config_folder)); - - $app->detectEnvironment(function () use ($testing_env_name) { - return $testing_env_name; - }); - - $environment = $app->environment(); - $this->sqlite_file = storage_path() . '/phpunit.' . $environment . '.sqlite'; - - - if (is_file($this->sqlite_file)) { - // @unlink($this->sqlite_file); - } - - - - - $db_driver = env('DB_DRIVER') ? env('DB_DRIVER') : 'sqlite' ; - $db_host = env('DB_HOST', ''); - $db_port = env('DB_PORT', ''); - - - - - $db_user = env('DB_USERNAME', ''); - $db_pass = env('DB_PASSWORD', ''); - $db_prefix = env('DB_PREFIX', ''); - $db_name = env('DB_DATABASE', $this->sqlite_file); - - - // $db_name = $this->sqlite_file; - if ($test_env_from_conf) { - $dbEngines = \Config::get('database.connections'); - $defaultDbEngine = \Config::get('database.default'); - $default = \Config::get('database'); - - if ($defaultDbEngine) { - $db_driver = $defaultDbEngine; - if (isset($dbEngines[$defaultDbEngine]) and is_array($dbEngines[$defaultDbEngine])) { - $config = $dbEngines[$defaultDbEngine]; - if (isset($config['database'])) { - $db_name = $config['database']; - } - if (isset($config['host'])) { - $db_host = $config['host']; - } - if (isset($config['host'])) { - $db_host = $config['host']; - } - if (isset($config['username'])) { - $db_user = $config['username']; - } - if (isset($config['password'])) { - $db_pass = $config['password']; - } - if (isset($config['prefix'])) { - $db_prefix = $config['prefix']; - } - } - } - - } - - // make fresh install - $install_params = array( - - 'username' => 'test', - 'password' => 'test', - 'email' => 'test@example.com', - 'db_driver' => $db_driver, - 'db_host' => $db_host, - 'db_user' => $db_user, - 'db_pass' => $db_pass, - 'db_name' => $db_name, - 'prefix' => $db_prefix, - // 'db_name' => ':memory:', - '--env' => $environment, - ); - - - - - $is_installed = mw_is_installed(); - - if (!$is_installed) { - - $install = \Artisan::call('microweber:install', $install_params); - $this->assertEquals(0, $install); - - // Clear caches - \Artisan::call('config:cache'); - \Artisan::call('config:clear'); - \Artisan::call('cache:clear'); - - $is_installed = mw_is_installed(); - $this->assertEquals(1, $is_installed); - } - - return $app; - } - - public static function setUpBeforeClass() - { - - $test_env_from_conf = env('APP_ENV_TEST_FROM_CONFIG'); - if ($test_env_from_conf) { - $testing_env_name = $testEnvironment = $test_env_from_conf; - putenv("APP_ENV=$testing_env_name"); - } - parent::setUpBeforeClass(); - - } - - -} - diff --git a/update/src/Microweber/tests/UserTest.php b/update/src/Microweber/tests/UserTest.php deleted file mode 100644 index 56a66ca6..00000000 --- a/update/src/Microweber/tests/UserTest.php +++ /dev/null @@ -1,290 +0,0 @@ -_disableCaptcha(); - $this->_enableUserRegistration(); - $this->_disableRegistrationApproval(); - - $randomInt = rand(1111, 9999); - $password = md5($randomInt); - - // Test simple user registration - $newUser = array(); - $newUser['username'] = 'bobi_' . $randomInt; - $newUser['email'] = $newUser['username'] . '@microweber.com'; - $newUser['password'] = $password; - $newUser['password_confirm'] = $password; - - $userManager = new UserManager(); - $registerStatus = $userManager->register($newUser); - - $this->assertArrayHasKey('success', $registerStatus); - - self::$_username = $newUser['username']; - self::$_password = $newUser['password']; - self::$_email = $newUser['email']; - - } - - /* - public function testEmailWrongRegistration() - { - $data['option_value'] = 'y'; - $data['option_key'] = 'captcha_disabled'; - $data['option_group'] = 'users'; - $save = save_option($data); - - $randomInt = rand(1111, 9999); - $password = md5($randomInt); - - // Test wrong email user registration - $newUser = array(); - // $newUser['username'] = 'bobi_'.$randomInt; - $newUser['email'] = 'wrong-email'; - $newUser['password'] = $password; - $newUser['password_confirm'] = $password; - - $userManager = new UserManager(); - $registerStatus = $userManager->register($newUser); - - $this->assertArrayHasKey('success', $registerStatus); - } - */ - - public function testLogin() - { - $this->_disableCaptcha(); - $this->_disableRegistrationApproval(); - - $loginDetails = array(); - $loginDetails['username'] = self::$_username; - $loginDetails['password'] = self::$_password; - - $userManager = new UserManager(); - $loginStatus = $userManager->login($loginDetails); - - $this->assertArrayHasKey('success', $loginStatus); - - } - - public function testWrongPasswordLogin() - { - $this->_disableCaptcha(); - $this->_disableRegistrationApproval(); - - $loginDetails = array(); - $loginDetails['username'] = self::$_username; - $loginDetails['password'] = 'microweber-best'; - - $userManager = new UserManager(); - $loginStatus = $userManager->login($loginDetails); - - $this->assertArrayHasKey('error', $loginStatus); - - } - - public function testWrongUsernameLogin() - { - $this->_disableCaptcha(); - $this->_disableRegistrationApproval(); - - $loginDetails = array(); - $loginDetails['username'] = 'microweber-make-money'; - $loginDetails['password'] = 'microweber-is-the-best'; - - $userManager = new UserManager(); - $loginStatus = $userManager->login($loginDetails); - - $this->assertArrayHasKey('error', $loginStatus); - - } - - public function testWrongEmailLogin() - { - $this->_disableCaptcha(); - $this->_disableRegistrationApproval(); - - $loginDetails = array(); - $loginDetails['email'] = 'microweber-make-happy'; - $loginDetails['password'] = 'microweber-is-the-best'; - - $userManager = new UserManager(); - $loginStatus = $userManager->login($loginDetails); - - $this->assertArrayHasKey('error', $loginStatus); - - } - - public function testForgotPassword() - { - $this->_disableCaptcha(); - - $userDetails = array(); - $userDetails['username'] = self::$_username; - $userDetails['email'] = self::$_email; - - $userManager = new UserManager(); - $requestStatus = $userManager->send_forgot_password($userDetails); - $this->assertArrayHasKey('success', $requestStatus); - - $checkEmailContent = MailSender::$last_send['content']; - - $findPasswordResetLink = false; - if (strpos($checkEmailContent, 'reset_password_link=') !== false) { - $findPasswordResetLink = true; - } - $findUsername = false; - if (strpos($checkEmailContent, $userDetails['username']) !== false) { - $findUsername = true; - } - $findIpAddress = false; - if (strpos($checkEmailContent, MW_USER_IP) !== false) { - $findIpAddress = true; - } - - $this->assertEquals(true, $findPasswordResetLink); - $this->assertEquals(true, $findUsername); - $this->assertEquals(true, $findIpAddress); - - } - - public function testDisableUserRegistration() - { - $this->_disableUserRegistration(); - - $randomInt = rand(1111, 9999); - $password = md5($randomInt); - - // Test simple user registration - $newUser = array(); - $newUser['username'] = 'bobi_' . $randomInt; - $newUser['email'] = $newUser['username'] . '@microweber.com'; - $newUser['password'] = $password; - $newUser['password_confirm'] = $password; - - $userManager = new UserManager(); - $registerStatus = $userManager->register($newUser); - - $this->assertArrayHasKey('error', $registerStatus); - } - - public function testUserApprovalRegistration() - { - $this->_enableUserRegistration(); - $this->_enableRegistrationApproval(); - $this->_enableRegisterEmail(); - - $randomInt = rand(1111, 9999); - $password = md5($randomInt); - - // Test simple user registration - $newUser = array(); - $newUser['username'] = 'bobi_' . $randomInt; - $newUser['email'] = $newUser['username'] . '@microweber.com'; - $newUser['password'] = $password; - $newUser['password_confirm'] = $password; - - $userManager = new UserManager(); - $registerStatus = $userManager->register($newUser); - - $this->assertArrayHasKey('success', $registerStatus); - - $loginDetails = array(); - $loginDetails['username'] = $newUser['username']; - $loginDetails['password'] = $newUser['password']; - - $userManager = new UserManager(); - $loginStatus = $userManager->login($loginDetails); - - $this->assertArrayHasKey('error', $loginStatus); - - if (strpos($loginStatus['error'], 'awaiting approval') !== false) { - $this->assertEquals(true, true); - } else { - $this->assertEquals(true, false); - } - - $checkEmailContent = MailSender::$last_send['content']; - - $findVerifyEmailLink = false; - if (strpos($checkEmailContent, 'verify_email_link?key=') !== false) { - $findVerifyEmailLink = true; - } - - $findUsername = false; - if (strpos($checkEmailContent, $loginDetails['username']) !== false) { - $findUsername = true; - } - - $this->assertEquals(true, $findVerifyEmailLink); - $this->assertEquals(true, $findUsername); - } - -} \ No newline at end of file diff --git a/update/src/Microweber/tests/ZBackupV2Test.php b/update/src/Microweber/tests/ZBackupV2Test.php index 1e9f6dd3..dd721b9c 100644 --- a/update/src/Microweber/tests/ZBackupV2Test.php +++ b/update/src/Microweber/tests/ZBackupV2Test.php @@ -140,7 +140,55 @@ public function testImportedEncoding() { } } } - + + public function testImportSampleCsvFile() { + + $sample = userfiles_path() . '/modules/admin/backup_v2/samples/sample.csv'; + $sample = normalize_path($sample, false); + + $manager = new BackupManager(); + $manager->setImportFile($sample); + $manager->setImportBatch(false); + + $importStatus = $manager->startImport(); + + $this->assertSame(true, $importStatus['done']); + $this->assertSame(100, $importStatus['precentage']); + $this->assertSame($importStatus['current_step'], $importStatus['total_steps']); + } + + public function testImportSampleJsonFile() { + + $sample = userfiles_path() . '/modules/admin/backup_v2/samples/sample.json'; + $sample = normalize_path($sample, false); + + $manager = new BackupManager(); + $manager->setImportFile($sample); + $manager->setImportBatch(false); + + $importStatus = $manager->startImport(); + + $this->assertSame(true, $importStatus['done']); + $this->assertSame(100, $importStatus['precentage']); + $this->assertSame($importStatus['current_step'], $importStatus['total_steps']); + } + + public function testImportSampleXlsxFile() { + + $sample = userfiles_path() . '/modules/admin/backup_v2/samples/sample.xlsx'; + $sample = normalize_path($sample, false); + + $manager = new BackupManager(); + $manager->setImportFile($sample); + $manager->setImportBatch(false); + + $importStatus = $manager->startImport(); + + $this->assertSame(true, $importStatus['done']); + $this->assertSame(100, $importStatus['precentage']); + $this->assertSame($importStatus['current_step'], $importStatus['total_steps']); + } + public function testImportWrongFile() { $manager = new BackupManager(); diff --git a/update/userfiles/modules/admin/backup_v2/js/backup-export.js b/update/userfiles/modules/admin/backup_v2/js/backup-export.js deleted file mode 100644 index 06fd8a17..00000000 --- a/update/userfiles/modules/admin/backup_v2/js/backup-export.js +++ /dev/null @@ -1,198 +0,0 @@ -mw.backup_export = { - - select_all: function() { - exportContentSelector.select(exportContentSelector.options.data); - $('.js-export-items').prop('checked','true'); - }, - - unselect_all: function() { - exportContentSelector.unselectAll(); - $('.js-export-items').removeAttr('checked'); - }, - - choice: function() { - - var modalContent = '' - + '

Select format file

' - + 'Select format file you want to export.' - + '
' - + '' - + '
' - + '

Create full backup of your site

' - + 'Use the button to export full backup of your website with all data.' - + '
' - + '
' - + '
' - + '
' - + '     Create Full Backup' - + '
' - + '
' - + '
' - + '
' - + '
' - + '
' - + '

Select items to export

' - + 'Select pages, categories, posts etc. you want to export.' - + '
' - + '
' - + ' Select all' - + '   Unselect all

' - + '
' - - + '
' - + 'Select types of data you want to export.' - + '
' - + '
' - - + '  ' - - + '  ' - - + '  ' - - + '  ' - - + '

' - - + '' - + '

' - + '
' - + '
' - + ' Export selected data' - + '
' - + '
' - + '
' - + '
' - + '



'; - - mw.modal({ - content: modalContent, - title: 'Select data wich want to export', - id: 'mw_backup_export_modal' - }); - - $.get(mw.settings.api_url + "content/get_admin_js_tree_json", function (treeData) { - - var selectedPages = []; - var selectedCategories = []; - - window.exportContentSelector = new mw.tree({ - data: treeData, - selectable: true, - multiPageSelect: true, - element: '#quick-parent-selector-tree', - saveState:false - }); - - }); - }, - - export_selected: function(manifest) { - - mw.backup_export.get_log_check('start'); - - manifest.format = $('.js-export-format').val(); - - $.get(mw.settings.api_url+'Microweber/Utils/BackupV2/export', manifest , function(exportData) { - - if (typeof(exportData.data.download) !== 'undefined') { - mw.backup_export.get_log_check('stop'); - $('.js-export-log').html(' Download your backup'); - mw.notification.success(exportData.success); - } else { - mw.backup_export.export_selected(manifest); - } - // console.log(exportData.data.download); - }); - }, - - get_log_check: function(action = 'start') { - - // mw.notification.success("Export started..."); - - var importLogInterval = setInterval(function() { - mw.backup_export.get_log(); - }, 5000); - - if (action == 'stop') { - for(i=0; i<10000; i++) { - window.clearInterval(i); - } - } - - }, - - get_log: function() { - $.ajax({ - url: userfilesUrl + 'backup-export-session.log', - success: function (data) { - data = data.replace(/\n/g, "
"); - $('.js-export-log').html('
' + data + '

'); - }, - error: function() { - $('.js-export-log').html('Error opening log file.'); - } - }); - }, - - export_fullbackup_start: function() { - $('.js-export-log').html('Generating full backup...'); - mw.backup_export.export_selected('all&format=' + $('.js-export-format').val() + '&include_media=' + $('.js-export-include-media').is(":checked")); - }, - - export_start: function () { - - var selected_content = exportContentSelector.options.selectedData; - var selected_export_items = exportContentSelector.options.selectedData; - - var selected_export_items = []; - - /* look for all checkboes that have a class 'chk' attached to it and check if it was checked */ - $(".js-export-items:checked").each(function() { - selected_export_items.push($(this).val()); - }); - - var selected; - selected = selected_export_items.join(',') ; - - if(selected.length == 0 && selected_content.length == 0){ - Alert("Please check at least one of the checkboxes"); - return; - } - - var export_manifest = {}; - export_manifest.content_ids = []; - export_manifest.categories_ids = []; - export_manifest.items = selected; - - selected_content.forEach(function(item, i){ - if(item.type == 'category' ){ - export_manifest.categories_ids.push(item.id); - } else { - export_manifest.content_ids.push(item.id); - } - }); - - $('.js-export-log').html('Generating backup...'); - - mw.backup_export.export_selected(export_manifest); - mw.log(export_manifest); - } -} \ No newline at end of file diff --git a/update/userfiles/modules/admin/backup_v2/js/backup-import.js b/update/userfiles/modules/admin/backup_v2/js/backup-import.js deleted file mode 100644 index 2dab2d5f..00000000 --- a/update/userfiles/modules/admin/backup_v2/js/backup-import.js +++ /dev/null @@ -1,145 +0,0 @@ -// JavaScript Document -mw.require('forms.js'); -mw.require('tools.js'); - -mw.backup_import = { - - upload: function(src) { - data = {} - data.src=src; - $.post(mw.settings.api_url+'Microweber/Utils/BackupV2/upload', data , - function(msg) { - mw.reload_module('admin/backup_v2/manage'); - mw.notification.msg(msg, 5000); - }); - }, - - remove: function($id, $selector_to_hide) { - mw.tools.confirm(mw.msg.del, function() { - data = {} - data.id = $id; - $.post(mw.settings.api_url + 'Microweber/Utils/BackupV2/delete', data, function(resp) { - mw.notification.msg(resp); - if ($selector_to_hide != undefined) { - mw.reload_module('admin/backup_v2/manage'); - } - }); - }); - }, - - import: function(src) { - - var checked = ''; - - if (src.lastIndexOf('backup') >= 0) { - checked = 'checked="checked"'; - } - - if (src.lastIndexOf('mw_default_content') >= 0) { - checked = 'checked="checked"'; - } - - var importOptions = '
'+ - '

Import File Options

'+ - '
'+ - ''+ - '
Warning! If this option are marked, it will be replace all existing posts.'+ - '
'+ - ''+ - '
'+ - '

'+ - ''; - - mw.modal({ - height: 570, - content: importOptions, - title: importContentFromFileText, - id: 'mw_backup_import_modal' - }); - - data = {}; - data.id = src; - }, - - start_import_button: function (src) { - $('#mw_backup_import_modal').find('.backup-import-modal-log-progress').html('Loading file...'); - mw.backup_import.init_progress(1); - mw.backup_import.start_import(); - mw.backup_import.get_log_check('start'); - }, - - start_import: function () { - - data.overwrite_by_id = $('.js-backup-import-overwrite-by-id').is(":checked"); - - $.ajax({ - dataType: "json", - url: mw.settings.api_url+'Microweber/Utils/BackupV2/import', - data: data, - success: function(jsonData) { - if (jsonData.error) { - $('#backup-import-progressbar').remove(); - mw.backup_import.get_log_check('stop'); - $('#mw_backup_import_modal').find('.backup-import-modal-log').before('

Error!


' + jsonData.error); - return; - } - if (jsonData.done) { - mw.backup_import.get_progress(100); - mw.backup_import.get_log_check('stop'); - $('#mw_backup_import_modal').find('.backup-import-modal-log').before('

All data is imported successfully!

'); - return; - } else { - mw.backup_import.get_progress(jsonData.precentage); - mw.backup_import.start_import(); - } - } - }); - }, - - get_log_check: function(action = 'start') { - - var importLogInterval = setInterval(function() { - mw.backup_import.get_log(); - }, 2000); - - if (action == 'stop') { - for(i=0; i<10000; i++) { - window.clearInterval(i); - } - } - - }, - - get_progress: function(precent) { - $('.mw-ui-progress-bar').css('width', precent+'%'); - $('.mw-ui-progress-percent').html(precent); - }, - - init_progress: function(precent) { - var progressbar = '
'+ - '
'+ - '
'+ - '
Importing...
'+ - ''+precent+'%'+ - '
'+ - '
'+ - '
'; - $('#mw_backup_import_modal').find('.backup-import-modal-log-progress').html(progressbar); - }, - - get_log: function() { - $.ajax({ - url: userfilesUrl + 'backup-import-session.log', - success: function (data) { - data = data.replace(/\n/g, "
"); - $('#mw_backup_import_modal').find('.backup-import-modal-log').html(data); - }, - error: function() { - $('#mw_backup_import_modal').find('.backup-import-modal-log').html('Loading...'); - } - }); - } -} \ No newline at end of file diff --git a/update/userfiles/modules/admin/developer_tools/index.php b/update/userfiles/modules/admin/developer_tools/index.php deleted file mode 100644 index 31b2dee6..00000000 --- a/update/userfiles/modules/admin/developer_tools/index.php +++ /dev/null @@ -1,54 +0,0 @@ - - -update->get_licenses('count=1') ?> - - - - - -
- - -

- - - -

- - - -

- - - -

- = 0): ?> - - - - - - - - - -

- - -
- - - */ - - ?> - - - - -
-
-
-
- - - diff --git a/update/userfiles/modules/admin/developer_tools/package_manager/browse_packages.php b/update/userfiles/modules/admin/developer_tools/package_manager/browse_packages.php new file mode 100644 index 00000000..4ca1df2e --- /dev/null +++ b/update/userfiles/modules/admin/developer_tools/package_manager/browse_packages.php @@ -0,0 +1,279 @@ + + + +update->composer_search_packages($search_packages_params); +//$search_packages = mw()->update->composer_search_packages(); + + +$packages_by_type = array(); + + +if ($search_packages and is_array($search_packages)) { + foreach ($search_packages as $key => $item) { + if (!isset($packages_by_type[$item['type']])) { + $packages_by_type[$item['type']] = array(); + } + $packages_by_type[$item['type']][] = $item; + } +} + +if (isset($packages_by_type['microweber-core-update']) and !empty($packages_by_type['microweber-core-update'])) { + $core_update = $packages_by_type['microweber-core-update']; + unset($packages_by_type['microweber-core-update']); + +} + + +?> + +
+ +

+ +

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

+ + + + +
+ + + + + + + + + +
+
+ + + + + +
+
+ +
+
+ + + + +
+ + + + $pkitems): ?> + + + $item): ?> +
+ assign('item', $item); + $view->assign('no_img', true); + $view->assign('box_class', 'mw-ui-box-info '); + + + print $view->display(); + ?> +
+ + + + + + + + + + +
+ + +
+ + + + $pkitems): ?> +
+ +
+ $item): ?> +
+ assign('item', $item); + + print $view->display(); + ?> +
+ +
+ +
+ + + + + + +
+ No packages found. + +
+ + + + +
+
+ + + + + + + + +
+
+
diff --git a/update/userfiles/modules/admin/developer_tools/package_manager/confirm_install.php b/update/userfiles/modules/admin/developer_tools/package_manager/confirm_install.php new file mode 100644 index 00000000..797d77ac --- /dev/null +++ b/update/userfiles/modules/admin/developer_tools/package_manager/confirm_install.php @@ -0,0 +1,115 @@ + + + + + + + + +
+
+
+
+
+
+

Please confirm the installation of

+
Version
+
files will be installed
+ +
+
+ + + +
+ Cancel + + + + + + Confirm +
+
+
+
+
+
+
\ No newline at end of file diff --git a/update/userfiles/modules/admin/mail_providers/integration_select.php b/update/userfiles/modules/admin/mail_providers/integration_select.php deleted file mode 100644 index 75a834ba..00000000 --- a/update/userfiles/modules/admin/mail_providers/integration_select.php +++ /dev/null @@ -1,28 +0,0 @@ - - -
-

Connect form to Mail Providers

- -

- - - - -
- \ No newline at end of file diff --git a/update/userfiles/modules/admin/mail_templates/config.php b/update/userfiles/modules/admin/mail_templates/config.php deleted file mode 100644 index f547e8f9..00000000 --- a/update/userfiles/modules/admin/mail_templates/config.php +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - - -
-

Edit mail template

-
- -
-
-
- - -
-
- - -
-
- - -
-
-
- -
-
-
- - -
-
- -
-
- - -
-
- -
-
- - -
-
-
- -
-
-
- - -
-
- -
-
- - - -
-
-
- -
-
-
- -
-
-
- -
-
- -
- -
- - -
-
-
-
-
diff --git a/update/userfiles/modules/admin/mail_templates/functions.php b/update/userfiles/modules/admin/mail_templates/functions.php deleted file mode 100644 index 747fa9c4..00000000 --- a/update/userfiles/modules/admin/mail_templates/functions.php +++ /dev/null @@ -1,250 +0,0 @@ - '{{id}}', 'name' => 'Order Id'); - $fields[] = array('tag' => '{{date}}', 'name' => 'Date'); - $fields[] = array('tag' => '{{cart_items}}', 'name' => 'Cart items'); - $fields[] = array('tag' => '{{amount}}', 'name' => 'Amount'); - $fields[] = array('tag' => '{{order_status}}', 'name' => 'Order Status'); - $fields[] = array('tag' => '{{currency}}', 'name' => 'Currency'); - $fields[] = array('tag' => '{{first_name}}', 'name' => 'First Name'); - $fields[] = array('tag' => '{{last_name}}', 'name' => 'Last Name'); - $fields[] = array('tag' => '{{email}}', 'name' => 'Email'); - $fields[] = array('tag' => '{{country}}', 'name' => 'Country'); - $fields[] = array('tag' => '{{city}}', 'name' => 'City'); - $fields[] = array('tag' => '{{state}}', 'name' => 'State'); - $fields[] = array('tag' => '{{zip}}', 'name' => 'Zip'); - $fields[] = array('tag' => '{{address}}', 'name' => 'Address'); - $fields[] = array('tag' => '{{phone}}', 'name' => 'Phone'); - $fields[] = array('tag' => '{{transaction_id}}', 'name' => 'Transaction Id'); - $fields[] = array('tag' => '{{order_id}}', 'name' => 'Order Id'); - - return $fields; - } - - if ($type == 'new_comment_reply') { - - $fields = array(); - $fields[] = array('tag' => '{{comment_author}}', 'name' => 'Comment Author'); - $fields[] = array('tag' => '{{comment_reply_author}}', 'name' => 'Comment Reply Author'); - $fields[] = array('tag' => '{{post_url}}', 'name' => 'Post Url'); - - return $fields; - } - - if ($type == 'new_user_registration') { - - $fields = array(); - $fields[] = array('tag' => '{{id}}', 'name' => 'User Id'); - $fields[] = array('tag' => '{{username}}', 'name' => 'Username'); - $fields[] = array('tag' => '{{email}}', 'name' => 'Email'); - $fields[] = array('tag' => '{{first_name}}', 'name' => 'First Name'); - $fields[] = array('tag' => '{{last_name}}', 'name' => 'Last Name'); - $fields[] = array('tag' => '{{created_at}}', 'name' => 'Date of registration'); - $fields[] = array('tag' => '{{verify_email_link}}', 'name' => 'Verify email link'); - - return $fields; - } - - if ($type == 'forgot_password') { - - $fields = array(); - $fields[] = array('tag' => '{{id}}', 'name' => 'User Id'); - $fields[] = array('tag' => '{{username}}', 'name' => 'Username'); - $fields[] = array('tag' => '{{email}}', 'name' => 'Email'); - $fields[] = array('tag' => '{{first_name}}', 'name' => 'First Name'); - $fields[] = array('tag' => '{{last_name}}', 'name' => 'Last Name'); - $fields[] = array('tag' => '{{created_at}}', 'name' => 'Date of registration'); - $fields[] = array('tag' => '{{reset_password_link}}', 'name' => 'Reset password link'); - $fields[] = array('tag' => '{{ip}}', 'name' => 'IP address'); - - return $fields; - } -} - -api_expose_admin('save_mail_template'); -function save_mail_template($data) -{ - if (!is_admin()) { - return; - } - - $data['allow_html'] = '1'; - - $table = "mail_templates"; - $save = db_save($table, $data); - - - if (isset($data['append_files']) && !empty($data['append_files'])) { - - $option = array(); - $option['option_value'] = $data['append_files']; - $option['option_key'] = 'append_files'; - $option['option_group'] = 'mail_template_id_' . $save; - - mw()->option_manager->save($option); - - } - - return $save; -} - - -function get_mail_template_by_id($id, $type = false) -{ - - $templates = get_mail_templates(); - - foreach ($templates as $template) { - - if ($template['id'] == $id) { - - if (isset($template['is_default'])) { - $template['message'] = file_get_contents(normalize_path(MW_PATH . 'Views/emails') . $template['id']); - } - - return $template; - } - } - - return get_default_mail_template_by_type($type); -} - -function get_default_mail_templates() -{ - - $templates = array(); - - $default_mail_templates = normalize_path(MW_PATH . 'Views/emails'); - $default_mail_templates = scandir($default_mail_templates); - - foreach ($default_mail_templates as $template_file) { - if (strpos($template_file, "blade.php") !== false) { - - $template_type = str_replace('.blade.php', false, $template_file); - $template_name = str_replace('_', ' ', $template_type); - $template_name = ucfirst($template_name); - - $templates[] = array( - 'id' => $template_file, - 'type' => $template_type, - 'name' => $template_name, - 'subject' => $template_name, - 'from_name' => get_option('email_from_name', 'email'), - 'from_email' => get_option('email_from', 'email'), - 'copy_to' => '', - 'message' => '', - 'is_default' => true, - 'is_active' => 1 - ); - } - } - - return $templates; -} - -function get_mail_templates($params = array()) -{ - if (is_string($params)) { - $params = parse_params($params); - } - - $params['table'] = "mail_templates"; - $templates = db_get($params); - - $defaultTemplates = get_default_mail_templates(); - - if (empty($templates)) { - $templates = $defaultTemplates; - } else { - if (!$templates) { - $templates = array(); - } - if (!$defaultTemplates) { - $defaultTemplates = array(); - } - array_merge($templates, $defaultTemplates); - } - - return $templates; -} - -api_expose_admin('delete_mail_template'); -function delete_mail_template($params) -{ - if (!is_admin()) { - return; - } - if (isset($params['id'])) { - $table = "mail_templates"; - $id = $params['id']; - return db_delete($table, $id); - } -} - -event_bind('mw.cart.confirm_email_send', function ($order_id) { - - $new_order_mail_template_id = mw()->app->option_manager->get('new_order_mail_template', 'orders'); - $mail_template = get_mail_template_by_id($new_order_mail_template_id, 'new_order'); - - return array('mail_template'=>$mail_template); - -}); - diff --git a/update/userfiles/modules/admin/modules/list.php b/update/userfiles/modules/admin/modules/list.php deleted file mode 100644 index 37d6e0e4..00000000 --- a/update/userfiles/modules/admin/modules/list.php +++ /dev/null @@ -1,523 +0,0 @@ -template->get_config(); - -$show_grouped_by_cats = false; -$hide_dynamic_layouts = false; -$disable_elements = false; -if(isset($template_config['elements_mode']) and $template_config['elements_mode'] == 'disabled'){ -//dd($template_config); - $disable_elements = true; - -} - -if(isset($params['hide-dynamic']) and $params['hide-dynamic']){ - $hide_dynamic_layouts = true; -} - -if (isset($is_elements) and $is_elements == true) { - $mod_obj_str = 'elements'; - $el_params = array(); - if (isset($params['layout_type'])) { - $el_params['layout_type'] = $params['layout_type']; - } - $modules = mw()->layouts_manager->get($el_params); - //$modules = false; - - if ($modules == false) { - // scan_for_modules($modules_options); - $el_params['no_cache'] = true; - mw()->modules->scan_for_elements($el_params); - $modules = mw()->layouts_manager->get($el_params); - - - } - - - - - - // dd($modules); - - if ($modules == false) { - $modules = array(); - } - - $elements_from_template = mw()->layouts_manager->get_elements_from_current_site_template(); - if (!empty($elements_from_template)) { - - $modules = array_merge($modules, $elements_from_template); - - } - - - - if($disable_elements){ - $modules = array(); -} - - - // REMOVE - //$modules = array(); -//return; - - // $dynamic_layouts = mw()->layouts_manager->get_all('no_cache=1&get_dynamic_layouts=1'); - $dynamic_layouts = false; - $module_layouts_skins = false; - $dynamic_layouts = mw()->layouts_manager->get_all('no_cache=1&get_dynamic_layouts=1'); - $module_layouts_skins = mw()->modules->templates('layouts'); - if($hide_dynamic_layouts){ - $dynamic_layouts = false; - $module_layouts_skins = false; - } - - - // $module_layouts_skins_def = mw()->modules->templates('layouts',false, false, 'module_dir'); - //$module_layouts_skins_def = mw()->modules->templates('layouts',false, false, 'dream'); -//var_dump($module_layouts_skins_def); -// if(is_array($module_layouts_skins) and is_arr($module_layouts_skins_def) and ($module_layouts_skins != $module_layouts_skins_def)){ -// $module_layouts_skins = array_merge($module_layouts_skins,$module_layouts_skins_def); -// } - - -} else { - $modules = mw()->modules->get('installed=1&ui=1'); - $module_layouts = mw()->modules->get('installed=1&module=layouts'); - - - $hide_from_display_list = array('layouts','template_settings'); - - $sortout_el = array(); - $sortout_mod = array(); - if (!empty($modules)) { - foreach ($modules as $mod) { - if (isset($mod['as_element']) and intval($mod['as_element']) == 1) { - $sortout_el[] = $mod; - } else { - $sortout_mod[] = $mod; - } - } - $modules = array_merge($sortout_el, $sortout_mod); - if ($modules and !empty($module_layouts)) { - $modules = array_merge($modules, $module_layouts); - } - } - - - - - - $modules_from_template = mw()->modules->get_modules_from_current_site_template(); - if (!empty($modules_from_template)) { - if (!is_array($modules)) { - $modules = array(); - } - foreach ($modules as $module) { - foreach ($modules_from_template as $k => $module_from_template) { - if (isset($module['name']) and isset($module_from_template['name'])) { - if ($module['name'] == $module_from_template['name']) { - unset($modules_from_template[$k]); - } - } - } - } - $modules = array_merge($modules, $modules_from_template); - } - - $is_shop_disabled = get_option('shop_disabled', 'website') == "y"; - - if ($modules) { - foreach ($modules as $mkey=> $module) { - if (!isset($module['categories']) or !($module['categories'])) { - $module['categories'] = 'other'; - } - if (isset($module['categories']) and ($module['categories'])) { - $mod_cats = explode(',', $module['categories']); - - if ($mod_cats) { - $skip_m = false; - if ($is_shop_disabled and in_array('online shop', $mod_cats)) { - $skip_m = true; - } - - if (!$skip_m) { - foreach ($mod_cats as $mod_cat) { - $mod_cat = trim($mod_cat); - if (!isset($modules_by_categories[$mod_cat])) { - $modules_by_categories[$mod_cat] = array(); - } - $modules_by_categories[$mod_cat][] = $module; - } - - } else { - unset($modules[$mkey]); - } - } - } - } - } - - - - - -} - - -if ($modules_by_categories and is_arr($modules_by_categories) and count($modules_by_categories) > 1) { - $sort_first = array(); - - $first_keys = array('recommended', 'media', 'content', 'navigation'); - foreach ($first_keys as $first_key) { - if (isset($modules_by_categories[$first_key])) { - $sort_first[$first_key] = $modules_by_categories[$first_key]; - unset($modules_by_categories[$first_key]); - } - } - $modules_by_categories_new = array_merge($sort_first, $modules_by_categories); - $modules_by_categories = $modules_by_categories_new; -} - - -if (($modules and !$modules_by_categories) or ($modules and !$show_grouped_by_cats)) { - $modules_by_categories = array('Modules' => $modules); -} - - - - -if (isset($_COOKIE['recommend']) and is_string($_COOKIE['recommend']) and isset($modules) and is_array($modules)) { - $recommended = json_decode($_COOKIE['recommend'], true); - - if (is_array($recommended) and !empty($recommended)) { - $position = 9; - $sorted_modules = array(); - arsort($recommended); - foreach ($recommended as $key => $value) { - foreach ($modules as $mod_key => $item) { - if (isset($item['module']) and isset($item['position']) and $item['position'] > $position) { - if ($key == $item['module']) { - $sorted_modules[] = $item; - } - } - } - } - - if (!empty($sorted_modules)) { - //arsort( $sorted_modules); - if (!empty($modules)) { - $re_sorted_modules = array(); - $temp = array(); - $modules_copy = $modules; - foreach ($modules_copy as $key => $item) { - if (is_array($sorted_modules) and !empty($sorted_modules)) { - foreach ($sorted_modules as $key2 => $sorted_module) { - if ($sorted_module['module'] == $item['module']) { - unset($modules_copy[$key]); - } - } - } - } - foreach ($modules_copy as $key => $item) { - $re_sorted_modules[] = $item; - - if (!isset($item['position'])) { - $item['position'] = 999; - } - - if ($item['position'] > $position) { - if (is_array($sorted_modules) and !empty($sorted_modules)) { - foreach ($sorted_modules as $key2 => $sorted_module) { - $re_sorted_modules[] = $sorted_module; - unset($sorted_modules[$key2]); - } - } - - } - - } - if (!empty($re_sorted_modules)) { - $modules = $re_sorted_modules; - } - } - } - } - -} - - -?> - - - - -
    - url_manager->link_to_file($def_icon); - - - - ?> - - - - -
  • - - - - - <?php print $dynamic_layout['name'] ?>" - data-module-name="" - src="" - /> - -
  • - - - - - - - - - - - - - -
  • - - - - - - - <?php print $dynamic_layout['name'] ?>" - data-module-name="layouts" - ondrop="true" - src="" - data-src="" - /> - - - - -
  • - - - - - - - - - $modules) : ?> - - 1): ?> - -
  • -
    -

    -
    -
  • - - - - - - -
  • -
    -

    -
    -
  • - - - - - - - - - - - - - -
  • style="display: none" id="" - data-module-name="" - - style="" - data-filter="" - ondrop="true" - data-category="" - - template="" - - class="module-item module-item-module module-cat-toggle- default-layouts module-as-element"> - . "> - - - - - - - - - - - - - - - <?php print $module_item['name'] ?>" - data-src=""/> - - - - - - - - - -
  • - - - - - - - - - - -
- - diff --git a/update/userfiles/modules/admin/modules/saved_templates.php b/update/userfiles/modules/admin/modules/saved_templates.php deleted file mode 100644 index c787e6c6..00000000 --- a/update/userfiles/modules/admin/modules/saved_templates.php +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - - - - -
- " class="module-presets-action-btn"/> - */ ?> - - - -
    - -
  • -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    -
  • - -
-
- - - -
- - - - -
- - - error $params['module_name'] is not set or $params['module_id'] is not set - diff --git a/update/userfiles/modules/admin/modules/templates_layouts.php b/update/userfiles/modules/admin/modules/templates_layouts.php deleted file mode 100644 index a9c64a34..00000000 --- a/update/userfiles/modules/admin/modules/templates_layouts.php +++ /dev/null @@ -1,481 +0,0 @@ - $temp['name'], 'screenshot' => $temp['screenshot'], 'layout_file' => $temp['layout_file']); - } - } -} -?> - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-
-
- -
-
- -
- - - - - - - - - - - - - - -
-
-
- Change Layout -
-
-
-
- - - - - - - - - - - -
- - - - -
- - - - - - -
- - - - - - - - - - - - - -
-
-
- - - - diff --git a/update/userfiles/modules/admin/notifications/system_log.php b/update/userfiles/modules/admin/notifications/system_log.php deleted file mode 100644 index a7208258..00000000 --- a/update/userfiles/modules/admin/notifications/system_log.php +++ /dev/null @@ -1,146 +0,0 @@ -log_manager->get($log_params); - - -?> - - - -
- - - - - - - - - - - - - - - - - - - - - - -

- -
- date($item['created_at']); ?> -
- - - -
- - - - -
- - - - - IP: - - -
- - - - - -
- - - - - - - - - - - - - - - -
- - -
- -
-
- - - - \ No newline at end of file diff --git a/update/userfiles/modules/admin/ui/accordion.php b/update/userfiles/modules/admin/ui/accordion.php deleted file mode 100644 index e3675487..00000000 --- a/update/userfiles/modules/admin/ui/accordion.php +++ /dev/null @@ -1,338 +0,0 @@ - - -
-

Accordion

-
-
-
-
-
- Another Example1 -
-
-
- Lorem Ipsum1 -
-
-
-
-
- Another Example2 -
-
-
- Lorem Ipsum2 -
-
-
-
-

Nested Accordions

- -
-
-
-
- Level 1 -
-
-
- Level 2 -
-
-
-
-
- Another Example1 -
-
-
-
-
-
-
-
- Level 3 -
-
-
- Lorem Ipsum1 -
-
-
-
-
- Another Example2 -
-
-
- Lorem Ipsum2 -
-
-
-
-
-
-
-
-
- Another Example2 -
-
-
- Lorem Ipsum2 -
-
-
-
-
-
- - -
-
- Another Example2 -
-
- Lorem Ipsum2 -
-
-
- -
-

Basic Accordion

-
-
- Basic 1 -
-
- Lorem Ipsum 1 -
-
- Basic 2 -
-
- Lorem Ipsum 2 -
-
-
- -
- -
-

Tabs Accordion

-
-
-
-
- Another Example1 -
-
- Lorem Ipsum1 -
-
-
-
- Another Example2 -
-
- Lorem Ipsum2 -
-
-
-

-
-
-
- Another Example1 -
-
- Lorem Ipsum1 -
-
-
-
- Another Example2 -
-
- Lorem Ipsum2 -
-
-
- -
- - -
-

Color picker

-
- - - - -
- -
-

Tree

-
- -
- - - - - - -
- -
-

Fields

-
- -
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
- -
- -
-
-
-
- -
-
-
-
- -
-
-
-
- - - -
-
-
-
- - -
- Choose -
-
    -
  • Option 1
  • -
  • Option 2 !!!
  • -
  • Option 3
  • -
-
-
-
-
-
-
-
- Choose -
-
    -
  • Option 1
  • -
  • Option 2 !!!
  • -
  • Option 3
  • -
-
-
- -
-
- -
-
- -
- -

Edit box

-
- - - -
- - Edit - Edit Other -
- - -
diff --git a/update/userfiles/modules/admin/ui/all_modules.php b/update/userfiles/modules/admin/ui/all_modules.php deleted file mode 100644 index 74fcc430..00000000 --- a/update/userfiles/modules/admin/ui/all_modules.php +++ /dev/null @@ -1,16 +0,0 @@ -modules->get('installed=1&ui=1'); - - -foreach($modules as $module){ - - - print '

'.$module['module'].'

'; - print ''; - -} - - - diff --git a/update/userfiles/modules/admin/ui_test.php b/update/userfiles/modules/admin/ui_test.php deleted file mode 100644 index 0aafb26b..00000000 --- a/update/userfiles/modules/admin/ui_test.php +++ /dev/null @@ -1,15 +0,0 @@ -
-
- -
- - - - - -
- - -
- -
\ No newline at end of file diff --git a/update/userfiles/modules/btn/admin.php b/update/userfiles/modules/btn/admin.php deleted file mode 100644 index 2cf88727..00000000 --- a/update/userfiles/modules/btn/admin.php +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - -
-
- - "/> -
- -
- - -
- -
- - -
- -
-
- " - class="mw_option_field mw-ui-field"/> - -
-
- -
-
- - - - -
- - - -
-
-
- -
-
diff --git a/update/userfiles/modules/bxslider/config.php b/update/userfiles/modules/bxslider/config.php deleted file mode 100644 index e542d5d5..00000000 --- a/update/userfiles/modules/bxslider/config.php +++ /dev/null @@ -1,18 +0,0 @@ - + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +   + + + + + +
+ + + +
+
+
+ Events +
+
+
+ +
+ +
+ +
+
+ +
+
+
+ Groups +
+
+
+ +
+
+ + + +
+
+
+ +
+
+
+ +
+
+ +
+ + +
+ Import / Export + + +
diff --git a/update/userfiles/modules/calendar/calendar_admin.js b/update/userfiles/modules/calendar/calendar_admin.js new file mode 100644 index 00000000..dad5d7ed --- /dev/null +++ b/update/userfiles/modules/calendar/calendar_admin.js @@ -0,0 +1,85 @@ + + +function editEventId(event_id) { + var data = {}; + data.event_id = event_id; + + var module_id = 'edit-event-' + event_id; + + + if (event_id) { + var modaltitle = 'Edit event'; + } else { + var modaltitle = 'Add event'; + + } + + var opts = {}; + opts.width = '800'; + opts.height = '600'; + + + var editEventModal = mw.top().tools.open_global_module_settings_modal('calendar/edit_event', module_id, opts, data); + + + // + // + // editEventModal = mw.top().tools.open_module_modal('calendar/edit_event',data, { + // overlay: true, + // openiframe: true, + // + // iframe: true, + // live_edit: true, + // module_settings: true, + // + // + // title: modaltitle, + // skin: 'simple' + // }) + + +} + +function reload_calendar_after_save($module_id) { + if(typeof $module_id != 'undefined'){ + mw.reload_module_everywhere($module_id); + } + mw.reload_module_everywhere('calendar/edit_events'); + //window.parent.$(window.parent.document).trigger('calendar.update'); + mw.top().$(window.parent.document).trigger('calendar.update'); + +} + + + +function deleteEvent(event_id) { + var con = confirm('Are you sure to delete this event?'); + if (con == true) { + $.ajax({ + url: mw.settings.api_url + 'calendar_remove_event', + data: 'eventid=' + event_id, + type: 'POST', + dataType: 'json', + success: function (response) { + mw.reload_module_everywhere('calendar/edit_events'); + mw.top().$(window.parent.document).trigger('calendar.update'); + if (typeof(window.thismodal) != 'undefined') { + window.thismodal.remove(); + } + + if (typeof(mw.top().reload_calendar_after_save) != 'undefined') { + reload_calendar_after_save(); + } + } + } + ); + } +} + +function openEventsImportModal() { + + var data = {}; + + importEventsModal = mw.top().tools.open_global_module_settings_modal('calendar/import_events', 'import-events') + +} diff --git a/update/userfiles/modules/calendar/edit_event.php b/update/userfiles/modules/calendar/edit_event.php new file mode 100644 index 00000000..0793c7b6 --- /dev/null +++ b/update/userfiles/modules/calendar/edit_event.php @@ -0,0 +1,307 @@ + + + + "0", + 'active' => 1, + 'content_id' => "", + 'title' => "", + 'start_date' => date("Y-m-d"), + 'start_time' => date("H:i"), + 'end_date' => date("Y-m-d"), + 'end_time' => date("H:i"), + 'description' => "", + 'short_description' => "", + 'all_day' => "", + "calendar_group_id" => "", + "image_url" => "", + "link_url" => "", + "recurrence_repeat_every" => 1 + ); +} + +?> + + + + + + + + + + + + +
+ + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + +   + Upload file + +
+ +
+ + +
+
+
+
+ + +
+
+
+ +
+
+ + +
+ + + + +
+
+
+
+ + +
+ +
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+ +
+
+
+
+ + +
+ +
+ + + + + +
+ +
+ +
+ +
+ +
+ +
+ Cancel + +
+ +
+ + Delete + +
+
diff --git a/update/userfiles/modules/calendar/edit_events.php b/update/userfiles/modules/calendar/edit_events.php new file mode 100644 index 00000000..e800877a --- /dev/null +++ b/update/userfiles/modules/calendar/edit_events.php @@ -0,0 +1,102 @@ + + + + + +
+ + + + + $event_dates) { + + if (!isset($config['recurrence_type'][$recurrence_type])) { + + continue; + } + ?> + + + + + + + + + + + + + + + + + $events) { ?> + + + + + + + + + + + + + + + +
+ + + + + + +
#TitleGroupStartEndActions
+ + + + +
+   + +
+
+ +
diff --git a/update/userfiles/modules/calendar/index.php b/update/userfiles/modules/calendar/index.php new file mode 100644 index 00000000..93eae92e --- /dev/null +++ b/update/userfiles/modules/calendar/index.php @@ -0,0 +1,82 @@ +database_manager->get("table=calendar&count=true"); + +$dayGroups = $all_days = calendar_get_events_groups_api('yearmonth=0'); + +$save_groups = calendar_get_groups(); + +$groups = [ + [ + 'id' => '0', + 'title' => 'Main event' + ] +]; + +if ($save_groups) { + $groups = array_merge($groups, $save_groups); +} + + +$events = calendar_get_events_api($params); + + +if (!$event_count) { + return print lnotif(_e('Click here to edit Calendar', true)); +} + +$template_file = false; + +if ($template != false and strtolower($template) != 'none') { + $template_file = module_templates($config['module'], $template); +} + +if ($template_file == false) { + $template_file = module_templates($config['module'], 'default'); +} + +if ($template_file != false and is_file($template_file)) { + include ($template_file); +} diff --git a/update/userfiles/modules/calendar/js/edit-event-ajax.js b/update/userfiles/modules/calendar/js/edit-event-ajax.js new file mode 100644 index 00000000..3da268e1 --- /dev/null +++ b/update/userfiles/modules/calendar/js/edit-event-ajax.js @@ -0,0 +1,36 @@ +$(document).ready(function () { + + // PROCESS FORM + + $("#editEventForm").submit(function (e) { + + + var calendar_api_save_event = mw.settings.api_url + 'calendar_save_event'; + + + e.preventDefault(e); + var form_data = '?' + $(this).serialize(); + form_data = mw.url.set_param('content_id', content_id, form_data).replace('?', ''); + $.ajax({ + url: calendar_api_save_event, + data: form_data, + type: 'POST', + dataType: 'json', + success: function (response) { + + mw.reload_module_everywhere('calendar/edit_events'); + mw.top().$(window.parent.document).trigger('calendar.update'); + + mw.notification.success(mw.lang('All changes saved')); + var dialog = mw.dialog.get(e.target); + if(dialog){ + dialog.remove(); + } + }, + error: function (e) { + alert('Error processing your request: ' + e.responseText); + } + }); + }); + +}); diff --git a/update/userfiles/modules/calendar/templates/default.php b/update/userfiles/modules/calendar/templates/default.php new file mode 100644 index 00000000..31fba16c --- /dev/null +++ b/update/userfiles/modules/calendar/templates/default.php @@ -0,0 +1,153 @@ + + + + + + + + + + + + +
+
Calendar
+
diff --git a/update/userfiles/modules/carousel_grid/admin.php b/update/userfiles/modules/carousel_grid/admin.php new file mode 100644 index 00000000..31979f97 --- /dev/null +++ b/update/userfiles/modules/carousel_grid/admin.php @@ -0,0 +1,71 @@ + + + + +
+
+
+
+ List of Images +
+
+
+ +
+
+ +
+
+
+ +
+
+
+ + + +
+
+
\ No newline at end of file diff --git a/update/userfiles/modules/carousel_grid/index.php b/update/userfiles/modules/carousel_grid/index.php new file mode 100644 index 00000000..0ccd659f --- /dev/null +++ b/update/userfiles/modules/carousel_grid/index.php @@ -0,0 +1,177 @@ + + + + + + + + + + + + + diff --git a/update/userfiles/modules/categories/edit_category.php b/update/userfiles/modules/categories/edit_category.php deleted file mode 100644 index f75f03d3..00000000 --- a/update/userfiles/modules/categories/edit_category.php +++ /dev/null @@ -1,473 +0,0 @@ - - -
- - - - - - - -
-

- - -

-
- - - -
-
- - -
- - - - - - -
-
-
-
- - - -     -   - - - -   - -
- -
- -   -
-
-
-
- -
- -
-
- 0): ?> - - "/> - - 0): ?> - - - - - placeholdervalue=""/> - -
-
-
- -
- - - - -
- -
- - -
- - - - - - -
-
- -
-
-
- - -
-
- - -
diff --git a/update/userfiles/modules/comments/comments_admin.js b/update/userfiles/modules/comments/comments_admin.js deleted file mode 100644 index ad9123a1..00000000 --- a/update/userfiles/modules/comments/comments_admin.js +++ /dev/null @@ -1,73 +0,0 @@ - - -alert('mw.adminComments is deprecated'); - -mw.adminComments = { - action: function (form, val) { - var form = $(form); - var field = form.find('.comment_state'); - var connected_id = mw.$('[name="connected_id"]', form[0]).val(); - field.val(val); - var conf = true; - if (val == 'delete') { - var conf = confirm(mw.msg.to_delete_comment); - } - if (conf) { - var id = form.attr('id'); - var data = form.serialize(); - $.post("", data, function (data) { - mw.reload_module('#mw_comments_for_post_' + connected_id, function () { - $('#mw_comments_for_post_' + connected_id).find(".comments-holder,.new-comments,.old-comments").show(); - }); - }); - } - }, - toggleEdit: function (id) { - mw.$(id).toggleClass('comment-edit-mode'); - if (mw.$(id).hasClass("comment-edit-mode")) { - mw.$(id).find("textarea").focus(); - } - }, - display: function (e, el, what) { - mw.event.cancel(e); - var _new = mw.tools.firstParentWithClass(el, 'comment-post').querySelector('.new-comments'); - var _old = mw.tools.firstParentWithClass(el, 'comment-post').querySelector('.old-comments'); - if (what == 'all') { - $(_new).show(); - $(_old).show(); - } - else if (what == 'new') { - $(_new).show(); - $(_old).hide(); - } - }, - toggleMaster: function (master, e) { - if (master === null) { - return false; - } - if (e != undefined) { - mw.event.cancel(e); - } - var _new = master.parentNode.querySelector('.new-comments'); - var _old = master.parentNode.querySelector('.old-comments'); - if ($(_new).is(":visible") || $(_old).is(":visible")) { - $([_new, _old]).hide(); - $(master).removeClass("active"); - } - else { - $([_new, _old]).show(); - $(master).addClass("active"); - var is_cont = $(master).attr('content-id') - if (typeof is_cont != "undefined") { - var mark_as_old = {} - mark_as_old.content_id = is_cont; - $.post(mw.settings.api_url+'mark_comments_as_old', mark_as_old, function (data) { - - }); - } - } - }, - mark_as_spam:function($comment_id){ - - } -} diff --git a/update/userfiles/modules/contact_form/admin_backend.php b/update/userfiles/modules/contact_form/admin_backend.php deleted file mode 100644 index d344e922..00000000 --- a/update/userfiles/modules/contact_form/admin_backend.php +++ /dev/null @@ -1,166 +0,0 @@ - - -
- - - - -
-
- notifications_manager->read($mw_notif); - } - mw()->notifications_manager->mark_as_read('contact_form'); - ?> - - - - - notifications_manager->mark_as_read('contact_form'); - $load_list = 'default'; - if ((url_param('load_list') != false)) { - $load_list = url_param('load_list'); - } - if (url_param('load_list') === false) { - $load_list = 'all_lists'; - } - ?> - - -
- - - -
-

Your form lists

-
- -
- - -
-
- -
-
- - - - )"> -
*/ ?> -
-
-
- - - - " id="forms_data_module"/> - - - - - - - - - - - - - - - -
-
-
- diff --git a/update/userfiles/modules/contact_form/admin_live_edit.php b/update/userfiles/modules/contact_form/admin_live_edit.php deleted file mode 100644 index 9af3f945..00000000 --- a/update/userfiles/modules/contact_form/admin_live_edit.php +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - -
-
-
-
- -
-
-
- -
- -
- -
- - - - - -
- -
-
- -
-
-
- Custom Fields -
-
-
- -
- - -
- -
- - -
- -
-
- -
-
-
- -
-
-
- -
-
-
\ No newline at end of file diff --git a/update/userfiles/modules/contact_form/admin_messages_list.php b/update/userfiles/modules/contact_form/admin_messages_list.php deleted file mode 100644 index 29155218..00000000 --- a/update/userfiles/modules/contact_form/admin_messages_list.php +++ /dev/null @@ -1,112 +0,0 @@ - - -
- - - -
-
-
- -
- -
- # -
- -
- - $field): ?> - - - - - - - - - - - - -
- -
- -
format->ago($message['created_at']); ?>
- -
- -
-
-

- - - $fields): ?> - -
- $field): ?> - format->titlelize($key), $service_keys)): ?> -
-

format->titlelize($key); ?>

-

- ' . mw()->format->array_to_ul($field) . '

'; - } else { - print $field; - } - ?> - - -

-
- - -
- - -
- -
- -
-
- - " data-tipposition="top-center" onclick=""> -
-
- - -
-
-
- - - \ No newline at end of file diff --git a/update/userfiles/modules/contact_form/dashboard_recent_messages.php b/update/userfiles/modules/contact_form/dashboard_recent_messages.php deleted file mode 100644 index 4001ddf0..00000000 --- a/update/userfiles/modules/contact_form/dashboard_recent_messages.php +++ /dev/null @@ -1,27 +0,0 @@ - - - - -forms_manager->get_entires('count=true'); -?> - -
-
- - -
-
- - forms_manager->get_entires('limit=5'); - - $view = new \Microweber\View(__DIR__ . DIRECTORY_SEPARATOR . 'admin_messages_list.php'); - $view->assign('last_messages', $last_messages); - echo $view->__toString(); - ?> - -
-
diff --git a/update/userfiles/modules/contact_form/index.php b/update/userfiles/modules/contact_form/index.php deleted file mode 100644 index 156a0ace..00000000 --- a/update/userfiles/modules/contact_form/index.php +++ /dev/null @@ -1,175 +0,0 @@ - - - - -user_manager->terms_check('terms_contact', user_id())) { - $require_terms = 'n'; - } - } - - if($require_terms) { - $require_terms_when = get_option('require_terms_when', $params['module'] . '_default'); - if($require_terms_when == 'b') { - $terms_label = get_option('terms_label', 'users'); - $terms_label_cleared = str_replace(' ', '', $terms_label); - $terms_label_cleared = strip_tags($terms_label_cleared); - $terms_label_cleared = mb_trim($terms_label_cleared); - if ($terms_label_cleared == '') { - $terms_label = 'I agree with the Terms and Conditions'; - } - } - } -} - -$show_newsletter_subscription = get_option('newsletter_subscription', $params['module'] . '_default'); -if($show_newsletter_subscription == 'y') { - $newsletter_subscribed = false; - if(is_logged()){ - if(mw()->user_manager->terms_check('terms_newsletter', user_id())){ - $newsletter_subscribed = true; - } - } -} - -if(isset($template_file) and is_file($template_file) != false){ - include($template_file); -} elseif(isset($template_file_def) and is_file($template_file_def) != false){ - include($template_file_def); -} else { - print 'No template for contact form is found'; -} -?> \ No newline at end of file diff --git a/update/userfiles/modules/contact_form/manager/list.php b/update/userfiles/modules/contact_form/manager/list.php deleted file mode 100644 index 6a4f19ef..00000000 --- a/update/userfiles/modules/contact_form/manager/list.php +++ /dev/null @@ -1,225 +0,0 @@ - 'Not logged in as admin' - ); -} -?> - - - - - - 'All lists' - ); -} else { - $listData = get_form_lists("id=" . $filterData['list_id'] . "&limit=1"); - $listData = $listData[0]; -} - -$limit = 30; -if (isset($params['keyword'])) { - $filterData['keyword'] = $params['keyword']; -} -if (isset($params['for_module'])) { - //$data['module_name'] = $params['for_module']; -} -if (isset($_GET['per_page']) and $_GET['per_page']) { - $limit = intval($_GET['per_page']); -} - -//if (isset($_GET['per_page'])) { -// $option = array(); -// $option['option_value'] = intval($_GET['per_page']); -// $option['option_key'] = 'per_page'; -// $option['option_group'] = $params['for_module']; -// save_option($option); -//} -// -//$data['limit'] = get_option('per_page', $params['for_module']); -$data_count_all = $filterData; -$data_count_all['limit'] = null; -$data_count_all['count'] = true; -$total_count = get_form_entires($data_count_all); - - -$filterData['limit'] = $limit; -$custom_fields = array(); - -if ((url_param('current_page') != false)) { - $filterData['current_page'] = url_param('current_page'); -} - -$data_paging = $filterData; -$data_paging['page_count'] = 1; - - -$data_paging = get_form_entires($data_paging); - -// -//if ($data['limit'] == false) { -// $data['limit'] = 10; -//} - -//$limit_per_page = $data['limit']; -$limit_per_page = 50; -$custom_fields = array(); - - -if ($filterData['list_id'] == 'all_lists') { - $data = get_form_entires(array('limit'=>$filterData['limit'])); -} else { - $data = get_form_entires($filterData); -} - -if (is_array($data)) { - foreach ($data as $item) { - - if (isset($item['custom_fields'])) { - foreach ($item['custom_fields'] as $k => $value) { - - if ($k != 'for' - and $k != 'for_id' - and $k != 'module_name' - ) { - $custom_fields[$k] = $value; - } - - - } - } else if (isset($item['form_values'])) { - // $custom_fields = json_decode($item['form_values']); - - } - } -} -?> - -assign('last_messages', $data); -echo $view->__toString(); -?> - -
- - - - - -
- - -    - - -
- - -
-
- -
- - - - -
- -
-
-
- - - -
-
-

-
- : - messages in this list -
-
- -
diff --git a/update/userfiles/modules/contact_form/manager/list.php.old b/update/userfiles/modules/contact_form/manager/list.php.old deleted file mode 100644 index 1307b7eb..00000000 --- a/update/userfiles/modules/contact_form/manager/list.php.old +++ /dev/null @@ -1,295 +0,0 @@ - 'Not logged in as admin'); -} ?> - - - - - - $value) { - - if ($k != 'for' - and $k != 'for_id' - and $k != 'module_name' - ) { - $custom_fields[$k] = $value; - } - - - } - } else if (isset($item['form_values'])) { - // $custom_fields = json_decode($item['form_values']); - - } - } -} - -?> - -
- - - - - - - $item): ?> - - - - - - - - - - - - - - - $value) { - // $custom_fields[$k] =$value; - // } - // } - - ?> - - - $value): ?> - - - - - - - - - - - - -
format->no_dashes($k); ?>
-
format->date($item['created_at'], 'd M Y H:i'); ?> - -
-
- format->clean_html($val_print); - - if (is_array($values_plain)) { - $values_plain = mw()->format->array_to_ul($val_print); - } - - //var_dump($values_plain); - // $max = 150; - // if (strlen($values_plain) > $max) { - // $first = substr($values_plain, 0, $max); - // $rest = substr($values_plain, $max); - // print '
' . $first . '' . $rest . ' ' . _e('...more') . '
'; - // } else { - // print mw()->format->autolink($val_print); - // } - ?> - - format->clean_html($values_plain)) > 70): ?> -
- -
- -
- - - -
- -
-
- -
- - - -
- - -    - - -
- - -
-
- -
- - - - -
- -
-
-
- - - -
-
-

-
- : - messages in this list -
-
- - -
diff --git a/update/userfiles/modules/contact_form/manager/list_toolbar.php b/update/userfiles/modules/contact_form/manager/list_toolbar.php deleted file mode 100644 index 679f1642..00000000 --- a/update/userfiles/modules/contact_form/manager/list_toolbar.php +++ /dev/null @@ -1,86 +0,0 @@ - 'Not logged in as admin'); -} - - -if (!isset($params['load_list'])) { - return 'Error: Provide load_list parameter!'; -} - -?> - - - - - - - - -
-
-

id="form_field_title" >

- - - Edit list name -
-
- - -
-
- - - - -
-
diff --git a/update/userfiles/modules/contact_form/settings.php b/update/userfiles/modules/contact_form/settings.php deleted file mode 100644 index c55848d6..00000000 --- a/update/userfiles/modules/contact_form/settings.php +++ /dev/null @@ -1,145 +0,0 @@ - - - - -

Contact Form Settings

-
-
- - -
- -
-
- - -
-
- -
-
- - -
-
- -
-
- - -
-
- -
-
- - -
-
- -
-
- - -
-
- -
-
- - -
-
- -
- -
- - - - -
- -
- - - Attach the file that user will recive after from entry. -

- -
- -
- - - -
- -
- -
- -
- - - - - -
- - - - -
- - -
- -
- - - diff --git a/update/userfiles/modules/contact_form/templates/default.php b/update/userfiles/modules/contact_form/templates/default.php deleted file mode 100644 index b341f056..00000000 --- a/update/userfiles/modules/contact_form/templates/default.php +++ /dev/null @@ -1,82 +0,0 @@ - - - - - -
-
-
-

-
-
- - - - - -
-
-
-
- -
-
-
-
- - - - - - -
- -
-
- - -
-
- -
-
- -
-
- -
- -
- " /> -
-
- -
- - -
-
- -

-
-
\ No newline at end of file diff --git a/update/userfiles/modules/content/backend.php b/update/userfiles/modules/content/backend.php deleted file mode 100644 index b43eecb1..00000000 --- a/update/userfiles/modules/content/backend.php +++ /dev/null @@ -1,888 +0,0 @@ - -url_manager->string()); ?> - - - - - - - - - - -
- -
> - - -
- - - -
- - - -
-
- - - - -
- - -
- -
- - - - - - - - - - view="admin_tree" - home_first="true"/> - - view="admin_tree" - home_first="true"/> - - - */ ?> - - - - - - - - modules->ui('content.manager.tree.after'); ?> - - - - - - -
style="width: ;" - title="">
- - - - -
- - - - - -
- - -
-
- -
-
- - - -
>
-
-
-
diff --git a/update/userfiles/modules/content/views/edit_default.php b/update/userfiles/modules/content/views/edit_default.php deleted file mode 100644 index 00758de9..00000000 --- a/update/userfiles/modules/content/views/edit_default.php +++ /dev/null @@ -1,410 +0,0 @@ - - - - - - - - - - - - - - - - - - - -
-
-
-
- -
- - - - - -
- -
-
-
- - - -
-
-
- - - -
-
-
    - -
  • - -
  • - -
  • - -
  • - - -
  • - -
  • -
  • - -
  • - - -
  • - -
  • - -
  • - -
  • - -
  • - -
  • - -
-
-
-
-
- -
-
- - -
-
-
-
-
- -
-
- placeholder="" /> -
- - - - - modules->ui('content.edit.title.after'); ?> - - - - - - -
style="width: ;" - title="">
- - - modules->ui('content.edit.title.end'); ?> - - - - - - -
style="width: ;" - title="">
- - -
- - - -

- -
-
-
-
- - -
- -
style="display:none;" - class="mw_admin_edit_content_form" action="api/save_content_admin" - id="quickform-edit-content" autocomplete="off"> - - - - - - - - - -
- - - -
-
-
- -
- -
- - -
-
- - - -
*/ - - ?> - -
- -
- -
- -
- - - - - - - - - - -
- - - - - - - - - - -
-
-
- - diff --git a/update/userfiles/modules/content/views/settings_from_template.php b/update/userfiles/modules/content/views/settings_from_template.php new file mode 100644 index 00000000..4cb54d7b --- /dev/null +++ b/update/userfiles/modules/content/views/settings_from_template.php @@ -0,0 +1,71 @@ +template->get_config(); +$data_fields_conf = false; +$data_fields_values = false; + +if (!empty($template_config)) { + if (isset($params['content-type'])) { + if (isset($template_config['data-fields-' . $params['content-type']]) and is_array($template_config['data-fields-' . $params['content-type']])) { + $data_fields_conf = $template_config['data-fields-' . $params['content-type']]; + + if (isset($params['content-id'])) { + $data_fields_values = content_data($params['content-id']); + } else if (isset($params['category-id'])) { + $data_fields_values = mw()->data_fields_manager->get_values('rel_type=categories&rel_id=' . $params['category-id']); + } + } + } +} ?> + + +
+
+
+ + + + + + + + + + +
+ + + + + + + + + + +
+ +
+
+
+ diff --git a/update/userfiles/modules/custom_fields/admin.php b/update/userfiles/modules/custom_fields/admin.php deleted file mode 100644 index a10feb3b..00000000 --- a/update/userfiles/modules/custom_fields/admin.php +++ /dev/null @@ -1,204 +0,0 @@ - - -
- - ui->custom_fields(); - ?> - - - - -
- - - -
-
- - -
- - - rel_id='' list-preview="true" id="mw_custom_fields_list_preview"/> -
- - -
-
- - diff --git a/update/userfiles/modules/custom_fields/functions.php b/update/userfiles/modules/custom_fields/functions.php deleted file mode 100644 index c08829fd..00000000 --- a/update/userfiles/modules/custom_fields/functions.php +++ /dev/null @@ -1,27 +0,0 @@ -fields_manager->get($for, $for_id, 1); - if (!$data) { - mw()->fields_manager->make_default($for, $for_id, $params['default-fields']); - } -} - - -$data = mw()->fields_manager->get($for, $for_id, 1); - -$fields_group = array(); -$group_i = 0; -if (!empty($data)) { - foreach ($data as $field) { - - if ($field['type'] == 'breakline') { - $group_i++; - continue; - } - - $field['options']['field_size_class'] = template_default_field_size_option($field); - - if (isset($params['input_class'])) { - $field['input_class'] = $params['input_class']; - } - - if (isset($field['options']['field_size']) && is_array($field['options']['field_size'])) { - $field['options']['field_size'] = $field['options']['field_size'][0]; - $field['options']['field_size_class'] = template_field_size_class($field['options']['field_size'][0]); - } - - if (isset($field['options']['field_size']) && is_string($field['options']['field_size'])) { - $field['options']['field_size'] = $field['options']['field_size']; - $field['options']['field_size_class'] = template_field_size_class($field['options']['field_size']); - } - - $fields_group[$group_i][] = $field; - } -} - - -$prined_items_count = false; -$ready_fields_group = array(); -foreach ($fields_group as $field_group_key => $fields) { - - $ready_fields = array(); - // $default_fields = array(); - $price_fields = array(); - foreach ($fields as $field) { - if (!in_array($field['type'], $skip_types)) { - if (isset($field['type']) and $field['type'] == 'price') { - $price_fields[] = $field; - } else { - $field['params'] = $params; - $ready_fields[] = array('html' => mw()->fields_manager->make($field)); - } - } - } - - if (!in_array('price', $skip_types) and is_array($price_fields)) { - - $field_html = ''; - - $price_fields_count = count($price_fields); - - if ($price_fields_count > 1) { - - - $field_html .= ''; - } - - $ready_fields[] = array( - 'html' => $field_html - ); - } - - $ready_fields_group[$field_group_key] = $ready_fields; -} -$fields_group = $ready_fields_group; - -$template_file = get_option('data-template', $params['id']); - -if (isset($params['template'])) { - $module_template = $params['template']; - $template_file = module_templates($config['module'], $module_template); -} - -if ($template_file == false) { - $template_file = module_templates($config['module'], 'default'); -} elseif (is_file($template_file) ) { - -} else { - $template_file = module_templates($config['module'], $template_file); -} - -if (!isset($params['no-for-fields'])) { - echo ''; - echo "\n"; - echo ''; -} - -if ($template_file != false and is_file($template_file) != false) { - include($template_file); -} - -//echo 1; die(); \ No newline at end of file diff --git a/update/userfiles/modules/custom_fields/templates/bootstrap3/number.php b/update/userfiles/modules/custom_fields/templates/bootstrap3/number.php new file mode 100644 index 00000000..17ce1466 --- /dev/null +++ b/update/userfiles/modules/custom_fields/templates/bootstrap3/number.php @@ -0,0 +1,18 @@ + + +
+
+ + + required="true" data-custom-field-id="" name="" placeholder="" /> + + + + +
+
diff --git a/update/userfiles/modules/custom_fields/templates/bootstrap3/phone.php b/update/userfiles/modules/custom_fields/templates/bootstrap3/phone.php new file mode 100644 index 00000000..e0ad655e --- /dev/null +++ b/update/userfiles/modules/custom_fields/templates/bootstrap3/phone.php @@ -0,0 +1,14 @@ +
+
+ + + + + required="true" data-custom-field-id="" name="" placeholder=""/> +
+
\ No newline at end of file diff --git a/update/userfiles/modules/custom_fields/templates/bootstrap4/radio.php b/update/userfiles/modules/custom_fields/templates/bootstrap4/radio.php new file mode 100644 index 00000000..99dd009b --- /dev/null +++ b/update/userfiles/modules/custom_fields/templates/bootstrap4/radio.php @@ -0,0 +1,27 @@ +
+
+ + + $value): + $i++; + ?> + +
+ required data-custom-field-id="" value="" + name=""> + +
+ + + + + +
+
\ No newline at end of file diff --git a/update/userfiles/modules/custom_fields/templates/mw-ui/email.php b/update/userfiles/modules/custom_fields/templates/mw-ui/email.php new file mode 100644 index 00000000..438f0250 --- /dev/null +++ b/update/userfiles/modules/custom_fields/templates/mw-ui/email.php @@ -0,0 +1,13 @@ +
+
+ +
+ required="true" data-custom-field-id="" name="" placeholder="" /> +
+
+
\ No newline at end of file diff --git a/update/userfiles/modules/custom_fields/templates/mw-ui/index.php b/update/userfiles/modules/custom_fields/templates/mw-ui/index.php new file mode 100644 index 00000000..7c7a2fc3 --- /dev/null +++ b/update/userfiles/modules/custom_fields/templates/mw-ui/index.php @@ -0,0 +1,27 @@ + +
+ + + + + + + + + + + + + +
\ No newline at end of file diff --git a/update/userfiles/modules/custom_fields/values_edit.php b/update/userfiles/modules/custom_fields/values_edit.php deleted file mode 100644 index a36a591a..00000000 --- a/update/userfiles/modules/custom_fields/values_edit.php +++ /dev/null @@ -1,38 +0,0 @@ -
- - - - - diff --git a/update/userfiles/modules/editor/fonts/index.php b/update/userfiles/modules/editor/fonts/index.php deleted file mode 100644 index 68bba30f..00000000 --- a/update/userfiles/modules/editor/fonts/index.php +++ /dev/null @@ -1,28 +0,0 @@ - - -
" data-value="Arial" style="width: 100%;"> - - - Arial - - -
diff --git a/update/userfiles/modules/editor/global_styles/admin.php b/update/userfiles/modules/editor/global_styles/admin.php deleted file mode 100644 index 59896f44..00000000 --- a/update/userfiles/modules/editor/global_styles/admin.php +++ /dev/null @@ -1,128 +0,0 @@ - - - - -
  -
-
- - - - - - - - - - - - - - - - - - - -
Arial - -
-
- -
-
- - -
- - -
- -
-
- diff --git a/update/userfiles/modules/editor/html_editor/html_editor.js b/update/userfiles/modules/editor/html_editor/html_editor.js new file mode 100644 index 00000000..562e5e76 --- /dev/null +++ b/update/userfiles/modules/editor/html_editor/html_editor.js @@ -0,0 +1,461 @@ +wroot = window.opener || top + +mw.html_editor = {}; +mw.html_editor.map = {}; +mw.html_editor.init = function () { + + var fields = mw.html_editor.get_edit_fields(true); + mw.html_editor.build_dropdown(fields); + + mw.html_editor.populate_editor(); + mw.html_editor.set_height(); + +}; + + +mw.html_editor.set_height = function () { + var set = function () { + mw.$('.CodeMirror,.selector-box').each(function () { + var el = $(this) + this.style.height = ($(window).height() - el.offset().top - 90) + 'px' + }); + setTimeout(function () { + set() + }, 333) + } + set() +} +mw.html_editor.get_edit_fields = function (also_in_modules, root_element_selector) { + + also_in_modules = typeof also_in_modules === 'undefined' ? false : also_in_modules; + + + var fields_arr = []; + + + var get_edit_fields = wroot.$('.edit'); + + if (typeof(root_element_selector) != 'undefined') { + var get_edit_fields = wroot.$('.edit', root_element_selector); + } + + + get_edit_fields.each(function () { + var is_in_module = wroot.mw.tools.firstParentWithClass(this, 'module'); + if (!is_in_module || also_in_modules) { + fields_arr.push(this); + } + }); + return fields_arr; +}; + +mw.html_editor.createItemContent = function (option) { + var method = 'frame'; + var text = option.el.innerText.trim(); + if (method == 'text') { + return text.substring(0, 45) + '...'; + } + else { + var framehold = mwd.createElement('div'); + framehold.className = 'liframe' + var frame = mwd.createElement('iframe'); + framehold.appendChild(frame) + frame.src = 'about:blank' + frame.frameBorder = 0; + frame.scrolling = 'no'; + setTimeout(function () { + frame.contentDocument.body.innerHTML = option.el.innerHTML; + var root = window.top.opener ? window.top.opener.document.documentElement : window.top.document.documentElement; + $('link', root).each(function () { + $(this).clone(true).appendTo(frame.contentDocument.body); + }); + }, 78) + return framehold; + } +} +mw.html_editor.build_dropdown = function (fields_array, screenShot) { + screenShot = typeof screenShot === 'undefined' ? true : screenShot + var html_dd = {}; + $(fields_array).each(function () { + var dd_grp = $(this).attr('rel'); + var dd_field = $(this).attr('field'); + if (dd_grp && dd_grp) { + if (typeof(html_dd[dd_grp]) == 'undefined') { + html_dd[dd_grp] = []; + } + var temp = {}; + temp.field = dd_field; + temp.rel = dd_grp; + temp.el = this; + + mw.html_editor.map[dd_grp + '/' + dd_field] = temp; + html_dd[dd_grp].push(temp); + } + + }); + + + var $select = $("
    "); + $select.attr('id', 'select_edit_field'); + //$select.attr('class', 'mw-ui-field'); + + var has_selected = false; + + $select.appendTo("#select_edit_field_wrap"); + $.each(html_dd, function (groupName, options) { + var $optgroup = $("
  • ", {label: groupName, rel: groupName}); + $optgroup.appendTo($select); + $optgroup.html(groupName); + var $optgroupul = $("
      ", {label: groupName, rel: groupName}); + $optgroupul.appendTo($optgroup); + $.each(options, function (j, option) { + + if (!option.field) { + mw.log('Warning: Your editable region does not have a "field" attribute'); + mw.log(option); + + } else { + + + var $option = $("
    • ", { + + value: option.rel, + rel: option.rel, + field: option.field + }).append(screenShot ? mw.html_editor.createItemContent(option) : option.field); + if (!has_selected && option.rel == 'content') { + has_selected = true; + $($option).attr('selected', 'selected'); + } + $option.appendTo($optgroupul); + } + + }); + }); + + + $('li li', $select).on('click', function (e) { + e.stopPropagation() + $('li', $select).removeClass('selected'); + $(this).addClass('selected'); + mw.html_editor.populate_editor() + }); + +}; + + +mw.html_editor.populate_editor = function () { + var value = $('#select_edit_field li.selected'); + + if (value.length == 0) { + var value = $('select#select_edit_field li li').eq(0); + } + if (value.length == 0) { + return; + } + + $('#fragment-holder').remove(); + var ed_val = ''; + var dd_grp = value.attr('rel'); + var dd_field = value.attr('field'); + + + if (typeof(mw.html_editor.map[dd_grp + '/' + dd_field]) != 'undefined') { + + + var ed_val = $(mw.html_editor.map[dd_grp + '/' + dd_field].el).html(); + + + wroot.mw.tools.scrollTo('[field="' + dd_field + '"][rel="' + dd_grp + '"]') + + wroot.$('.html-editor-selcted').removeClass('html-editor-selcted'); + wroot.$('[field="' + dd_field + '"][rel="' + dd_grp + '"]').addClass('html-editor-selcted'); + + var frag = document.createDocumentFragment(); + var html = ed_val; + var holder = document.createElement("div") + holder.id = 'fragment-holder' + holder.innerHTML = window.html_beautify ? html_beautify(html) : html; + frag.appendChild(holder) + //var s = $('.module', $(frag)).html('[module]'); + var s = $('.module', $(frag)).html('[module]'); + + // $('#divHtml').find("*").removeClass(); + + + var ed_val = $(holder).html(); + // d(ed_val); + } else { + var ed_val = 'Select element to edit'; + } + + if (typeof html_code_area_editor != 'undefined') { + + if (typeof html_beautify != 'undefined') { + //var formattedXML = js_beautify.beautify_html(ed_val, { indent_size: 2 }); + var formattedXML = (html_beautify(ed_val, { + "indent_size": 4, + "indent_char": "", + "indent_with_tabs": false, + "eol": "\n", + "end_with_newline": true, + "indent_level": 100, + "preserve_newlines": false, + "max_preserve_newlines": 100, + "space_in_paren": false, + "space_in_empty_paren": false, + "jslint_happy": false, + "space_after_anon_function": false, + "brace_style": "none", + "unindent_chained_methods": true, + "break_chained_methods": false, + "keep_array_indentation": false, + "unescape_strings": true, + "wrap_line_length": 111110, + "wrap_attributes": 'none', + "e4x": false, + "comma_first": false, + "operator_position": "before-newline" + })); + ed_val = formattedXML; + // d(formattedXML); + } + + + // d(ed_val); + + html_code_area_editor.setValue(ed_val); + html_code_area_editor.refresh(); + } + + $('#custom_html_code_mirror').val(ed_val); + $('#custom_html_code_mirror').attr('current', dd_grp + '/' + dd_field); + + +}; + + +mw.html_editor.apply_and_save = function () { + mw.tools.loading('#module-id-mw_global_html_editor', true); + + mw.html_editor.apply(); + wroot.mw.drag.save(undefined, function () { + mw.tools.loading('#module-id-mw_global_html_editor', false); + mw.notification.success(mw.msg.saved) + }) +} +mw.html_editor.apply = function () { + var cur = $('#custom_html_code_mirror').attr('current'); + var html = $('#custom_html_code_mirror').val(); + if (typeof(mw.html_editor.map[cur]) != 'undefined') { + + + var el = mw.html_editor.map[cur].el; + $(el).html(html); + + if ($(el).hasClass('edit')) { + var master_edit_field_holder = el; + + } else { + var master_edit_field_holder = wroot.mw.tools.firstParentWithClass(el, 'edit'); + + } + + + var modules_ids = {}; + var modules_list = $('.module', $(el)); + $(modules_list).each(function () { + var id = $(this).attr('id'); + if (id) { + id = '#' + id; + } else { + var id = $(this).attr('data-type'); + } + if (!id) { + var id = $(this).attr('type'); + } + modules_ids[id] = true; + }); + + + $.each(modules_ids, function (index, value) { + wroot.mw.reload_module(index); + }); + + + if (master_edit_field_holder) { + $(master_edit_field_holder).addClass("changed"); + setTimeout(function () { + wroot.mw.drag.fix_placeholders(true); + wroot.mw.on.DOMChangePause = false; + + + }, 200); + } + + mw.html_editor.populate_editor(); + } + +} + + +mw.html_editor.reset_content = function (also_reset_modules) { + + var value = $('#select_edit_field li.selected'); + + if (value.length == 0) { + value = $('#select_edit_field li li').eq(0); + } + if (value.length == 0) { + return; + } + var field = value.attr('field'); + var rel = value.attr('rel'); + var cur = rel + '/' + field; + + + var html = ''; + + + if (typeof(mw.html_editor.map[cur]) != 'undefined') { + + + var el = mw.html_editor.map[cur].el; + + var mod_ids = mw.html_editor.find_all_module_ids_in_element(el); + var mod_ids_with_presets = mw.html_editor.find_all_module_ids_in_element(el, true); + + + if (also_reset_modules) { + var data = {}; + data.modules_ids = mod_ids; + if (mod_ids) { + $.post(mw.settings.api_url + "content/reset_modules_settings", data); + } + } + + + $.each(mod_ids_with_presets, function () { + var el_with_preset_id = mw.top().$('#' + this).attr('data-module-original-id'); + if (el_with_preset_id) { + mw.top().$('#' + this).attr('id', el_with_preset_id); + mw.top().$('#' + this).removeAttr('data-module-original-id'); + mw.top().$('#' + this).removeAttr('data-module-original-attrs'); + } + }); + + + if (field == 'title') { + var html = 'Untitled content'; + } + + + var childs_arr = {}; + + $(el).find('.edit').each(function (i) { + var some_child = {}; + some_child.rel = $(this).attr('rel'); + some_child.field = $(this).attr('field'); + childs_arr[i] = some_child; + }); + + + //if (childs_arr.length) { + + $.post(mw.settings.api_url + "content/reset_edit", childs_arr); + + //} + + $(el).html(html); + + if ($(el).hasClass('edit')) { + var master_edit_field_holder = el; + + } else { + var master_edit_field_holder = wroot.mw.tools.firstParentWithClass(el, 'edit'); + + } + + + mw.tools.addClass(el, 'changed') + mw.tools.foreachParents(el, function () { + if (mw.tools.hasClass(this, 'edit')) { + mw.tools.addClass(this, 'changed') + } + }); + var all = el.querySelectorAll('.edit'), i = 0; + for (var i = 0; i < all.length; i++) { + mw.tools.addClass(all[i], 'changed') + } + + + if (master_edit_field_holder) { + + + wroot.mw.on.DOMChangePause = true; + setTimeout(function () { + wroot.mw.drag.fix_placeholders(true); + wroot.mw.on.DOMChangePause = false; + var saved = wroot.mw.drag.save(); + if (saved) { + saved.success(function (saved_data) { + + if (typeof saved_data[0] == 'undefined') { + return; + } + saved_data = saved_data[0]; + + + setTimeout(function () { + wroot.window.location.reload() + + }, 1000); + + }) + } + + + }, 200); + } + } + + +} + + +mw.html_editor.find_all_module_ids_in_element = function (element, only_with_presets) { + + var mod_ids = []; + + var mod_in_mods_html_btn = ''; + // var mods_in_mod = wroot.$(element).find('.module'); + var mods_in_mod = wroot.$(element).find('.module'); + + if (mods_in_mod) { + + + $(mods_in_mod).each(function () { + + var inner_mod_type = $(this).attr("type"); + var inner_mod_id = $(this).attr("id"); + var preset_id = $(this).attr("data-module-original-id"); + + if (typeof only_with_presets != 'undefined' && only_with_presets) { + + if (preset_id) { + mod_ids.push(inner_mod_id); + } + } else { + if (!preset_id) { + mod_ids.push(inner_mod_id); + } + } + + + }); + return mod_ids; + } + + +} + diff --git a/update/userfiles/modules/editor/index.php b/update/userfiles/modules/editor/index.php deleted file mode 100644 index 9a29bd04..00000000 --- a/update/userfiles/modules/editor/index.php +++ /dev/null @@ -1,46 +0,0 @@ - - - - -get($params_get_files); - -$path_nav = explode(DS, $path); - - - - -$tn_size = 150; -$image_item_class = 'image-item'; -$browser_list_holder_class = 'mw-browser-list'; - -if(isset($params['viewsize'])){ - if($params['viewsize']=='big'){ - $tn_size = 260; - $image_item_class = 'image-item-big'; - $browser_list_holder_class = 'mw-browser-list mw-browser-list-big'; - - } -} - -?> - - - -
      -
      - - - -Thumbnail size: - - - - - - - - - - - - - - - - - - - - » - - - - - 0): - ?> - - » - - -
      - - -
      - - - - -
      - - - - - -
      -
      diff --git a/update/userfiles/modules/help/help/UI_Api.php b/update/userfiles/modules/help/help/UI_Api.php deleted file mode 100644 index dc359d2d..00000000 --- a/update/userfiles/modules/help/help/UI_Api.php +++ /dev/null @@ -1,888 +0,0 @@ - - - - - - - - -
      - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - Button - Button - Button - Button - Button'); ?>
      - Medium - Medium - Medium - Medium -
      - - Small - Small - Small - Small - -
      Button on hover
      Button on hover - Blue
      Simple link
      Action Button
      Button with icon
      - - - -
      -

      Button with Dropdown

      - - - -
      - -
      - -
      - - - -
      - -
      - -
      - - -
      - -
      -
      - - Success -
      -
      -
      - -
      -
      - Warning -
      -
      -
      - -
      -
      - Error -
      -
      -
      - -
      - - -
      -
      - -

      Icons

      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -
      -

      Combining fields and icons

      - -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - - - - - -
      - -
      Klasove
      - -
        -
      1. unselectable
      2. -
      3. mw_clear
      4. -
      5. vSpace
      6. -
      7. left
      8. -
      9. right
      10. -
      11. semi_hidden
      12. -
      - -
      - - Admin side nav
      - -

      Vetical Navigations

      - - - - - - - - -
      -

      Progress Bar

      -
      -
      -
      Status: 60%
      -
      -
      -
      Hi I'm 'O' Box
      Lorem Ipsum
      - -
      The 'O' Box
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Table HeadClientCountryCityOrdersView
      Table FooterClientCountryCityOrdersView
      LoremIpsumSitAmetDolor987987View on hover
      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -

      Accordion applied to a box

      -
      -
      - Accordion -
      -
      - Accordion content -
      -
      - - - - - -
      -

      Accordion without stlyes

      -
      -
      - Basic Accordion -
      -
      - Basic Accordion content -
      -
      -

      Accodion applied to an unordered list

      -
        -
      • - List Accordion - -
      • -
      -
      - -

      Tabs

      -
      - -
      tab 1
      -
      tab 2
      -
      - -
      - Stylish - Simple -
      - - - -

      Dropdowns

      -
      - Default -
      - -
      -
      -
      -
      - With textfield - -
      - -
      -
      - -
      - -
      - -
      - - - Simple - -
      - -
      -
      -
      -
      - -
      -

      Dropdown API

      - -
      - -
      $(".my-dropdown").setDropdownValue(value, trigger_change)
      -
      Sets value for a dropdown. If second parameter is true the 'change' event will be triggered.
      -
      $(".my-dropdown").getDropdownValue()
      -
      Gets value for a dropdown.
      - -
      Example usage of change event
      -
      -
      -$(".my-dropdown").bind("change", function(){
      -   var val = $(this).getDropdownValue();
      -});
      -
      -
      - - -
      - -
      -

      Tag

      - -
      -

      - -
      -
      -
      - - - - - - - - - - - - - - - -
      - - -
      -

      API

      - -

      mw.wysiwyg

      -
      - -
      -
      mw.wysiwyg.execCommand('command')
      -
      Executes a command
      - -
      mw.wysiwyg.applier(tag, classname)
      -
      Wraps selected text in a specified tag and a classname.
      -
      mw.wysiwyg.insert_html(html)
      Replaces selection with an specified html
      -
      mw.wysiwyg.save_selection()
      Saves current selection.
      -
      mw.wysiwyg.restore_selection()
      Restores last saved selection
      -
      mw.wysiwyg.select_all(node)
      Selects all the content inside an element
      -
      mw.wysiwyg.select_element(node)
      Selects an element
      -
      -
      - -
      - - - - - - - -
      - -
      - - - - - - - - - -
      -

      Modals

      - Default - - Custom Template - - Media upload with callback - - - - - - - Link management - - - - - - -

      API

      - - - -
      -
      -
      - - - - - - - - - - - -
       
      - - - - - diff --git a/update/userfiles/modules/inline_table/config.php b/update/userfiles/modules/inline_table/config.php new file mode 100644 index 00000000..bdf62e53 --- /dev/null +++ b/update/userfiles/modules/inline_table/config.php @@ -0,0 +1,14 @@ + + + + + + + + + + + + +
      Lorem IpsumLorem Ipsum
      Lorem IpsumLorem Ipsum
      + \ No newline at end of file diff --git a/update/userfiles/modules/instagram_feed/index.php b/update/userfiles/modules/instagram_feed/index.php index 95f52f50..da3918bb 100644 --- a/update/userfiles/modules/instagram_feed/index.php +++ b/update/userfiles/modules/instagram_feed/index.php @@ -2,13 +2,22 @@ $template = get_option('data-template', $params['id']); $defaultUsername = 'bummer.frenchie.wild'; + $username = get_option('username', $params['id']); -if (!isset($username) or $username == false or $username == '') { +if ($username) { + $username = $username; +} elseif (isset($params['data-instagram'])) { + $username = $params['data-instagram']; +} else { $username = $defaultUsername; } $number_of_items = get_option('number_of_items', $params['id']); -if (!isset($number_of_items) or $number_of_items == false or $number_of_items == '') { +if ($number_of_items) { + $number_of_items = $number_of_items; +} elseif (isset($params['data-items'])) { + $number_of_items = $params['data-items']; +} else { $number_of_items = 3; } diff --git a/update/userfiles/modules/layouts/debug.php b/update/userfiles/modules/layouts/debug.php deleted file mode 100644 index e5de8124..00000000 --- a/update/userfiles/modules/layouts/debug.php +++ /dev/null @@ -1,43 +0,0 @@ - -

      All layouts

      -
      -'.$template['layout_file'].''; - print ''; - -} - - - - -?> -

      All modules

      -
      -modules->get('installed=1&ui=1'); - - -foreach($modules as $module){ - - - print '

      '.$module['module'].'

      '; - print ''; - -} - - - - -?> \ No newline at end of file diff --git a/update/userfiles/modules/logo/admin.php b/update/userfiles/modules/logo/admin.php deleted file mode 100644 index 654a9abd..00000000 --- a/update/userfiles/modules/logo/admin.php +++ /dev/null @@ -1,630 +0,0 @@ - - - - - - - - - - - - -
      - - - -
      -
      - -
      - -
      - -
      - -
      - -
      -
      - -
      - -
      -
      - -
      - -
      -
      -
      - style="display:block;" /> -
      -
      - -
      - Upload Image - -
      -
      -
      - -
      - - -
      - -
      - -
      -
      -
      - style="display:block;" /> -
      -
      - -
      - Upload Image - -
      -
      -
      - - -
      -
      -
      - -
      - - -
      - -
      -
      - -
      - -
      - -
      -
      -
      -
      - -
      -
      - -
      - -
      - -
      -
      -
      - - diff --git a/update/userfiles/modules/menu/admin_live_edit_tab1.php b/update/userfiles/modules/menu/admin_live_edit_tab1.php new file mode 100644 index 00000000..686a062a --- /dev/null +++ b/update/userfiles/modules/menu/admin_live_edit_tab1.php @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + +menu_manager->menu_create('id=0&title=' . $params['title']); + $menu_id = get_menus('one=1&title=' . $menu_name); + } +} + +if (isset($menu_id['title'])) { + $active_menu = $menu_id['title']; +} +$menu_id = get_menus('one=1&title=' . $menu_name); +if ($menu_id == false) { + $active_menu = $menu_name = 'header_menu'; + $menu_id = get_menus('one=1&title=' . $menu_name); +} + + +$menu_data = $menu_id; + +$menu_id = 0; + + +if ($menu_data) { + $menu_id = $menu_data['id']; +} + + +?> + + + +
      + + + + + +
      + + +
      + +
      + + + +
      + + + + + + + +
      + Add menu item + +
      + diff --git a/update/userfiles/modules/menu/edit_item.php b/update/userfiles/modules/menu/edit_item.php new file mode 100644 index 00000000..b8f273c1 --- /dev/null +++ b/update/userfiles/modules/menu/edit_item.php @@ -0,0 +1,276 @@ +menu_manager->menu_item_get($id); +} +if ($id != 0) { +//$data = menu_tree( $id); +} + + + +?> + + + + +
    • Auto populate
    • +
    • + +
    • +
    */ + + + ?> + + + + + + + + + + + + + + + + + + + + diff --git a/update/userfiles/modules/microweber/api/admin_custom_fields.js b/update/userfiles/modules/microweber/api/admin_custom_fields.js deleted file mode 100644 index 77c5f070..00000000 --- a/update/userfiles/modules/microweber/api/admin_custom_fields.js +++ /dev/null @@ -1,242 +0,0 @@ -mw.admin = mw.admin || {}; -mw.admin.custom_fields = mw.admin.custom_fields || {}; - -mw.admin.custom_fields.initValues = function () { - var master = mwd.getElementById('custom-fields-post-table'); - if ( master === null ) { - return false; - } - var all = master.querySelectorAll('.mw-admin-custom-field-name-edit-inline, .mw-admin-custom-field-value-edit-inline'), - l = all.length, - i = 0; - for (; i < l; i++) { - mw.admin.custom_fields.initValue(all[i]); - } - mw.admin.custom_fields.addValueButtons(); - all = master.querySelectorAll('.mw-admin-custom-field-value-edit-text'); - l = all.length; - i = 0; - for ( ; i < l; i++ ) { - mw.admin.custom_fields.initTextAreaValue(all[i]); - } -}; - - -mw.admin.custom_fields.initTextAreaValue = function (node) { - if (!node.fieldBinded) { - node.fieldBinded = true; - mw.$(node).bind('keyup paste click', function (e) { - var sh = this.scrollHeight; - var oh = this.offsetHeight; - if(sh > oh){ - this.style.height = sh+"px"; - } - - }); - node.onchange = function (e) { - var data = { - id: mw.$(this).dataset('id'), - value: mw.$(this).val() - }; - $.post(mw.settings.api_url + 'fields/save', data, function () { - mw.custom_fields.after_save(); - }); - } - } -}; - -mw.admin.custom_fields.initValue = function (node) { - if (!node.fieldBinded) { - node.fieldBinded = true; - node.onclick = function (e) { - mw.admin.custom_fields.valueLiveEdit(this); - } - } -} -mw.admin.custom_fields.addValueButtons = function (root) { - var root = root || mwd, all = root.querySelectorAll(".btn-create-custom-field-value"), l = all.length, i = 0; - for (; i < l; i++) { - if (!!all[i].avbinded) { - continue; - } - all[i].avbinded = true; - all[i].onclick = function () { - var span = mwd.createElement('span'); - span.className = 'mw-admin-custom-field-value-edit-inline-holder'; - span.innerHTML = ','; - mw.admin.custom_fields.initValue(span.querySelector('.mw-admin-custom-field-value-edit-inline')); - mw.$(this).prev().append(span); - mw.admin.custom_fields.valueLiveEdit(span.querySelector('.mw-admin-custom-field-value-edit-inline')); - } - } - -} - -mw.admin.custom_fields.valueLiveEdit = function (span) { - mw.$(span.parentNode).addClass('active'); - mw.tools.addClass(mw.tools.firstParentWithTag(span, 'tr'), 'active'); - var input = mw.tools.liveEdit(span, true, function (el) { - var data; - if (mw.tools.hasClass(el, 'mw-admin-custom-field-value-edit-inline')) { - var vals = [], - all = mw.tools.firstParentWithClass(el, 'custom-fields-values-holder').parentNode.querySelectorAll('.mw-admin-custom-field-value-edit-inline'), - l = all.length, - i = 0; - for (; i < l; i++) { - vals.push(all[i].textContent); - } - - data = { - id: mw.$(el).dataset('id'), - value: vals - }; - } - else { - data = { - id: mw.$(el).dataset('id'), - name: mw.$(el).text() - }; - } - mw.tools.removeClass(mw.tools.firstParentWithTag(this, 'tr'), 'active'); - $.post(mw.settings.api_url + 'fields/save', data, function (adata) { - - if (mwd.getElementById('mw-custom-fields-list-settings-' + data.id) != null) { - - var rstr = mwd.getElementById('mw-custom-fields-list-settings-' + data.id).innerHTML.replace(/\s+/g, ''); - - if (rstr && !!data.value) { - mw.reload_module('#mw-custom-fields-list-settings-' + data.id); - } - } - - mw.custom_fields.after_save(); - - }); - mw.$(el.parentNode).removeClass('active'); - mw.tools.removeClass(mw.tools.firstParentWithTag(el, 'tr'), 'active'); - }); - mw.$(input).bind('blur', function () { - mw.$('.mw-admin-custom-field-value-edit-inline-holder.active').removeClass('active'); - mw.tools.removeClass(mw.tools.firstParentWithTag(this, 'tr'), 'active'); - }); - mw.$(input).bind('keydown', function (e) { - - var code = (e.keyCode ? e.keyCode : e.which); - - if (code == 9) { - var parent = mw.tools.firstParentWithClass(e.target, 'mw-admin-custom-field-value-edit-inline-holder'); - if (!e.shiftKey) { - if (parent.nextElementSibling !== null && mw.tools.hasClass(parent.nextElementSibling, 'mw-admin-custom-field-value-edit-inline-holder')) { - mw.admin.custom_fields.valueLiveEdit(parent.nextElementSibling.querySelector('.mw-admin-custom-field-value-edit-inline')); - } - else { - - } - } - else { - if (parent.previousElementSibling !== null && mw.tools.hasClass(parent.previousElementSibling, 'mw-admin-custom-field-value-edit-inline-holder')) { - mw.admin.custom_fields.valueLiveEdit(parent.previousElementSibling.querySelector('.mw-admin-custom-field-value-edit-inline')); - } - else { - - } - } - - return false; - } else { - - /* - var el = mw.$( e.target)[0]; - mw.on.stopWriting(el, function () { - - var parent = mw.tools.firstParentWithClass(el, 'mw-admin-custom-field-value-edit-inline'); - d(parent); - mw.admin.custom_fields.valueLiveEdit(parent); - - - });*/ - - } - }); -} -mw.admin.custom_fields.make_fields_sortable = function () { - var sortable_holder = mw.$("#custom-fields-post-table").eq(0); - if (!sortable_holder.hasClass('ui-sortable') && sortable_holder.find('tr').length > 1) { - sortable_holder.sortable({ - items: 'tr', - distance: 35, - update: function (event, ui) { - var obj = {ids: []}; - mw.$(this).find(".mw-admin-custom-field-name-edit-inline").each(function () { - var id = mw.$(this).dataset("id"); - obj.ids.push(id); - }); - - - $.post(mw.settings.api_url + "fields/reorder", obj, function () { - - }); - } - }); - } - return sortable_holder; -}; -mw.admin.custom_fields.del = function (id, toremove) { - var q = "Are you sure you want to delete '" + mw.$('#mw-custom-list-element-' + id + ' .mw-admin-custom-field-name-edit-inline').text() + "' ?"; - mw.tools.confirm(q, function () { - - mw.custom_fields.remove(id, function (data) { - mw.$('#mw-custom-list-element-' + id).addClass('scale-out'); - setTimeout(function () { - mw.reload_module_parent('custom_fields'); - mw.reload_module('custom_fields/list', function () { - if (!!toremove) { - mw.$(toremove).remove(); - } - mw.$("#custom-field-editor").removeClass('mw-custom-field-created').hide(); - mw.trigger('customFieldSaved', id); - if (typeof load_iframe_editor === 'function') { - load_iframe_editor(); - } - mw.admin.custom_fields.initValues(); - }); - }, 300); - - }); - }); -}; -mw.admin.custom_fields.deleteFieldValue = function (el) { - mw.$(el.parentNode).remove(); -}; -mw.admin.custom_fields.edit_custom_field_item = function ($selector, id, callback, event) { - - var mTitle = (id ? 'Edit custom field' : 'Add new custom field'); - - var data = {}; - data.settings = 'y'; - data.field_id = id; - data.live_edit = true; - data.module_settings = true; - data.id = id; - - - data.params = {}; - data.params.field_id = id; - - editModal = mw.top().tools.open_module_modal('custom_fields/values_edit', data, { - overlay: false, - width:'450px', - height:'auto', - autoHeight: true, - iframe: true, - title: mTitle - }); - -}; - -$(mww).bind('load', function () { - mw.admin.custom_fields.initValues(); -}); -$(mwd).ready(function () { - mw.admin.custom_fields.initValues(); -}); diff --git a/update/userfiles/modules/microweber/api/api.js b/update/userfiles/modules/microweber/api/api.js index c8df16a9..9f69891f 100644 --- a/update/userfiles/modules/microweber/api/api.js +++ b/update/userfiles/modules/microweber/api/api.js @@ -1057,3 +1057,61 @@ $(window).on('load', function(){ + + +/* + options.data = [ + { + title: string, + value: any, + icon?: string, + selected?: boolean + } + ] + + */ + +mw.Select = function(options) { + var defaults = { + data: [], + skin: 'default' + }; + options = options || {}; + this.settings = $.extend({}, defaults, options); + var scope = this; + + this.rendOption = function(item){ + var oh = document.createElement('div'); + oh.$value = item.value; + oh.$data = item; + oh.className = 'mw-select-option'; + oh.onclick = function () { + scope.setValue(oh.$value) + }; + return oh; + }; + + this.rendValueholder = function(item){ + var oh = document.createElement('div'); + oh.className = 'mw-select-value'; + oh.onclick = function () { + scope.setValue(oh.$value) + }; + return oh; + }; + + this.setValue = function(val){ + if(!val) return; + }; + + this.rendOptions = function(){ + var oh = document.createElement('div'); + oh.className = 'mw-select'; + $.each(this.settings.data, function(){ + oh.appendChild(this.rendOption(this)) + }); + return oh; + } + +}; + diff --git a/update/userfiles/modules/microweber/api/components.js b/update/userfiles/modules/microweber/api/components.js deleted file mode 100644 index f4d0875d..00000000 --- a/update/userfiles/modules/microweber/api/components.js +++ /dev/null @@ -1,248 +0,0 @@ -mw.components = { - _rangeOnce: false, - 'range': function(el){ - var options = this._options(el); - var defaults = { - range: 'min' - }; - var settings = $.extend({}, defaults, options); - mw.$(el) - .slider(settings) - .on('mousedown touchstart', function(){ - mw.$(this).addClass('active'); - }); - if(!mw.components._rangeOnce) { - mw.components._rangeOnce = true; - mw.$(document.body).on('mouseup touchend', function(){ - mw.$('.mw-range.active').removeClass('active'); - }); - } - }, - 'color-picker': function(el){ - var options = this._options(el); - var defaults = { - position: 'bottom-center' - }; - var settings = $.extend({}, defaults, options); - var nav = document.createElement('div'); - nav.className = 'mw-ui-btn-nav mw-color-picker-holder'; - var view = document.createElement('div'); - view.className = 'mw-ui-btn'; - view.innerHTML = ''; - nav.appendChild(view); - var inputEl; - if(el.nodeName === 'INPUT'){ - inputEl = el; - mw.$(el).addClass('mw-ui-field').after(nav); - nav.appendChild(el); - mw.$('.mw-ui-btn-img', view).css("background-color", el.value); - } - - inputEl._time = null; - var picker = mw.colorPicker({ - element:inputEl, - position:settings.position, - onchange:function(color){ - mw.$('.mw-ui-btn-img', view).css("background-color", color); - mw.$(inputEl).trigger('change'); - } - }); - mw.$(view).on("click", function(){ - setTimeout(function(){ - picker.toggle(); - }, 10); - }); - }, - 'file-uploader':function(el){ - var options = this._options(el); - var defaults = { - element: el - }; - var settings = $.extend({}, defaults, options); - var ch = mw.$(el).attr("onchange"); - - mw.fileWindow({ - types:'media', - change:function(url){ - try{ - eval(ch); - } - catch(err){} - } - }); - }, - 'modules-tabs':function(el){ - var options = this._options(el); - options.breakPoint = 100; //makes accordion if less then 100px - if(window.live_edit_sidebar) { - mw.$(el).addClass('mw-accordion-window-height') - options.breakPoint = 800; //makes accordion if less then 800px - } - var accordion = this.accordion(el); - var tb = new mw.tabAccordion(options, accordion); - }, - 'tab-accordion':function(el){ - var options = this._options(el); - var accordion = this.accordion(el); - var tb = new mw.tabAccordion(options, accordion); - }, - accordion:function(el){ - if(!el || el._accordion) return; - if(!$(el).is(':visible')){ - setTimeout(function(){ - mw.components.accordion(el); - }, 777, el); - return; - } - el._accordion = true; - var options = this._options(el); - var settings = $.extend(options, {element:el}) - var accordion = new mw.uiAccordion(settings); - if($(el).hasClass('mw-accordion-window-height')){ - accordion._setHeight = function(){ - var max = mw.$(window).height() - (accordion.root.offset().top - mw.$(window).scrollTop()); - accordion.root.css('height', max); - var content_max = max - (accordion.titles.length * accordion.titles.eq(0).outerHeight()); - accordion.contents.css('height', content_max); - }; - accordion._setHeight(); - mw.$(window).on('load resize', function(){ - accordion._setHeight(); - }); - if(window !== top){ - mw.$(top).on('load resize', function(){ - accordion._setHeight(); - }); - } - } - if($(el).hasClass('mw-accordion-full-height')){ - accordion._setHeight = function(){ - var max = Math.min($(el).parent().height(), mw.$(window).height()); - accordion.root.css('maxHeight', max); - var content_max = max - (accordion.titles.length * accordion.titles.eq(0).outerHeight()); - accordion.contents.css('maxHeight', content_max); - }; - accordion._setHeight(); - mw.$(window).on('load resize', function(){ - accordion._setHeight(); - }); - if(window !== top){ - mw.$(top).on('load resize', function(){ - accordion._setHeight(); - }); - } - } - return accordion; - }, - postSearch: function (el) { - var defaults = {keyword: el.value, limit: 4}; - el._setValue = function (id) { - mw.tools.ajaxSearch(this._settings, function () { - - }); - }; - - el = mw.$(el); - var options = JSON.parse(el.attr("data-options") || '{}'); - settings = $.extend({}, defaults, options); - el[0]._settings = settings; - - el.wrap("
    "); - el.after("
      "); - - el.on("input focus blur", function (event) { - - if (!el[0].is_searching) { - var val = el.val(); - if (event.type == 'blur') { - mw.$(this).next('ul').hide(); - return false; - } - if (event.type == 'focus') { - if ($(this).next('ul').html()) { - mw.$(this).next('ul').show() - } - return false; - } - el[0].is_searching = true; - - this._settings.keyword = this.value; - mw.$('ul', el).empty("") - el.parent().addClass("loading"); - mw.tools.ajaxSearch(this._settings, function () { - var lis = []; - var json = this; - for (var item in json) { - var obj = json[item]; - if (typeof obj === 'object') { - var li = document.createElement("li"); - li._value = obj; - li.innerHTML = obj.title; - mw.$(li).on("mousedown touchstart", function () { - el.val(this._value.title); - - el[0]._value = this._value; - - el.trigger('postSelected', [this._value]); - mw.$(this.parentNode).hide() - }) - - lis.push(li); - } - } - el.parent().removeClass("loading"); - var ul = el.parent().find("ul"); - ul.empty().append(lis).show(); - el[0].is_searching = false; - }); - } - }); - el.trigger("postSearchReady") - }, - _options: function (el) { - return mw.tools.elementOptions(el) - }, - _init: function () { - mw.$('[data-mwcomponent]').each(function () { - var component = mw.$(this).attr("data-mwcomponent"); - if (mw.components[component]) { - mw.components[component](this); - mw.$(this).removeAttr('data-mwcomponent') - } - }); - $.each(this, function(key){ - if(key.indexOf('_') === -1){ - mw.$('.mw-'+key+', '+key).not(".mw-component-ready").each(function () { - mw.$(this).addClass('mw-component-ready'); - mw.components[key](this); - }); - } - }); - } -}; - -$(document).ready(function () { - mw.components._init(); -}); - -$(window).on('load', function () { - mw.components._init(); -}); - -mw.on('ComponentsLaunch', function () { - mw.components._init(); -}); - -$(window).on('ajaxStop', function () { - setTimeout(function () { - mw.components._init(); - }, 100); -}); - -mw.registerComponent = function(name, func){ - if(mw.components[name]){ - console.warn('Component ' + name + ' already exists.'); - return; - } - mw.components[name] = func; -}; diff --git a/update/userfiles/modules/microweber/api/content.js b/update/userfiles/modules/microweber/api/content.js deleted file mode 100644 index 35d04ad5..00000000 --- a/update/userfiles/modules/microweber/api/content.js +++ /dev/null @@ -1,202 +0,0 @@ - - mw.content = mw.content || { - - deleteContent: function (id, callback) { - mw.tools.confirm(mw.msg.del, function () { - $.post(mw.settings.site_url + "api/content/delete", {id: id}, function (data) { - if (callback) { - callback.call(data, data); - } - mw.notification.success('Content deleted'); - }); - }) - }, - deleteCategory: function (id, callback) { - mw.tools.confirm('Are you sure you want to delete this?', function () { - $.post(mw.settings.site_url + "api/category/delete", {id: id}, function (data) { - mw.notification.success('Category deleted'); - if (callback) { - callback.call(data, data); - } - }); - }); - }, - publish : function($id) { - var master = {}; - master.id= $id; - mw.$(mwd.body).addClass("loading"); - mw.drag.save(); - $.ajax({ - type: 'POST', - url: mw.settings.site_url + 'api/content/set_published', - data: master, - datatype: "json", - async: true, - beforeSend: function() { - - }, - success: function(data) { - mw.$(mwd.body).removeClass("loading"); - $('.mw-set-content-publish').hide(); - mw.$('.mw-set-content-unpublish').fadeIn(); - mw.askusertostay = false; - mw.notification.success("Content is Published."); - }, - error:function(){ - mw.$(mwd.body).removeClass("loading"); - }, - complete:function(){ - mw.$(mwd.body).removeClass("loading"); - } - }); - }, - unpublish : function($id) { - var master = {}; - master.id= $id; - mw.$(mwd.body).addClass("loading"); - - mw.drag.save(); - $.ajax({ - type: 'POST', - url: mw.settings.site_url + 'api/content/set_unpublished', - data: master, - datatype: "json", - async: true, - beforeSend: function() { - - }, - success: function(data) { - mw.$(mwd.body).removeClass("loading"); - mw.$('.mw-set-content-unpublish').hide(); - mw.$('.mw-set-content-publish').fadeIn(); - mw.askusertostay = false; - mw.notification.warning("Content is Unpublished."); - }, - error:function(){ - mw.$(mwd.body).removeClass("loading"); - }, - complete:function(){ - mw.$(mwd.body).removeClass("loading"); - } - }); - - }, - save:function(data, e){ - var master = {}; - var calc = {}; - var e = e || {}; - // data.subtype === 'category' - if(data.content == "" || typeof data.content === 'undefined'){ - // calc.content = false; - } - else{ - var doc = mw.tools.parseHtml(data.content); - var all = doc.querySelectorAll('[contenteditable]'), l=all.length, i=0; - for( ; i= 0; i--) { var dlg = mw.__dialogs[i]; if (dlg.options.closeOnEscape) { - dlg.remove(); + dlg._doCloseButton(); break; } } @@ -264,7 +274,7 @@ this.dialogContainer.className = 'mw-dialog-container'; this.dialogHolder.className = 'mw-dialog-holder'; - var cont = this.options.encapsulate ? mw._dialogEncapsulate(this.options.content) : this.options.content; + var cont = this.options.encapsulate ? dialogEncapsulate(this.options.content) : this.options.content; mw.$(this.dialogContainer).append(cont); @@ -283,7 +293,7 @@ this.closeButton.$scope = this; this.closeButton.onclick = function () { - this.$scope.remove(); + this.$scope[this.$scope.options.closeButtonAction](); }; this.main = mw.$(this.dialogContainer); // obsolete this.main.width = this.width; @@ -304,6 +314,10 @@ return this; }; + this._doCloseButton = function() { + this[this.options.closeButtonAction](); + }; + this.containmentManage = function () { if (scope.options.containment === 'window') { if (scope.options.scrollMode === 'inside') { @@ -327,7 +341,7 @@ } mw.$(this.overlay).on('click', function () { if (this.$scope.options.overlayClose === true) { - this.$scope.remove(); + this.$scope._doCloseButton(); } }); @@ -364,6 +378,9 @@ this.hide = function () { if (!this._hideStart) { this._hideStart = true; + setTimeout(function () { + scope._hideStart = false; + }, 300) mw.$(this.dialogMain).removeClass('active'); if(mw._iframeDetector) { mw._iframeDetector.pause = false; @@ -481,7 +498,7 @@ } $(this).trigger('Result', [result]); if(doClose){ - this.remove(); + this._doCloseButton(); } }; diff --git a/update/userfiles/modules/microweber/api/element_analyzer.js b/update/userfiles/modules/microweber/api/element_analyzer.js deleted file mode 100644 index defbe1b6..00000000 --- a/update/userfiles/modules/microweber/api/element_analyzer.js +++ /dev/null @@ -1,526 +0,0 @@ -mw.AfterDrop = function(){ - - - this.loadNewModules = function(){ - mw.pauseSave = true; - var need_re_init = false; - var all = mw.$(".edit .module-item"), count = 0; - all.each(function(c) { - (function (el) { - var xhr = mw._({ - selector: el, - done: function(module) { - mw.drag.fancynateLoading(module); - mw.pauseSave = false; - mw.wysiwyg.init_editables(); - }, - fail:function () { - mw.$(this).remove(); - mw.notification.error('Error loading module.'); - } - }, true); - if(xhr) { - xhr.always(function () { - count++; - if(all.length === count) { - mw.dragCurrent = null; - } - }); - } - else { - count++; - } - - need_re_init = true; - })(this); - }); - if (mw.have_new_items === true) { - need_re_init = true; - } - if (need_re_init === true) { - if (!mw.isDrag) { - if (typeof callback === 'function') { - callback.call(this); - } - } - } - mw.have_new_items = false; - }; - - this.__timeInit = null; - - this.init = function(){ - var scope = this; - if(scope.__timeInit){ - clearTimeout(scope.__timeInit); - } - scope.__timeInit = setTimeout(function(){ - - mw.$(".mw-drag-current-bottom, .mw-drag-current-top").removeClass('mw-drag-current-bottom mw-drag-current-top'); - mw.$(".currentDragMouseOver").removeClass('currentDragMouseOver'); - - mw.$(".mw_drag_current").each(function(){ - mw.$(this).removeClass('mw_drag_current').css({ - visibility:'visible', - opacity:'' - }); - }); - mw.$(".currentDragMouseOver").removeClass('currentDragMouseOver') - mw.$(".mw-empty").not(':empty').removeClass('mw-empty'); - scope.loadNewModules() - mw.dropable.hide().removeClass('mw_dropable_onleaveedit'); - - }, 78) - } - - -} - - -/************************************************************* - - - Options: Object literal - - Default: { - classes:{ - edit:'edit', - element:'element', - module:'module', - noDrop:'nodrop', // - disable drop - allowDrop:'allow-drop' //- enable drop in .nodrop - } - } - - - - mw.analizer = new mw.ElementAnalizer(Options); - - - - -*************************************************************/ - -mw.ElementAnalyzer = function(options){ - - - - this.data = { - dropableAction:null, - currentGrabbed:null, - target:null, - dropablePosition:null - }; - - this.dataReset = function(){ - this.data = { - dropableAction:null, - currentGrabbed:null, - target:null, - dropablePosition:null - } - }; - - this.options = options || {}; - this.defaults = { - classes:{ - edit: 'edit', - element: 'element', - module: 'module', - noDrop: 'nodrop', - allowDrop: 'allow-drop', - emptyElement: 'mw-empty', - zone: 'mw-zone' - }, - rows:['mw-row', 'mw-ui-row', 'row'], - columns:['mw-col', 'mw-ui-col', 'col', 'column', 'columns'], - columnMatches:'[class*="col-"]', - rowMatches:'[class*="row-"]', - }; - this.settings = $.extend({}, this.options, this.defaults); - - this.prepare = function(){ - this.cls = this.settings.classes; - this.initCSS(); - }; - - this.initCSS = function(){ - var css = 'body.dragStart .'+this.cls.noDrop+'{' - +'pointer-events: none;' - +'}' - +'body.dragStart .'+this.cls.allowDrop+'{' - +'pointer-events: all;' - +'}'; - - var style = mwd.createElement('style'); - mwd.getElementsByTagName('head')[0].appendChild(style); - style.innerHTML = css; - }; - - - this._isEditLike = function(node){ - node = node || this.data.target; - var case1 = mw.tools.parentsOrCurrentOrderMatchOrOnlyFirst(node, [this.cls.edit,this.cls.module]); - var case2 = mw.tools.hasClass(node, 'module') && mw.tools.parentsOrCurrentOrderMatchOrOnlyFirst(node.parentNode, [this.cls.edit,this.cls.module]); - var edit = mw.tools.firstParentOrCurrentWithAnyOfClasses(node, this.cls.edit); - return (case1 || case2) && !mw.tools.hasClass(edit, this.cls.noDrop); - }; - this._canDrop = function(node){ - node = node || this.data.target; - return mw.tools.parentsOrCurrentOrderMatchOrOnlyFirstOrNone(node, [this.cls.allowDrop, this.cls.noDrop]); - }; - - this._layoutInLayout = function(){ - if(!this.data.currentGrabbed || !mwd.body.contains(this.data.currentGrabbed)){ - return false; - } - var currentGrabbedIsLayout = (this.data.currentGrabbed.getAttribute('data-module-name') === 'layouts' || mw.dragCurrent.getAttribute('data-type') === 'layouts'); - var targetIsLayout = mw.tools.firstMatchesOnNodeOrParent(this.data.target, ['[data-module-name="layouts"]', '[data-type="layouts"]']); - return { - target:targetIsLayout, - result:currentGrabbedIsLayout && !!targetIsLayout - }; - }; - - this.canDrop = function(node){ - node = node || this.data.target; - var can = (this._isEditLike(node) && this._canDrop(node) && !this._layoutInLayout().result); - return can; - }; - - - - this.analizePosition = function(event, node){ - node = node || this.data.target; - var height = node.offsetHeight, - offset = mw.$(node).offset(); - if (mw.event.page(event).y > offset.top + (height / 2)) { - this.data.dropablePosition = 'bottom'; - } else { - this.data.dropablePosition = 'top'; - } - }; - - this.analizeActionOfElement = function(node, pos){ - node = node || this.data.target; - pos = node || this.data.dropablePosition; - }; - this.afterAction = function(node, pos){ - if(!this._afterAction){ - this._afterAction = new mw.AfterDrop(); - } - - this._afterAction.init(); - - }; - this.dropableHide = function(){ - - }; - this.analizeAction = function(node, pos){ - node = node || this.data.target; - pos = pos || this.data.dropablePosition; - if(this.helpers.isEmpty()){ - this.data.dropableAction = 'append'; - return; - } - var actions = { - Around:{ - top:'before', - bottom:'after' - }, - Inside:{ - top:'prepend', - bottom:'append' - } - }; - - if(!pos){ - return; - } - - - - if(mw.tools.hasClass(node, 'allow-drop')){ - this.data.dropableAction = actions.Inside[pos]; - } - else if(this.helpers.isElement()){ - this.data.dropableAction = actions.Around[pos]; - } - else if(this.helpers.isEdit()){ - this.data.dropableAction = actions.Inside[pos]; - } - else if(this.helpers.isLayoutModule()){ - this.data.dropableAction = actions.Around[pos]; - } - else if(this.helpers.isModule()){ - this.data.dropableAction = actions.Around[pos]; - } - }; - - this.action = function(event){ - var node = event.target; - var final = {}; - if(this._isEditLike(node)){ - if(this._canDrop(node)){ - - } - } - }; - - - - this.helpers = { - scope:this, - isBlockLevel:function(node){ - node = node || (this.data ? this.data.target : null); - return mw.tools.isBlockLevel(node); - }, - isInlineLevel:function(node){ - node = node || this.data.target; - return mw.tools.isInlineLevel(node); - }, - canAccept:function(target, what){ - var accept = target.dataset('accept'); - if(!accept) return true; - accept = accept.trim().split(',').map(Function.prototype.call, String.prototype.trim); - var wtype = 'all'; - if(mw.tools.hasClass(what, 'module-layout')){ - wtype = 'layout'; - } - else if(mw.tools.hasClass(what, 'module')){ - wtype = 'module'; - } - else if(mw.tools.hasClass(what, 'element')){ - wtype = 'element'; - } - if(wtype=='all') return true - - return accept.indexOf(wtype) !== -1; - }, - getBlockElements:function(selector, root){ - root = root || document.body; - selector = selector || '*'; - var all = root.querySelectorAll(selector), i = 0; final = []; - for( ; i max){ - mw._on.userIteractionInitRegister = time; - mw.trigger('UserInteraction'); - } - }); - } -}; - -for(var x in mw._on) mw.on[x] = mw._on[x]; - - - -mw.hashHistory = [window.location.hash] - -mw.prevHash = function(){ - var prev = mw.hashHistory[mw.hashHistory.length - 2]; - return prev !== undefined ? prev : ''; -}; - - - -$(window).on("hashchange load", function(event){ - if(event.type === 'load'){ - mw._on.userIteractionInit(); - } - - mw.on.hashParamEventInit(); - - var hash = mw.hash(); - - var isMWHash = hash.replace(/\#/g, '').indexOf('mw@') === 0; - if (isMWHash) { - var MWHash = hash.replace(/\#/g, '').replace('mw@', ''); - var el = document.getElementById(MWHash); - if(el) { - mw.tools.scrollTo(el); - } - } - if(hash.contains("showpostscat")){ - mw.$("html").addClass("showpostscat"); - } - else{ - mw.$("html").removeClass("showpostscat"); - } - - - if (event.type === 'hashchange') { - mw.hashHistory.push(mw.hash()); - var size = mw.hashHistory.length; - var changes = mw.url.whichHashParamsHasBeenRemoved(mw.hashHistory[size-1], mw.hashHistory[size-2]), l=changes.length, i=0; - if (l>0) { - for( ; i < l; i++ ){ - mw.on.hashParam(changes[i], "", true, true); - } - } - } -}); - - -mw.event = { - windowLeave: function(c) { - document.documentElement.addEventListener('mouseout', function(e) { - if (!e.relatedTarget && !e.toElement && c) { - c.call(document.body, e); - } - }); - }, - cancel:function(e, prevent){ - prevent === true ? e.preventDefault() : ''; - e.cancelBubble = true; - if (e.stopPropagation) e.stopPropagation(); - }, - key:function(e,key){ - return (e.keyCode === parseFloat(key)); - }, - page: function (e) { - e = e.originalEvent || e; - if (e.type.indexOf('touch') !== 0) { - return { - x: e.pageX, - y: e.pageY - }; - } else { - return { - x: e.changedTouches[0].pageX, - y: e.changedTouches[0].pageY - }; - } - }, - targetIsField: function(e) { - e = e.originalEvent || e; - var t = e.target; - return t.nodeName === 'INPUT' || - t.nodeName === 'textarea' || - t.nodeName === 'select'; - }, - get: function(e) { - return e.originalEvent || e; - }, - keyCode: function(e) { - e = mw.event.get(e); - return e.keyCode || e.which; - }, - isKeyCode: function(e, code){ - return this.keyCode(e) === code; - }, - is: { - enter: function (e) { - e = mw.event.get(e); - return e.key === "Enter" || mw.event.isKeyCode(e, 13); - }, - escape: function (e) { - e = mw.event.get(e); - return e.key === "Escape" || mw.event.isKeyCode(e, 27); - }, - backSpace : function (e) { - e = mw.event.get(e); - return e.key === "Backspace" || mw.event.isKeyCode(e, 8); - }, - delete: function (e) { - e = mw.event.get(e); - return e.key === "Delete" || mw.event.isKeyCode(e, 46); - } - } -}; - - - - - - - - - - - - diff --git a/update/userfiles/modules/microweber/api/external_callbacks.js b/update/userfiles/modules/microweber/api/external_callbacks.js index 81e542c0..4c22c92d 100644 --- a/update/userfiles/modules/microweber/api/external_callbacks.js +++ b/update/userfiles/modules/microweber/api/external_callbacks.js @@ -3,6 +3,11 @@ mw.iframecallbacks = { }, insert_link: function (url, target, link_content) { + if(url.callee){ + target = url[1]; + link_content = url[2]; + url = url[0]; + } url = url.trim(); var contains = false; var arr = ['mailto:', 'tel:', 'skype:', 'sms:', 'geopoint:', 'whatsapp:'], diff --git a/update/userfiles/modules/microweber/api/handles.js b/update/userfiles/modules/microweber/api/handles.js deleted file mode 100644 index c0d6a558..00000000 --- a/update/userfiles/modules/microweber/api/handles.js +++ /dev/null @@ -1,819 +0,0 @@ -mw.require('selector.js'); - -var dynamicModulesMenu = function(e, el) { - if(!mw.inaccessibleModules){ - mw.inaccessibleModules = document.createElement('div'); - mw.inaccessibleModules.className = 'mw-ui-btn-nav mwInaccessibleModulesMenu'; - document.body.appendChild(mw.inaccessibleModules); - } - - var $el; - if(e.type === 'moduleOver'){ - - var parentModule = mw.tools.lastParentWithClass(el, 'module'); - var childModule = mw.tools.firstChildWithClass(el, 'module'); - - $el = mw.$(el); - if(!!parentModule && ( $el.offset().top - mw.$(parentModule).offset().top) < 10 ){ - el.__disableModuleTrigger = parentModule; - $el.addClass('inaccessibleModule'); - } - else if(!!childModule && ( mw.$(childModule).offset().top - $el.offset().top) < 10 ) { - childModule.__disableModuleTrigger = el; - mw.$(childModule).addClass('inaccessibleModule'); - } - else{ - $el.removeClass('inaccessibleModule'); - } - } - - mw.inaccessibleModules.innerHTML = ''; - var modules = mw.$(".inaccessibleModule", el); - if(modules.length === 0){ - var parent = mw.tools.firstParentWithClass(el, 'module'); - if(parent){ - if(($el.offset().top - mw.$(parent).offset().top) < 10) { - modules = mw.$([el]); - el = parent; - $el = mw.$(el); - } - } - } - modules.each(function(){ - var span = document.createElement('span'); - span.className = 'mw-handle-item mw-ui-btn mw-ui-btn-small'; - var type = mw.$(this).attr('data-type') || mw.$(this).attr('type'); - if(type){ - var title = mw.live_edit.registry[type] ? mw.live_edit.registry[type].title : type; - title = title.replace(/\_/, ' '); - span.innerHTML = mw.live_edit.getModuleIcon(type) + title; - var el = this; - span.onclick = function(){ - mw.tools.module_settings(el); - }; - mw.inaccessibleModules.appendChild(span); - } - }); - if(modules.length > 0){ - var off = mw.$(el).offset(); - if(mw.tools.collision(el, mw.handleModule.wrapper)){ - off.top = parseFloat(mw.handleModule.wrapper.style.top) + 30; - off.left = parseFloat(mw.handleModule.wrapper.style.left); - } - mw.inaccessibleModules.style.top = off.top + 'px'; - mw.inaccessibleModules.style.left = off.left + 'px'; - mw.$(mw.inaccessibleModules).show(); - } - else{ - mw.$(mw.inaccessibleModules).hide(); - } - - - return $el[0]; - -}; - - -mw.Handle = function(options) { - - this.options = options || {}; - - var scope = this; - - this._visible = true; - this.visible = function () { - return this._visible; - }; - - this.createWrapper = function() { - this.wrapper = mwd.createElement('div'); - this.wrapper.id = this.options.id || ('mw-handle-' + mw.random()); - this.wrapper.className = 'mw-defaults mw-handle-item ' + (this.options.className || 'mw-handle-type-default'); - this.wrapper.contenteditable = false; - mw.$(this.wrapper).on('mousedown', function () { - mw.tools.addClass(this, 'mw-handle-item-mouse-down'); - }); - mw.$(document).on('mouseup', function () { - mw.tools.removeClass(scope.wrapper, 'mw-handle-item-mouse-down'); - }); - mwd.body.appendChild(this.wrapper); - }; - - this.create = function() { - this.createWrapper(); - this.createHandler(); - this.createMenu(); - }; - - this.setTitle = function (icon, title) { - this.handleIcon.innerHTML = icon; - this.handleTitle.innerHTML = title; - }; - - this.hide = function () { - mw.$(this.wrapper).hide().removeClass('active'); - this._visible = false; - return this; - }; - - this.show = function () { - mw.$(this.wrapper).show(); - this._visible = true; - return this; - }; - - this.createHandler = function(){ - this.handle = mwd.createElement('span'); - this.handleIcon = mwd.createElement('span'); - this.handleTitle = mwd.createElement('span'); - this.handle.className = 'mw-handle-handler'; - this.handleIcon.className = 'mw-handle-handler-icon'; - this.handleTitle.className = 'mw-handle-handler-title'; - - this.handle.appendChild(this.handleIcon); - this.handle.appendChild(this.handleTitle); - this.wrapper.appendChild(this.handle); - - this.handleTitle.onclick = function () { - mw.$(scope.wrapper).toggleClass('active'); - }; - mw.$(mwd.body).on('click', function (e) { - if(!mw.tools.hasParentWithId(e.target, scope.wrapper.id)){ - mw.$(scope.wrapper).removeClass('active'); - } - }); - }; - - this.menuButton = function (data) { - var btn = mwd.createElement('span'); - btn.className = 'mw-handle-menu-item'; - if(data.icon) { - var icon = mwd.createElement('span'); - icon.className = data.icon + ' mw-handle-menu-item-icon'; - btn.appendChild(icon); - } - btn.appendChild(mwd.createTextNode(data.title)); - if(data.className){ - btn.className += (' ' + data.className); - } - if(data.id){ - btn.id = data.id; - } - if(data.action){ - btn.onmousedown = function (e) { - e.preventDefault(); - }; - btn.onclick = function (e) { - e.preventDefault(); - data.action.call(scope, e, this, data); - }; - } - return btn; - }; - - this._defaultButtons = [ - - ]; - - this.createMenuDynamicHolder = function(){ - var dn = mwd.createElement('div'); - dn.className = 'mw-handle-menu-dynamic'; - return dn; - }; - this.createMenu = function(){ - this.menu = mwd.createElement('div'); - this.menu.className = 'mw-handle-menu ' + (this.options.menuClass ? this.options.menuClass : 'mw-handle-menu-default'); - if (this.options.menu) { - for (var i=0; i (b.y + b.height)) || - ((a.x + a.width) < b.x) || - (a.x > (b.x + b.width)) - ); - }, - _manageCollision: false, - manageCollision:function () { - - var scope = this, - max = 35, - skip = []; - - scope.getAll().forEach(function (curr) { - var master = curr, masterRect; - //if (skip.indexOf(master) === -1){ - scope.getAll(curr).forEach(function (item) { - masterRect = master.wrapper.getBoundingClientRect(); - var irect = item.wrapper.getBoundingClientRect(); - if (scope.collide(masterRect, irect)) { - skip.push(item); - var topMore = item === mw.handleElement ? 10 : 0; - item.wrapper.style.top = (parseInt(master.wrapper.style.top, 10) + topMore) + 'px'; - item.wrapper.style.left = ((parseInt(master.wrapper.style.left, 10) + masterRect.width) + 10) + 'px'; - master = curr; - } - }); - }); - - var cloner = mwd.querySelector('.mw-cloneable-control'); - if(cloner) { - scope.getAll().forEach(function (curr) { - masterRect = curr.wrapper.getBoundingClientRect(); - var clonerect = cloner.getBoundingClientRect(); - - if (scope.collide(masterRect, clonerect)) { - cloner.style.top = curr.wrapper.style.top; - cloner.style.left = ((parseInt(curr.wrapper.style.left, 10) + masterRect.width) + 10) + 'px'; - } - }); - } - }, - - elements: function(){ - mw.handleElement = new mw.Handle({ - id: 'mw-handle-item-element', - className:'mw-handle-type-element', - menu:[ - { - title: 'Edit HTML', - icon: 'mw-icon-code', - action: function () { - mw.editSource(mw._activeElementOver); - } - }, - { - title: 'Edit Style', - icon: 'mw-icon-edit', - action: function () { - mw.liveEditSettings.show(); - mw.sidebarSettingsTabs.set(3); - if(mw.cssEditorSelector){ - mw.liveEditSelector.active(true); - mw.liveEditSelector.select(mw._activeElementOver); - } else{ - mw.$(mw.liveEditWidgets.cssEditorInSidebarAccordion()).on('load', function () { - setTimeout(function(){ - mw.liveEditSelector.active(true); - mw.liveEditSelector.select(mw._activeElementOver); - }, 333); - }); - } - mw.liveEditWidgets.cssEditorInSidebarAccordion(); - } - }, - { - title: 'Remove', - icon: 'mw-icon-bin', - className:'mw-handle-remove', - action: function () { - mw.drag.delete_element(mw._activeElementOver); - } - } - ] - }); - - mw.$(mw.handleElement.wrapper).draggable({ - handle: mw.handleElement.handleIcon, - cursorAt: { - //top: -30 - }, - start: function() { - mw.isDrag = true; - mw.dragCurrent = mw.ea.data.currentGrabbed = mw._activeElementOver; - - if(!mw.dragCurrent.id){ - mw.dragCurrent.id = 'element_' + mw.random() - } - mw.$(mw.dragCurrent).invisible().addClass("mw_drag_current"); - mw.trigger("AllLeave"); - mw.drag.fix_placeholders(); - mw.$(mwd.body).addClass("dragStart"); - mw.image_resizer._hide(); - mw.wysiwyg.change(mw.dragCurrent); - mw.smallEditor.css("visibility", "hidden"); - mw.smallEditorCanceled = true; - }, - stop: function() { - mw.$(mwd.body).removeClass("dragStart"); - } - }); - - mw.$(mw.handleElement.wrapper).mouseenter(function() { - }).click(function() { - if (!$(mw._activeElementOver).hasClass("element-current")) { - mw.$(".element-current").removeClass("element-current"); - - if (mw._activeElementOver.nodeName === 'IMG') { - - mw.trigger("ImageClick", mw._activeElementOver); - } else { - mw.trigger("ElementClick", mw._activeElementOver); - } - } - - }); - - mw.on("ElementOver", function(a, element) { - mw._activeElementOver = element; - mw.$(".mw_edit_delete, .mw_edit_delete_element, .mw-sorthandle-moveit, .column_separator_title").show(); - if (!mw.ea.canDrop(element)) { - mw.$(".mw_edit_delete, .mw_edit_delete_element, .mw-sorthandle-moveit, .column_separator_title").hide(); - return false; - } - var el = mw.$(element); - - var o = el.offset(); - - var pleft = parseFloat(el.css("paddingLeft")); - var left_spacing = o.left; - if (mw.tools.hasClass(element, 'jumbotron')) { - left_spacing = left_spacing + pleft; - } - if(left_spacing<0){ - left_spacing = 0; - } - //todo: another icon - var isSafe = false; // mw.tools.parentsOrCurrentOrderMatchOrOnlyFirst(element, ['safe-mode', 'regular-mode']); - var _icon = isSafe ? '' : ''; - - var icon = ''+ _icon +''; - - var title = ''; - - mw.handleElement.setTitle(icon, title); - - if(el.hasClass('allow-drop')){ - mw.handleElement.hide(); - } else{ - mw.handleElement.show(); - } - - - mw.$(mw.handleElement.wrapper).css({ - top: o.top - 10, - left: left_spacing - }); - - if(!element.id) { - element.id = "element_" + mw.random(); - } - - mw.dropable.removeClass("mw_dropable_onleaveedit"); - mw._initHandles.manageCollision(); - - }); - - - }, - modules: function () { - mw.handleModule = new mw.Handle({ - id: 'mw-handle-item-module', - menu:[ - { - title: 'Settings', - icon: 'mw-icon-gear', - action: function () { - mw.drag.module_settings(mw._activeModuleOver,"admin"); - } - }, - { - title: 'Move Up', - icon: 'mw-icon-arrow-up-b', - className: '', - id:'mw_handle_module_up', - action: function () { - mw.drag.replace($(mw._activeModuleOver), 'prev'); - } - }, - { - title: 'Move Down', - icon: 'mw-icon-arrow-down-b', - id:'mw_handle_module_down', - action: function () { - mw.drag.replace($(mw._activeModuleOver), 'next'); - } - }, - { - title: '{dynamic}', - icon: 'mw-icon-arrow-down-b' - }, - { - title: 'Remove', - icon: 'mw-icon-bin', - className:'mw-handle-remove', - action: function () { - mw.drag.delete_element(mw._activeModuleOver); - } - } - ] - }); - mw.$(mw.handleModule.wrapper).draggable({ - handle: mw.handleModule.handleIcon, - distance:20, - cursorAt: { - //top: -30 - }, - start: function() { - mw.isDrag = true; - mw.dragCurrent = mw._activeModuleOver; - if(!mw.dragCurrent.id){ - mw.dragCurrent.id = 'module_' + mw.random(); - } - if(mw.letools.isLayout(mw.dragCurrent)){ - mw.$(mw.dragCurrent).css({ - opacity:0 - }).addClass("mw_drag_current"); - } else { - mw.$(mw.dragCurrent).invisible().addClass("mw_drag_current"); - } - - mw.trigger("AllLeave"); - mw.drag.fix_placeholders(); - mw.$(mwd.body).addClass("dragStart"); - mw.image_resizer._hide(); - mw.wysiwyg.change(mw.dragCurrent); - mw.smallEditor.css("visibility", "hidden"); - mw.smallEditorCanceled = true; - }, - stop: function() { - mw.$(mwd.body).removeClass("dragStart"); - } - }) - .on("mousedown", function(e){ - mw.liveEditSelectMode = 'none'; - }); - - mw.on('moduleOver', function(e, pelement){ - var element = dynamicModulesMenu(e, pelement) || pelement; - mw._activeModuleOver = element; - mw.$(".mw-handle-menu-dynamic", mw.handleModule.wrapper).empty(); - mw.$('#mw_handle_module_up,#mw_handle_module_down').hide(); - if(mw._activeModuleOver && mw._activeModuleOver.getAttribute('data-type') === 'layouts'){ - var $el = mw.$(mw._activeModuleOver); - var hasedit = mw.tools.parentsOrCurrentOrderMatchOrOnlyFirst($el[0],['edit', 'module']); - if(hasedit){ - if($el.prev('[data-type="layouts"]').length !== 0){ - mw.$('#mw_handle_module_up').show(); - } - if($el.next('[data-type="layouts"]').length !== 0){ - mw.$('#mw_handle_module_down').show(); - } - } - } - - var el = mw.$(element); - var o = el.offset(); - var width = el.width(); - var pleft = parseFloat(el.css("paddingLeft")); - - var lebar = mwd.querySelector("#live_edit_toolbar"); - var minTop = lebar ? lebar.offsetHeight : 0; - if(mw.templateTopFixed) { - var ex = document.querySelector(mw.templateTopFixed); - if(ex && !ex.contains(el[0])){ - minTop += ex.offsetHeight; - } - } - - var marginTop = -30; - var topPos = o.top; - - if(topPos 100 ? 0 : mw.handleModule.wrapper.clientHeight); - } - - if(el.attr('data-type') === 'layouts') { - topPosFinal = o.top + 10; - handleLeft = handleLeft + 10; - } - - - mw.handleModule.show(); - mw.$(mw.handleModule.wrapper) - .removeClass('active') - .css({ - top: topPosFinal, - left: handleLeft, - //width: width, - //marginTop: marginTop - }).addClass('mw-active-item'); - - - mw.$('#mw_handle_module_up, #mw_handle_module_down').hide(); - - if(element && element.getAttribute('data-type') === 'layouts'){ - var $el = mw.$(element); - var hasedit = mw.tools.hasParentsWithClass($el[0],'edit'); - if(hasedit){ - if($el.prev('[data-type="layouts"]').length !== 0){ - mw.$('#mw_handle_module_up').show(); - } - if($el.next('[data-type="layouts"]').length !== 0){ - mw.$('#mw_handle_module_down').show(); - } - } - } - - var canDrag = mw.tools.parentsOrCurrentOrderMatchOrOnlyFirst(element.parentNode, ['edit', 'module']) - && mw.tools.parentsOrCurrentOrderMatchOrOnlyFirstOrNone(element, ['allow-drop', 'nodrop']); - if(canDrag){ - mw.$(mw.handleModule.wrapper).removeClass('mw-handle-no-drag'); - } else { - mw.$(mw.handleModule.wrapper).addClass('mw-handle-no-drag'); - } - - var title = el.dataset("mw-title"); - var id = el.attr("id"); - var module_type = (el.dataset("type") || el.attr("type")).trim(); - var cln = el[0].querySelector('.cloneable'); - if(cln || mw.tools.hasClass(el[0], 'cloneable')){ - if(($(cln).offset().top - el.offset().top) < 20){ - mw.tools.addClass(mw.drag._onCloneableControl, 'mw-module-near-cloneable'); - } else { - mw.tools.removeClass(mw.drag._onCloneableControl, 'mw-module-near-cloneable'); - } - } - - var mod_icon = mw.live_edit.getModuleIcon(module_type); - var mod_handle_title = (title ? title : mw.msg.settings); - if(module_type === 'layouts'){ - mod_handle_title = ''; - } - - mw.handleModule.setTitle(mod_icon, mod_handle_title); - if(!mw.handleModule){ - return; - } - - mw.tools.classNamespaceDelete(mw.handleModule, 'module-active-'); - mw.tools.addClass(mw.handleModule, 'module-active-' + module_type.replace(/\//g, '-')); - - if (mw.live_edit_module_settings_array && mw.live_edit_module_settings_array[module_type]) { - - var new_el = mwd.createElement('div'); - new_el.className = 'mw_edit_settings_multiple_holder'; - - var settings = mw.live_edit_module_settings_array[module_type]; - mw.$(settings).each(function () { - if (this.view) { - var new_el = mwd.createElement('a'); - new_el.className = 'mw_edit_settings_multiple'; - new_el.title = this.title; - new_el.draggable = 'false'; - var btn_id = 'mw_edit_settings_multiple_btn_' + mw.random(); - new_el.id = btn_id; - if (this.type && this.type === 'tooltip') { - new_el.href = 'javascript:mw.drag.current_module_settings_tooltip_show_on_element("' + btn_id + '","' + this.view + '", "tooltip"); void(0);'; - - } else { - new_el.href = 'javascript:mw.drag.module_settings(undefined,"' + this.view + '"); void(0);'; - } - var icon = ''; - if (this.icon) { - icon = ''; - } - new_el.innerHTML = (icon + '' + this.title+''); - mw.$(".mw-handle-menu-dynamic", mw.handleModule.wrapper).append(new_el); - } - }); - } else { - - } - - /*************************************/ - - - if(!element.id) { - element.id = "module_" + mw.random(); - } - mw._initHandles.manageCollision(); - }); - }, - columns:function(){ - mw.handleColumns = new mw.Handle({ - id: 'mw-handle-item-columns', - // className:'mw-handle-type-element', - menu:[ - { - title: 'One column', - action: function () { - mw.drag.create_columns(this,1); - } - }, - { - title: '2 columns', - action: function () { - mw.drag.create_columns(this,2); - } - }, - { - title: '3 columns', - action: function () { - mw.drag.create_columns(this,3); - } - }, - { - title: '4 columns', - action: function () { - mw.drag.create_columns(this,4); - } - }, - { - title: '5 columns', - action: function () { - mw.drag.create_columns(this,5); - } - }, - { - title: 'Remove', - icon: 'mw-icon-bin', - className:'mw-handle-remove', - action: function () { - mw.drag.delete_element(mw._activeRowOver, function () { - mw.$(mw.drag.columns.resizer).hide(); - mw.handleColumns.hide(); - }); - } - } - ] - }); - mw.handleColumns.setTitle('', ''); - - mw.$(mw.handleColumns.wrapper).draggable({ - handle: mw.handleColumns.handleIcon, - cursorAt: { - //top: -30 - }, - start: function() { - mw.isDrag = true; - var curr = mw._activeRowOver ; - mw.dragCurrent = mw.ea.data.currentGrabbed = curr; - mw.dragCurrent.id == "" ? mw.dragCurrent.id = 'element_' + mw.random() : ''; - mw.$(mw.dragCurrent).invisible().addClass("mw_drag_current"); - mw.trigger("AllLeave"); - mw.drag.fix_placeholders(); - mw.$(mwd.body).addClass("dragStart"); - mw.image_resizer._hide(); - mw.wysiwyg.change(mw.dragCurrent); - mw.smallEditor.css("visibility", "hidden"); - mw.smallEditorCanceled = true; - mw.$(mw.drag.columns.resizer).hide() - }, - stop: function() { - mw.$(mwd.body).removeClass("dragStart"); - } - }); - - mw.on("RowOver", function(a, element) { - - mw._activeRowOver = element; - var el = mw.$(element); - var o = el.offset(); - var width = el.width(); - var pleft = parseFloat(el.css("paddingLeft")); - var htop = o.top - 35; - var left = o.left; - - if (htop < 55 && mwd.getElementById('live_edit_toolbar') !== null) { - htop = 55; - left = left - 100; - } - if (htop < 0 && mwd.getElementById('live_edit_toolbar') === null) { - htop = 0; - // var left = left-50; - } - - - mw.handleColumns.show() - - mw.$(mw.handleColumns.wrapper).css({ - top: htop, - left: left, - //width: width - }); - mw._initHandles.manageCollision(); - - var size = mw.$(element).children(".mw-col").length; - mw.$("a.mw-make-cols").removeClass("active"); - mw.$("a.mw-make-cols").eq(size - 1).addClass("active"); - if(!element.id){ - element.id = "element_row_" + mw.random() ; - } - - - - - }); - }, - nodeLeave: function () { - var scope = this; - - mw.on("ElementLeave", function(e, target) { - mw.handleElement.hide(); - }); - mw.on("ModuleLeave", function(e, target) { - mw.handleModule.hide(); - //.removeClass('mw-active-item'); - }); - mw.on("RowLeave", function(e, target) { - //mw.handleColumns.hide(); - }); - } -}; - - - - -$(document).ready(function () { - - mw._initHandles.modules(); - mw._initHandles.elements(); - mw._initHandles.columns(); - mw._initHandles.nodeLeave(); -}); diff --git a/update/userfiles/modules/microweber/api/instruments.js b/update/userfiles/modules/microweber/api/instruments.js index d4ea837c..e3e78e56 100644 --- a/update/userfiles/modules/microweber/api/instruments.js +++ b/update/userfiles/modules/microweber/api/instruments.js @@ -1,3 +1,13 @@ +mw._instrument = function(){ + this._value = null; + var $scope = $(this); + this.value = function(val){ + if (!val) return this._value; + this._value = val; + $scope.trigger('change', [val]); + return this; + }; +}; mw.instruments = { _create:function (config) { config = config || {}; @@ -90,12 +100,13 @@ mw.instruments = { frame = this._create({ url: 'link_editor' }); - mw.tools.iframeAutoHeight(frame) + mw.tools.iframeAutoHeight(frame); } else if(settings.mode === 'dialog') { dialog = mw.dialogIframe({ url:' link_editor', height: 'auto', - autoHeight: true + autoHeight: true, + width: 700 }); frame = dialog.iframe; } else { diff --git a/update/userfiles/modules/microweber/api/libs/bootstrap-4.3.1/css/bootstrap.css b/update/userfiles/modules/microweber/api/libs/bootstrap-4.3.1/css/bootstrap.css deleted file mode 100644 index 36495398..00000000 --- a/update/userfiles/modules/microweber/api/libs/bootstrap-4.3.1/css/bootstrap.css +++ /dev/null @@ -1,7592 +0,0 @@ -/*! - * Bootstrap v4.3.1 (https://getbootstrap.com/) - * Copyright 2011-2019 The Bootstrap Authors - * Copyright 2011-2019 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -:root { - --blue: #007bff; - --indigo: #6610f2; - --purple: #6f42c1; - --pink: #e83e8c; - --red: #dc3545; - --orange: #fd7e14; - --yellow: #ffc107; - --green: #28a745; - --teal: #20c997; - --cyan: #17a2b8; - --white: #fff; - --gray: #6c757d; - --gray-dark: #343a40; - --primary: #007bff; - --secondary: #6c757d; - --success: #28a745; - --info: #17a2b8; - --warning: #ffc107; - --danger: #dc3545; - --light: #f8f9fa; - --dark: #343a40; - --breakpoint-xs: 0; - --breakpoint-sm: 576px; - --breakpoint-md: 768px; - --breakpoint-lg: 992px; - --breakpoint-xl: 1200px; - --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } - -*, -*::before, -*::after { - box-sizing: border-box; } - -html { - font-family: sans-serif; - line-height: 1.15; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } - -article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { - display: block; } - -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - text-align: left; - background-color: #fff; } - -[tabindex="-1"]:focus { - outline: 0 !important; } - -hr { - box-sizing: content-box; - height: 0; - overflow: visible; } - -h1, h2, h3, h4, h5, h6 { - margin-top: 0; - margin-bottom: 0.5rem; } - -p { - margin-top: 0; - margin-bottom: 1rem; } - -abbr[title], -abbr[data-original-title] { - text-decoration: underline; - text-decoration: underline dotted; - cursor: help; - border-bottom: 0; - text-decoration-skip-ink: none; } - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit; } - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1rem; } - -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0; } - -dt { - font-weight: 700; } - -dd { - margin-bottom: .5rem; - margin-left: 0; } - -blockquote { - margin: 0 0 1rem; } - -b, -strong { - font-weight: bolder; } - -small { - font-size: 80%; } - -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; } - -sub { - bottom: -.25em; } - -sup { - top: -.5em; } - -a { - color: #007bff; - text-decoration: none; - background-color: transparent; } - a:hover { - color: #0056b3; - text-decoration: underline; } - -a:not([href]):not([tabindex]) { - color: inherit; - text-decoration: none; } - a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { - color: inherit; - text-decoration: none; } - a:not([href]):not([tabindex]):focus { - outline: 0; } - -pre, -code, -kbd, -samp { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - font-size: 1em; } - -pre { - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; } - -figure { - margin: 0 0 1rem; } - -img { - vertical-align: middle; - border-style: none; } - -svg { - overflow: hidden; - vertical-align: middle; } - -table { - border-collapse: collapse; } - -caption { - padding-top: 0.75rem; - padding-bottom: 0.75rem; - color: #6c757d; - text-align: left; - caption-side: bottom; } - -th { - text-align: inherit; } - -label { - display: inline-block; - margin-bottom: 0.5rem; } - -button { - border-radius: 0; } - -button:focus { - outline: 1px dotted; - outline: 5px auto -webkit-focus-ring-color; } - -input, -button, -select, -optgroup, -textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit; } - -button, -input { - overflow: visible; } - -button, -select { - text-transform: none; } - -select { - word-wrap: normal; } - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; } - -button:not(:disabled), -[type="button"]:not(:disabled), -[type="reset"]:not(:disabled), -[type="submit"]:not(:disabled) { - cursor: pointer; } - -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - padding: 0; - border-style: none; } - -input[type="radio"], -input[type="checkbox"] { - box-sizing: border-box; - padding: 0; } - -input[type="date"], -input[type="time"], -input[type="datetime-local"], -input[type="month"] { - -webkit-appearance: listbox; } - -textarea { - overflow: auto; - resize: vertical; } - -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; } - -legend { - display: block; - width: 100%; - max-width: 100%; - padding: 0; - margin-bottom: .5rem; - font-size: 1.5rem; - line-height: inherit; - color: inherit; - white-space: normal; } - -progress { - vertical-align: baseline; } - -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; } - -[type="search"] { - outline-offset: -2px; - -webkit-appearance: none; } - -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; } - -::-webkit-file-upload-button { - font: inherit; - -webkit-appearance: button; } - -output { - display: inline-block; } - -summary { - display: list-item; - cursor: pointer; } - -template { - display: none; } - -[hidden] { - display: none !important; } - -h1, h2, h3, h4, h5, h6, -.h1, .h2, .h3, .h4, .h5, .h6 { - margin-bottom: 0.5rem; - font-weight: 500; - line-height: 1.2; } - -h1, .h1 { - font-size: 2.5rem; } - -h2, .h2 { - font-size: 2rem; } - -h3, .h3 { - font-size: 1.75rem; } - -h4, .h4 { - font-size: 1.5rem; } - -h5, .h5 { - font-size: 1.25rem; } - -h6, .h6 { - font-size: 1rem; } - -.lead { - font-size: 1.25rem; - font-weight: 300; } - -.display-1 { - font-size: 6rem; - font-weight: 300; - line-height: 1.2; } - -.display-2 { - font-size: 5.5rem; - font-weight: 300; - line-height: 1.2; } - -.display-3 { - font-size: 4.5rem; - font-weight: 300; - line-height: 1.2; } - -.display-4 { - font-size: 3.5rem; - font-weight: 300; - line-height: 1.2; } - -hr { - margin-top: 1rem; - margin-bottom: 1rem; - border: 0; - border-top: 1px solid rgba(0, 0, 0, 0.1); } - -small, -.small { - font-size: 80%; - font-weight: 400; } - -mark, -.mark { - padding: 0.2em; - background-color: #fcf8e3; } - -.list-unstyled { - padding-left: 0; - list-style: none; } - -.list-inline { - padding-left: 0; - list-style: none; } - -.list-inline-item { - display: inline-block; } - .list-inline-item:not(:last-child) { - margin-right: 0.5rem; } - -.initialism { - font-size: 90%; - text-transform: uppercase; } - -.blockquote { - margin-bottom: 1rem; - font-size: 1.25rem; } - -.blockquote-footer { - display: block; - font-size: 80%; - color: #6c757d; } - .blockquote-footer::before { - content: "\2014\00A0"; } - -.img-fluid { - max-width: 100%; - height: auto; } - -.img-thumbnail { - padding: 0.25rem; - background-color: #fff; - border: 1px solid #dee2e6; - border-radius: 0.25rem; - max-width: 100%; - height: auto; } - -.figure { - display: inline-block; } - -.figure-img { - margin-bottom: 0.5rem; - line-height: 1; } - -.figure-caption { - font-size: 90%; - color: #6c757d; } - -code { - font-size: 87.5%; - color: #e83e8c; - word-break: break-word; } - a > code { - color: inherit; } - -kbd { - padding: 0.2rem 0.4rem; - font-size: 87.5%; - color: #fff; - background-color: #212529; - border-radius: 0.2rem; } - kbd kbd { - padding: 0; - font-size: 100%; - font-weight: 700; } - -pre { - display: block; - font-size: 87.5%; - color: #212529; } - pre code { - font-size: inherit; - color: inherit; - word-break: normal; } - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; } - -.container { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; } - @media (min-width: 576px) { - .container { - max-width: 540px; } } - @media (min-width: 768px) { - .container { - max-width: 720px; } } - @media (min-width: 992px) { - .container { - max-width: 960px; } } - @media (min-width: 1200px) { - .container { - max-width: 1140px; } } - -.container-fluid { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; } - -.row { - display: flex; - flex-wrap: wrap; - margin-right: -15px; - margin-left: -15px; } - -.no-gutters { - margin-right: 0; - margin-left: 0; } - .no-gutters > .col, - .no-gutters > [class*="col-"] { - padding-right: 0; - padding-left: 0; } - -.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, -.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, -.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, -.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, -.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, -.col-xl-auto { - position: relative; - width: 100%; - padding-right: 15px; - padding-left: 15px; } - -.col { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - -.col-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - -.col-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - -.col-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - -.col-3 { - flex: 0 0 25%; - max-width: 25%; } - -.col-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - -.col-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - -.col-6 { - flex: 0 0 50%; - max-width: 50%; } - -.col-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - -.col-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - -.col-9 { - flex: 0 0 75%; - max-width: 75%; } - -.col-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - -.col-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - -.col-12 { - flex: 0 0 100%; - max-width: 100%; } - -.order-first { - order: -1; } - -.order-last { - order: 13; } - -.order-0 { - order: 0; } - -.order-1 { - order: 1; } - -.order-2 { - order: 2; } - -.order-3 { - order: 3; } - -.order-4 { - order: 4; } - -.order-5 { - order: 5; } - -.order-6 { - order: 6; } - -.order-7 { - order: 7; } - -.order-8 { - order: 8; } - -.order-9 { - order: 9; } - -.order-10 { - order: 10; } - -.order-11 { - order: 11; } - -.order-12 { - order: 12; } - -.offset-1 { - margin-left: 8.3333333333%; } - -.offset-2 { - margin-left: 16.6666666667%; } - -.offset-3 { - margin-left: 25%; } - -.offset-4 { - margin-left: 33.3333333333%; } - -.offset-5 { - margin-left: 41.6666666667%; } - -.offset-6 { - margin-left: 50%; } - -.offset-7 { - margin-left: 58.3333333333%; } - -.offset-8 { - margin-left: 66.6666666667%; } - -.offset-9 { - margin-left: 75%; } - -.offset-10 { - margin-left: 83.3333333333%; } - -.offset-11 { - margin-left: 91.6666666667%; } - -@media (min-width: 576px) { - .col-sm { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-sm-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-sm-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-sm-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-sm-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-sm-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-sm-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-sm-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-sm-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-sm-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-sm-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-sm-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-sm-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-sm-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-sm-first { - order: -1; } - - .order-sm-last { - order: 13; } - - .order-sm-0 { - order: 0; } - - .order-sm-1 { - order: 1; } - - .order-sm-2 { - order: 2; } - - .order-sm-3 { - order: 3; } - - .order-sm-4 { - order: 4; } - - .order-sm-5 { - order: 5; } - - .order-sm-6 { - order: 6; } - - .order-sm-7 { - order: 7; } - - .order-sm-8 { - order: 8; } - - .order-sm-9 { - order: 9; } - - .order-sm-10 { - order: 10; } - - .order-sm-11 { - order: 11; } - - .order-sm-12 { - order: 12; } - - .offset-sm-0 { - margin-left: 0; } - - .offset-sm-1 { - margin-left: 8.3333333333%; } - - .offset-sm-2 { - margin-left: 16.6666666667%; } - - .offset-sm-3 { - margin-left: 25%; } - - .offset-sm-4 { - margin-left: 33.3333333333%; } - - .offset-sm-5 { - margin-left: 41.6666666667%; } - - .offset-sm-6 { - margin-left: 50%; } - - .offset-sm-7 { - margin-left: 58.3333333333%; } - - .offset-sm-8 { - margin-left: 66.6666666667%; } - - .offset-sm-9 { - margin-left: 75%; } - - .offset-sm-10 { - margin-left: 83.3333333333%; } - - .offset-sm-11 { - margin-left: 91.6666666667%; } } -@media (min-width: 768px) { - .col-md { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-md-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-md-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-md-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-md-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-md-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-md-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-md-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-md-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-md-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-md-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-md-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-md-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-md-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-md-first { - order: -1; } - - .order-md-last { - order: 13; } - - .order-md-0 { - order: 0; } - - .order-md-1 { - order: 1; } - - .order-md-2 { - order: 2; } - - .order-md-3 { - order: 3; } - - .order-md-4 { - order: 4; } - - .order-md-5 { - order: 5; } - - .order-md-6 { - order: 6; } - - .order-md-7 { - order: 7; } - - .order-md-8 { - order: 8; } - - .order-md-9 { - order: 9; } - - .order-md-10 { - order: 10; } - - .order-md-11 { - order: 11; } - - .order-md-12 { - order: 12; } - - .offset-md-0 { - margin-left: 0; } - - .offset-md-1 { - margin-left: 8.3333333333%; } - - .offset-md-2 { - margin-left: 16.6666666667%; } - - .offset-md-3 { - margin-left: 25%; } - - .offset-md-4 { - margin-left: 33.3333333333%; } - - .offset-md-5 { - margin-left: 41.6666666667%; } - - .offset-md-6 { - margin-left: 50%; } - - .offset-md-7 { - margin-left: 58.3333333333%; } - - .offset-md-8 { - margin-left: 66.6666666667%; } - - .offset-md-9 { - margin-left: 75%; } - - .offset-md-10 { - margin-left: 83.3333333333%; } - - .offset-md-11 { - margin-left: 91.6666666667%; } } -@media (min-width: 992px) { - .col-lg { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-lg-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-lg-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-lg-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-lg-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-lg-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-lg-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-lg-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-lg-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-lg-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-lg-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-lg-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-lg-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-lg-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-lg-first { - order: -1; } - - .order-lg-last { - order: 13; } - - .order-lg-0 { - order: 0; } - - .order-lg-1 { - order: 1; } - - .order-lg-2 { - order: 2; } - - .order-lg-3 { - order: 3; } - - .order-lg-4 { - order: 4; } - - .order-lg-5 { - order: 5; } - - .order-lg-6 { - order: 6; } - - .order-lg-7 { - order: 7; } - - .order-lg-8 { - order: 8; } - - .order-lg-9 { - order: 9; } - - .order-lg-10 { - order: 10; } - - .order-lg-11 { - order: 11; } - - .order-lg-12 { - order: 12; } - - .offset-lg-0 { - margin-left: 0; } - - .offset-lg-1 { - margin-left: 8.3333333333%; } - - .offset-lg-2 { - margin-left: 16.6666666667%; } - - .offset-lg-3 { - margin-left: 25%; } - - .offset-lg-4 { - margin-left: 33.3333333333%; } - - .offset-lg-5 { - margin-left: 41.6666666667%; } - - .offset-lg-6 { - margin-left: 50%; } - - .offset-lg-7 { - margin-left: 58.3333333333%; } - - .offset-lg-8 { - margin-left: 66.6666666667%; } - - .offset-lg-9 { - margin-left: 75%; } - - .offset-lg-10 { - margin-left: 83.3333333333%; } - - .offset-lg-11 { - margin-left: 91.6666666667%; } } -@media (min-width: 1200px) { - .col-xl { - flex-basis: 0; - flex-grow: 1; - max-width: 100%; } - - .col-xl-auto { - flex: 0 0 auto; - width: auto; - max-width: 100%; } - - .col-xl-1 { - flex: 0 0 8.3333333333%; - max-width: 8.3333333333%; } - - .col-xl-2 { - flex: 0 0 16.6666666667%; - max-width: 16.6666666667%; } - - .col-xl-3 { - flex: 0 0 25%; - max-width: 25%; } - - .col-xl-4 { - flex: 0 0 33.3333333333%; - max-width: 33.3333333333%; } - - .col-xl-5 { - flex: 0 0 41.6666666667%; - max-width: 41.6666666667%; } - - .col-xl-6 { - flex: 0 0 50%; - max-width: 50%; } - - .col-xl-7 { - flex: 0 0 58.3333333333%; - max-width: 58.3333333333%; } - - .col-xl-8 { - flex: 0 0 66.6666666667%; - max-width: 66.6666666667%; } - - .col-xl-9 { - flex: 0 0 75%; - max-width: 75%; } - - .col-xl-10 { - flex: 0 0 83.3333333333%; - max-width: 83.3333333333%; } - - .col-xl-11 { - flex: 0 0 91.6666666667%; - max-width: 91.6666666667%; } - - .col-xl-12 { - flex: 0 0 100%; - max-width: 100%; } - - .order-xl-first { - order: -1; } - - .order-xl-last { - order: 13; } - - .order-xl-0 { - order: 0; } - - .order-xl-1 { - order: 1; } - - .order-xl-2 { - order: 2; } - - .order-xl-3 { - order: 3; } - - .order-xl-4 { - order: 4; } - - .order-xl-5 { - order: 5; } - - .order-xl-6 { - order: 6; } - - .order-xl-7 { - order: 7; } - - .order-xl-8 { - order: 8; } - - .order-xl-9 { - order: 9; } - - .order-xl-10 { - order: 10; } - - .order-xl-11 { - order: 11; } - - .order-xl-12 { - order: 12; } - - .offset-xl-0 { - margin-left: 0; } - - .offset-xl-1 { - margin-left: 8.3333333333%; } - - .offset-xl-2 { - margin-left: 16.6666666667%; } - - .offset-xl-3 { - margin-left: 25%; } - - .offset-xl-4 { - margin-left: 33.3333333333%; } - - .offset-xl-5 { - margin-left: 41.6666666667%; } - - .offset-xl-6 { - margin-left: 50%; } - - .offset-xl-7 { - margin-left: 58.3333333333%; } - - .offset-xl-8 { - margin-left: 66.6666666667%; } - - .offset-xl-9 { - margin-left: 75%; } - - .offset-xl-10 { - margin-left: 83.3333333333%; } - - .offset-xl-11 { - margin-left: 91.6666666667%; } } -.table { - width: 100%; - margin-bottom: 1rem; - color: #212529; } - .table th, - .table td { - padding: 0.75rem; - vertical-align: top; - border-top: 1px solid #dee2e6; } - .table thead th { - vertical-align: bottom; - border-bottom: 2px solid #dee2e6; } - .table tbody + tbody { - border-top: 2px solid #dee2e6; } - -.table-sm th, -.table-sm td { - padding: 0.3rem; } - -.table-bordered { - border: 1px solid #dee2e6; } - .table-bordered th, - .table-bordered td { - border: 1px solid #dee2e6; } - .table-bordered thead th, - .table-bordered thead td { - border-bottom-width: 2px; } - -.table-borderless th, -.table-borderless td, -.table-borderless thead th, -.table-borderless tbody + tbody { - border: 0; } - -.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(0, 0, 0, 0.05); } - -.table-hover tbody tr:hover { - color: #212529; - background-color: rgba(0, 0, 0, 0.075); } - -.table-primary, -.table-primary > th, -.table-primary > td { - background-color: #b8daff; } -.table-primary th, -.table-primary td, -.table-primary thead th, -.table-primary tbody + tbody { - border-color: #7abaff; } - -.table-hover .table-primary:hover { - background-color: #9fcdff; } - .table-hover .table-primary:hover > td, - .table-hover .table-primary:hover > th { - background-color: #9fcdff; } - -.table-secondary, -.table-secondary > th, -.table-secondary > td { - background-color: #d6d8db; } -.table-secondary th, -.table-secondary td, -.table-secondary thead th, -.table-secondary tbody + tbody { - border-color: #b3b7bb; } - -.table-hover .table-secondary:hover { - background-color: #c8cbcf; } - .table-hover .table-secondary:hover > td, - .table-hover .table-secondary:hover > th { - background-color: #c8cbcf; } - -.table-success, -.table-success > th, -.table-success > td { - background-color: #c3e6cb; } -.table-success th, -.table-success td, -.table-success thead th, -.table-success tbody + tbody { - border-color: #8fd19e; } - -.table-hover .table-success:hover { - background-color: #b1dfbb; } - .table-hover .table-success:hover > td, - .table-hover .table-success:hover > th { - background-color: #b1dfbb; } - -.table-info, -.table-info > th, -.table-info > td { - background-color: #bee5eb; } -.table-info th, -.table-info td, -.table-info thead th, -.table-info tbody + tbody { - border-color: #86cfda; } - -.table-hover .table-info:hover { - background-color: #abdde5; } - .table-hover .table-info:hover > td, - .table-hover .table-info:hover > th { - background-color: #abdde5; } - -.table-warning, -.table-warning > th, -.table-warning > td { - background-color: #ffeeba; } -.table-warning th, -.table-warning td, -.table-warning thead th, -.table-warning tbody + tbody { - border-color: #ffdf7e; } - -.table-hover .table-warning:hover { - background-color: #ffe8a1; } - .table-hover .table-warning:hover > td, - .table-hover .table-warning:hover > th { - background-color: #ffe8a1; } - -.table-danger, -.table-danger > th, -.table-danger > td { - background-color: #f5c6cb; } -.table-danger th, -.table-danger td, -.table-danger thead th, -.table-danger tbody + tbody { - border-color: #ed969e; } - -.table-hover .table-danger:hover { - background-color: #f1b0b7; } - .table-hover .table-danger:hover > td, - .table-hover .table-danger:hover > th { - background-color: #f1b0b7; } - -.table-light, -.table-light > th, -.table-light > td { - background-color: #fdfdfe; } -.table-light th, -.table-light td, -.table-light thead th, -.table-light tbody + tbody { - border-color: #fbfcfc; } - -.table-hover .table-light:hover { - background-color: #ececf6; } - .table-hover .table-light:hover > td, - .table-hover .table-light:hover > th { - background-color: #ececf6; } - -.table-dark, -.table-dark > th, -.table-dark > td { - background-color: #c6c8ca; } -.table-dark th, -.table-dark td, -.table-dark thead th, -.table-dark tbody + tbody { - border-color: #95999c; } - -.table-hover .table-dark:hover { - background-color: #b9bbbe; } - .table-hover .table-dark:hover > td, - .table-hover .table-dark:hover > th { - background-color: #b9bbbe; } - -.table-active, -.table-active > th, -.table-active > td { - background-color: rgba(0, 0, 0, 0.075); } - -.table-hover .table-active:hover { - background-color: rgba(0, 0, 0, 0.075); } - .table-hover .table-active:hover > td, - .table-hover .table-active:hover > th { - background-color: rgba(0, 0, 0, 0.075); } - -.table .thead-dark th { - color: #fff; - background-color: #343a40; - border-color: #454d55; } -.table .thead-light th { - color: #495057; - background-color: #e9ecef; - border-color: #dee2e6; } - -.table-dark { - color: #fff; - background-color: #343a40; } - .table-dark th, - .table-dark td, - .table-dark thead th { - border-color: #454d55; } - .table-dark.table-bordered { - border: 0; } - .table-dark.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(255, 255, 255, 0.05); } - .table-dark.table-hover tbody tr:hover { - color: #fff; - background-color: rgba(255, 255, 255, 0.075); } - -@media (max-width: 575.98px) { - .table-responsive-sm { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive-sm > .table-bordered { - border: 0; } } -@media (max-width: 767.98px) { - .table-responsive-md { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive-md > .table-bordered { - border: 0; } } -@media (max-width: 991.98px) { - .table-responsive-lg { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive-lg > .table-bordered { - border: 0; } } -@media (max-width: 1199.98px) { - .table-responsive-xl { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive-xl > .table-bordered { - border: 0; } } -.table-responsive { - display: block; - width: 100%; - overflow-x: auto; - -webkit-overflow-scrolling: touch; } - .table-responsive > .table-bordered { - border: 0; } - -.form-control { - display: block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - padding: 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ced4da; - border-radius: 0.25rem; - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .form-control { - transition: none; } } - .form-control::-ms-expand { - background-color: transparent; - border: 0; } - .form-control:focus { - color: #495057; - background-color: #fff; - border-color: #80bdff; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } - .form-control::placeholder { - color: #6c757d; - opacity: 1; } - .form-control:disabled, .form-control[readonly] { - background-color: #e9ecef; - opacity: 1; } - -select.form-control:focus::-ms-value { - color: #495057; - background-color: #fff; } - -.form-control-file, -.form-control-range { - display: block; - width: 100%; } - -.col-form-label { - padding-top: calc(0.375rem + 1px); - padding-bottom: calc(0.375rem + 1px); - margin-bottom: 0; - font-size: inherit; - line-height: 1.5; } - -.col-form-label-lg { - padding-top: calc(0.5rem + 1px); - padding-bottom: calc(0.5rem + 1px); - font-size: 1.25rem; - line-height: 1.5; } - -.col-form-label-sm { - padding-top: calc(0.25rem + 1px); - padding-bottom: calc(0.25rem + 1px); - font-size: 0.875rem; - line-height: 1.5; } - -.form-control-plaintext { - display: block; - width: 100%; - padding-top: 0.375rem; - padding-bottom: 0.375rem; - margin-bottom: 0; - line-height: 1.5; - color: #212529; - background-color: transparent; - border: solid transparent; - border-width: 1px 0; } - .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { - padding-right: 0; - padding-left: 0; } - -.form-control-sm { - height: calc(1.5em + 0.5rem + 2px); - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; } - -.form-control-lg { - height: calc(1.5em + 1rem + 2px); - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; } - -select.form-control[size], select.form-control[multiple] { - height: auto; } - -textarea.form-control { - height: auto; } - -.form-group { - margin-bottom: 1rem; } - -.form-text { - display: block; - margin-top: 0.25rem; } - -.form-row { - display: flex; - flex-wrap: wrap; - margin-right: -5px; - margin-left: -5px; } - .form-row > .col, - .form-row > [class*="col-"] { - padding-right: 5px; - padding-left: 5px; } - -.form-check { - position: relative; - display: block; - padding-left: 1.25rem; } - -.form-check-input { - position: absolute; - margin-top: 0.3rem; - margin-left: -1.25rem; } - .form-check-input:disabled ~ .form-check-label { - color: #6c757d; } - -.form-check-label { - margin-bottom: 0; } - -.form-check-inline { - display: inline-flex; - align-items: center; - padding-left: 0; - margin-right: 0.75rem; } - .form-check-inline .form-check-input { - position: static; - margin-top: 0; - margin-right: 0.3125rem; - margin-left: 0; } - -.valid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #28a745; } - -.valid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: .1rem; - font-size: 0.875rem; - line-height: 1.5; - color: #fff; - background-color: rgba(40, 167, 69, 0.9); - border-radius: 0.25rem; } - -.was-validated .form-control:valid, .form-control.is-valid { - border-color: #28a745; - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: center right calc(0.375em + 0.1875rem); - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .form-control:valid:focus, .form-control.is-valid:focus { - border-color: #28a745; - box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); } - .was-validated .form-control:valid ~ .valid-feedback, - .was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, - .form-control.is-valid ~ .valid-tooltip { - display: block; } - -.was-validated textarea.form-control:valid, textarea.form-control.is-valid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } - -.was-validated .custom-select:valid, .custom-select.is-valid { - border-color: #28a745; - padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { - border-color: #28a745; - box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); } - .was-validated .custom-select:valid ~ .valid-feedback, - .was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback, - .custom-select.is-valid ~ .valid-tooltip { - display: block; } - -.was-validated .form-control-file:valid ~ .valid-feedback, -.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback, -.form-control-file.is-valid ~ .valid-tooltip { - display: block; } - -.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { - color: #28a745; } -.was-validated .form-check-input:valid ~ .valid-feedback, -.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, -.form-check-input.is-valid ~ .valid-tooltip { - display: block; } - -.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { - color: #28a745; } - .was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { - border-color: #28a745; } -.was-validated .custom-control-input:valid ~ .valid-feedback, -.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, -.custom-control-input.is-valid ~ .valid-tooltip { - display: block; } -.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { - border-color: #34ce57; - background-color: #34ce57; } -.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); } -.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #28a745; } - -.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { - border-color: #28a745; } -.was-validated .custom-file-input:valid ~ .valid-feedback, -.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, -.custom-file-input.is-valid ~ .valid-tooltip { - display: block; } -.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { - border-color: #28a745; - box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); } - -.invalid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #dc3545; } - -.invalid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: .1rem; - font-size: 0.875rem; - line-height: 1.5; - color: #fff; - background-color: rgba(220, 53, 69, 0.9); - border-radius: 0.25rem; } - -.was-validated .form-control:invalid, .form-control.is-invalid { - border-color: #dc3545; - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"); - background-repeat: no-repeat; - background-position: center right calc(0.375em + 0.1875rem); - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { - border-color: #dc3545; - box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); } - .was-validated .form-control:invalid ~ .invalid-feedback, - .was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, - .form-control.is-invalid ~ .invalid-tooltip { - display: block; } - -.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } - -.was-validated .custom-select:invalid, .custom-select.is-invalid { - border-color: #dc3545; - padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } - .was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { - border-color: #dc3545; - box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); } - .was-validated .custom-select:invalid ~ .invalid-feedback, - .was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback, - .custom-select.is-invalid ~ .invalid-tooltip { - display: block; } - -.was-validated .form-control-file:invalid ~ .invalid-feedback, -.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback, -.form-control-file.is-invalid ~ .invalid-tooltip { - display: block; } - -.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { - color: #dc3545; } -.was-validated .form-check-input:invalid ~ .invalid-feedback, -.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, -.form-check-input.is-invalid ~ .invalid-tooltip { - display: block; } - -.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { - color: #dc3545; } - .was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { - border-color: #dc3545; } -.was-validated .custom-control-input:invalid ~ .invalid-feedback, -.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, -.custom-control-input.is-invalid ~ .invalid-tooltip { - display: block; } -.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { - border-color: #e4606d; - background-color: #e4606d; } -.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); } -.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #dc3545; } - -.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { - border-color: #dc3545; } -.was-validated .custom-file-input:invalid ~ .invalid-feedback, -.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, -.custom-file-input.is-invalid ~ .invalid-tooltip { - display: block; } -.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { - border-color: #dc3545; - box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); } - -.form-inline { - display: flex; - flex-flow: row wrap; - align-items: center; } - .form-inline .form-check { - width: 100%; } - @media (min-width: 576px) { - .form-inline label { - display: flex; - align-items: center; - justify-content: center; - margin-bottom: 0; } - .form-inline .form-group { - display: flex; - flex: 0 0 auto; - flex-flow: row wrap; - align-items: center; - margin-bottom: 0; } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; } - .form-inline .form-control-plaintext { - display: inline-block; } - .form-inline .input-group, - .form-inline .custom-select { - width: auto; } - .form-inline .form-check { - display: flex; - align-items: center; - justify-content: center; - width: auto; - padding-left: 0; } - .form-inline .form-check-input { - position: relative; - flex-shrink: 0; - margin-top: 0; - margin-right: 0.25rem; - margin-left: 0; } - .form-inline .custom-control { - align-items: center; - justify-content: center; } - .form-inline .custom-control-label { - margin-bottom: 0; } } - -.btn { - display: inline-block; - font-weight: 400; - color: #212529; - text-align: center; - vertical-align: middle; - user-select: none; - background-color: transparent; - border: 1px solid transparent; - padding: 0.375rem 0.75rem; - font-size: 1rem; - line-height: 1.5; - border-radius: 0.25rem; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .btn { - transition: none; } } - .btn:hover { - color: #212529; - text-decoration: none; } - .btn:focus, .btn.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } - .btn.disabled, .btn:disabled { - opacity: 0.65; } - -a.btn.disabled, -fieldset:disabled a.btn { - pointer-events: none; } - -.btn-primary { - color: #fff; - background-color: #007bff; - border-color: #007bff; } - .btn-primary:hover { - color: #fff; - background-color: #0069d9; - border-color: #0062cc; } - .btn-primary:focus, .btn-primary.focus { - box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5); } - .btn-primary.disabled, .btn-primary:disabled { - color: #fff; - background-color: #007bff; - border-color: #007bff; } - .btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, .show > .btn-primary.dropdown-toggle { - color: #fff; - background-color: #0062cc; - border-color: #005cbf; } - .btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-primary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5); } - -.btn-secondary { - color: #fff; - background-color: #6c757d; - border-color: #6c757d; } - .btn-secondary:hover { - color: #fff; - background-color: #5a6268; - border-color: #545b62; } - .btn-secondary:focus, .btn-secondary.focus { - box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); } - .btn-secondary.disabled, .btn-secondary:disabled { - color: #fff; - background-color: #6c757d; - border-color: #6c757d; } - .btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, .show > .btn-secondary.dropdown-toggle { - color: #fff; - background-color: #545b62; - border-color: #4e555b; } - .btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-secondary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); } - -.btn-success { - color: #fff; - background-color: #28a745; - border-color: #28a745; } - .btn-success:hover { - color: #fff; - background-color: #218838; - border-color: #1e7e34; } - .btn-success:focus, .btn-success.focus { - box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5); } - .btn-success.disabled, .btn-success:disabled { - color: #fff; - background-color: #28a745; - border-color: #28a745; } - .btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, .show > .btn-success.dropdown-toggle { - color: #fff; - background-color: #1e7e34; - border-color: #1c7430; } - .btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, .show > .btn-success.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5); } - -.btn-info { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-info:hover { - color: #fff; - background-color: #138496; - border-color: #117a8b; } - .btn-info:focus, .btn-info.focus { - box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); } - .btn-info.disabled, .btn-info:disabled { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, .show > .btn-info.dropdown-toggle { - color: #fff; - background-color: #117a8b; - border-color: #10707f; } - .btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, .show > .btn-info.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); } - -.btn-warning { - color: #212529; - background-color: #ffc107; - border-color: #ffc107; } - .btn-warning:hover { - color: #212529; - background-color: #e0a800; - border-color: #d39e00; } - .btn-warning:focus, .btn-warning.focus { - box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5); } - .btn-warning.disabled, .btn-warning:disabled { - color: #212529; - background-color: #ffc107; - border-color: #ffc107; } - .btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, .show > .btn-warning.dropdown-toggle { - color: #212529; - background-color: #d39e00; - border-color: #c69500; } - .btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-warning.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5); } - -.btn-danger { - color: #fff; - background-color: #dc3545; - border-color: #dc3545; } - .btn-danger:hover { - color: #fff; - background-color: #c82333; - border-color: #bd2130; } - .btn-danger:focus, .btn-danger.focus { - box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5); } - .btn-danger.disabled, .btn-danger:disabled { - color: #fff; - background-color: #dc3545; - border-color: #dc3545; } - .btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, .show > .btn-danger.dropdown-toggle { - color: #fff; - background-color: #bd2130; - border-color: #b21f2d; } - .btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-danger.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5); } - -.btn-light { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-light:hover { - color: #212529; - background-color: #e2e6ea; - border-color: #dae0e5; } - .btn-light:focus, .btn-light.focus { - box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } - .btn-light.disabled, .btn-light:disabled { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, .show > .btn-light.dropdown-toggle { - color: #212529; - background-color: #dae0e5; - border-color: #d3d9df; } - .btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, .show > .btn-light.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } - -.btn-dark { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-dark:hover { - color: #fff; - background-color: #23272b; - border-color: #1d2124; } - .btn-dark:focus, .btn-dark.focus { - box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } - .btn-dark.disabled, .btn-dark:disabled { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, .show > .btn-dark.dropdown-toggle { - color: #fff; - background-color: #1d2124; - border-color: #171a1d; } - .btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-dark.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); } - -.btn-outline-primary { - color: #007bff; - border-color: #007bff; } - .btn-outline-primary:hover { - color: #fff; - background-color: #007bff; - border-color: #007bff; } - .btn-outline-primary:focus, .btn-outline-primary.focus { - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); } - .btn-outline-primary.disabled, .btn-outline-primary:disabled { - color: #007bff; - background-color: transparent; } - .btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, .show > .btn-outline-primary.dropdown-toggle { - color: #fff; - background-color: #007bff; - border-color: #007bff; } - .btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-primary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); } - -.btn-outline-secondary { - color: #6c757d; - border-color: #6c757d; } - .btn-outline-secondary:hover { - color: #fff; - background-color: #6c757d; - border-color: #6c757d; } - .btn-outline-secondary:focus, .btn-outline-secondary.focus { - box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } - .btn-outline-secondary.disabled, .btn-outline-secondary:disabled { - color: #6c757d; - background-color: transparent; } - .btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, .show > .btn-outline-secondary.dropdown-toggle { - color: #fff; - background-color: #6c757d; - border-color: #6c757d; } - .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-secondary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } - -.btn-outline-success { - color: #28a745; - border-color: #28a745; } - .btn-outline-success:hover { - color: #fff; - background-color: #28a745; - border-color: #28a745; } - .btn-outline-success:focus, .btn-outline-success.focus { - box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); } - .btn-outline-success.disabled, .btn-outline-success:disabled { - color: #28a745; - background-color: transparent; } - .btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, .show > .btn-outline-success.dropdown-toggle { - color: #fff; - background-color: #28a745; - border-color: #28a745; } - .btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-success.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); } - -.btn-outline-info { - color: #17a2b8; - border-color: #17a2b8; } - .btn-outline-info:hover { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-outline-info:focus, .btn-outline-info.focus { - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } - .btn-outline-info.disabled, .btn-outline-info:disabled { - color: #17a2b8; - background-color: transparent; } - .btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, .show > .btn-outline-info.dropdown-toggle { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-info.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } - -.btn-outline-warning { - color: #ffc107; - border-color: #ffc107; } - .btn-outline-warning:hover { - color: #212529; - background-color: #ffc107; - border-color: #ffc107; } - .btn-outline-warning:focus, .btn-outline-warning.focus { - box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); } - .btn-outline-warning.disabled, .btn-outline-warning:disabled { - color: #ffc107; - background-color: transparent; } - .btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, .show > .btn-outline-warning.dropdown-toggle { - color: #212529; - background-color: #ffc107; - border-color: #ffc107; } - .btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-warning.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); } - -.btn-outline-danger { - color: #dc3545; - border-color: #dc3545; } - .btn-outline-danger:hover { - color: #fff; - background-color: #dc3545; - border-color: #dc3545; } - .btn-outline-danger:focus, .btn-outline-danger.focus { - box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); } - .btn-outline-danger.disabled, .btn-outline-danger:disabled { - color: #dc3545; - background-color: transparent; } - .btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, .show > .btn-outline-danger.dropdown-toggle { - color: #fff; - background-color: #dc3545; - border-color: #dc3545; } - .btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-danger.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); } - -.btn-outline-light { - color: #f8f9fa; - border-color: #f8f9fa; } - .btn-outline-light:hover { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-outline-light:focus, .btn-outline-light.focus { - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } - .btn-outline-light.disabled, .btn-outline-light:disabled { - color: #f8f9fa; - background-color: transparent; } - .btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, .show > .btn-outline-light.dropdown-toggle { - color: #212529; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-light.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } - -.btn-outline-dark { - color: #343a40; - border-color: #343a40; } - .btn-outline-dark:hover { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-outline-dark:focus, .btn-outline-dark.focus { - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } - .btn-outline-dark.disabled, .btn-outline-dark:disabled { - color: #343a40; - background-color: transparent; } - .btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, .show > .btn-outline-dark.dropdown-toggle { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-dark.dropdown-toggle:focus { - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } - -.btn-link { - font-weight: 400; - color: #007bff; - text-decoration: none; } - .btn-link:hover { - color: #0056b3; - text-decoration: underline; } - .btn-link:focus, .btn-link.focus { - text-decoration: underline; - box-shadow: none; } - .btn-link:disabled, .btn-link.disabled { - color: #6c757d; - pointer-events: none; } - -.btn-lg, .btn-group-lg > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; } - -.btn-sm, .btn-group-sm > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; } - -.btn-block { - display: block; - width: 100%; } - .btn-block + .btn-block { - margin-top: 0.5rem; } - -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; } - -.fade { - transition: opacity 0.15s linear; } - @media (prefers-reduced-motion: reduce) { - .fade { - transition: none; } } - .fade:not(.show) { - opacity: 0; } - -.collapse:not(.show) { - display: none; } - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - transition: height 0.35s ease; } - @media (prefers-reduced-motion: reduce) { - .collapsing { - transition: none; } } - -.dropup, -.dropright, -.dropdown, -.dropleft { - position: relative; } - -.dropdown-toggle { - white-space: nowrap; } - .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid; - border-right: 0.3em solid transparent; - border-bottom: 0; - border-left: 0.3em solid transparent; } - .dropdown-toggle:empty::after { - margin-left: 0; } - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 10rem; - padding: 0.5rem 0; - margin: 0.125rem 0 0; - font-size: 1rem; - color: #212529; - text-align: left; - list-style: none; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 0.25rem; } - -.dropdown-menu-left { - right: auto; - left: 0; } - -.dropdown-menu-right { - right: 0; - left: auto; } - -@media (min-width: 576px) { - .dropdown-menu-sm-left { - right: auto; - left: 0; } - - .dropdown-menu-sm-right { - right: 0; - left: auto; } } -@media (min-width: 768px) { - .dropdown-menu-md-left { - right: auto; - left: 0; } - - .dropdown-menu-md-right { - right: 0; - left: auto; } } -@media (min-width: 992px) { - .dropdown-menu-lg-left { - right: auto; - left: 0; } - - .dropdown-menu-lg-right { - right: 0; - left: auto; } } -@media (min-width: 1200px) { - .dropdown-menu-xl-left { - right: auto; - left: 0; } - - .dropdown-menu-xl-right { - right: 0; - left: auto; } } -.dropup .dropdown-menu { - top: auto; - bottom: 100%; - margin-top: 0; - margin-bottom: 0.125rem; } -.dropup .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0; - border-right: 0.3em solid transparent; - border-bottom: 0.3em solid; - border-left: 0.3em solid transparent; } -.dropup .dropdown-toggle:empty::after { - margin-left: 0; } - -.dropright .dropdown-menu { - top: 0; - right: auto; - left: 100%; - margin-top: 0; - margin-left: 0.125rem; } -.dropright .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0; - border-bottom: 0.3em solid transparent; - border-left: 0.3em solid; } -.dropright .dropdown-toggle:empty::after { - margin-left: 0; } -.dropright .dropdown-toggle::after { - vertical-align: 0; } - -.dropleft .dropdown-menu { - top: 0; - right: 100%; - left: auto; - margin-top: 0; - margin-right: 0.125rem; } -.dropleft .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; } -.dropleft .dropdown-toggle::after { - display: none; } -.dropleft .dropdown-toggle::before { - display: inline-block; - margin-right: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0.3em solid; - border-bottom: 0.3em solid transparent; } -.dropleft .dropdown-toggle:empty::after { - margin-left: 0; } -.dropleft .dropdown-toggle::before { - vertical-align: 0; } - -.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { - right: auto; - bottom: auto; } - -.dropdown-divider { - height: 0; - margin: 0.5rem 0; - overflow: hidden; - border-top: 1px solid #e9ecef; } - -.dropdown-item { - display: block; - width: 100%; - padding: 0.25rem 1.5rem; - clear: both; - font-weight: 400; - color: #212529; - text-align: inherit; - white-space: nowrap; - background-color: transparent; - border: 0; } - .dropdown-item:hover, .dropdown-item:focus { - color: #16181b; - text-decoration: none; - background-color: #f8f9fa; } - .dropdown-item.active, .dropdown-item:active { - color: #fff; - text-decoration: none; - background-color: #007bff; } - .dropdown-item.disabled, .dropdown-item:disabled { - color: #6c757d; - pointer-events: none; - background-color: transparent; } - -.dropdown-menu.show { - display: block; } - -.dropdown-header { - display: block; - padding: 0.5rem 1.5rem; - margin-bottom: 0; - font-size: 0.875rem; - color: #6c757d; - white-space: nowrap; } - -.dropdown-item-text { - display: block; - padding: 0.25rem 1.5rem; - color: #212529; } - -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-flex; - vertical-align: middle; } - .btn-group > .btn, - .btn-group-vertical > .btn { - position: relative; - flex: 1 1 auto; } - .btn-group > .btn:hover, - .btn-group-vertical > .btn:hover { - z-index: 1; } - .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, - .btn-group-vertical > .btn:focus, - .btn-group-vertical > .btn:active, - .btn-group-vertical > .btn.active { - z-index: 1; } - -.btn-toolbar { - display: flex; - flex-wrap: wrap; - justify-content: flex-start; } - .btn-toolbar .input-group { - width: auto; } - -.btn-group > .btn:not(:first-child), -.btn-group > .btn-group:not(:first-child) { - margin-left: -1px; } -.btn-group > .btn:not(:last-child):not(.dropdown-toggle), -.btn-group > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } -.btn-group > .btn:not(:first-child), -.btn-group > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.dropdown-toggle-split { - padding-right: 0.5625rem; - padding-left: 0.5625rem; } - .dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropright .dropdown-toggle-split::after { - margin-left: 0; } - .dropleft .dropdown-toggle-split::before { - margin-right: 0; } - -.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { - padding-right: 0.375rem; - padding-left: 0.375rem; } - -.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { - padding-right: 0.75rem; - padding-left: 0.75rem; } - -.btn-group-vertical { - flex-direction: column; - align-items: flex-start; - justify-content: center; } - .btn-group-vertical > .btn, - .btn-group-vertical > .btn-group { - width: 100%; } - .btn-group-vertical > .btn:not(:first-child), - .btn-group-vertical > .btn-group:not(:first-child) { - margin-top: -1px; } - .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), - .btn-group-vertical > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; } - .btn-group-vertical > .btn:not(:first-child), - .btn-group-vertical > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.btn-group-toggle > .btn, -.btn-group-toggle > .btn-group > .btn { - margin-bottom: 0; } - .btn-group-toggle > .btn input[type="radio"], - .btn-group-toggle > .btn input[type="checkbox"], - .btn-group-toggle > .btn-group > .btn input[type="radio"], - .btn-group-toggle > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; } - -.input-group { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: stretch; - width: 100%; } - .input-group > .form-control, - .input-group > .form-control-plaintext, - .input-group > .custom-select, - .input-group > .custom-file { - position: relative; - flex: 1 1 auto; - width: 1%; - margin-bottom: 0; } - .input-group > .form-control + .form-control, - .input-group > .form-control + .custom-select, - .input-group > .form-control + .custom-file, - .input-group > .form-control-plaintext + .form-control, - .input-group > .form-control-plaintext + .custom-select, - .input-group > .form-control-plaintext + .custom-file, - .input-group > .custom-select + .form-control, - .input-group > .custom-select + .custom-select, - .input-group > .custom-select + .custom-file, - .input-group > .custom-file + .form-control, - .input-group > .custom-file + .custom-select, - .input-group > .custom-file + .custom-file { - margin-left: -1px; } - .input-group > .form-control:focus, - .input-group > .custom-select:focus, - .input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { - z-index: 3; } - .input-group > .custom-file .custom-file-input:focus { - z-index: 4; } - .input-group > .form-control:not(:last-child), - .input-group > .custom-select:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .input-group > .form-control:not(:first-child), - .input-group > .custom-select:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - .input-group > .custom-file { - display: flex; - align-items: center; } - .input-group > .custom-file:not(:last-child) .custom-file-label, .input-group > .custom-file:not(:last-child) .custom-file-label::after { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .input-group > .custom-file:not(:first-child) .custom-file-label { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.input-group-prepend, -.input-group-append { - display: flex; } - .input-group-prepend .btn, - .input-group-append .btn { - position: relative; - z-index: 2; } - .input-group-prepend .btn:focus, - .input-group-append .btn:focus { - z-index: 3; } - .input-group-prepend .btn + .btn, - .input-group-prepend .btn + .input-group-text, - .input-group-prepend .input-group-text + .input-group-text, - .input-group-prepend .input-group-text + .btn, - .input-group-append .btn + .btn, - .input-group-append .btn + .input-group-text, - .input-group-append .input-group-text + .input-group-text, - .input-group-append .input-group-text + .btn { - margin-left: -1px; } - -.input-group-prepend { - margin-right: -1px; } - -.input-group-append { - margin-left: -1px; } - -.input-group-text { - display: flex; - align-items: center; - padding: 0.375rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - text-align: center; - white-space: nowrap; - background-color: #e9ecef; - border: 1px solid #ced4da; - border-radius: 0.25rem; } - .input-group-text input[type="radio"], - .input-group-text input[type="checkbox"] { - margin-top: 0; } - -.input-group-lg > .form-control:not(textarea), -.input-group-lg > .custom-select { - height: calc(1.5em + 1rem + 2px); } - -.input-group-lg > .form-control, -.input-group-lg > .custom-select, -.input-group-lg > .input-group-prepend > .input-group-text, -.input-group-lg > .input-group-append > .input-group-text, -.input-group-lg > .input-group-prepend > .btn, -.input-group-lg > .input-group-append > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; } - -.input-group-sm > .form-control:not(textarea), -.input-group-sm > .custom-select { - height: calc(1.5em + 0.5rem + 2px); } - -.input-group-sm > .form-control, -.input-group-sm > .custom-select, -.input-group-sm > .input-group-prepend > .input-group-text, -.input-group-sm > .input-group-append > .input-group-text, -.input-group-sm > .input-group-prepend > .btn, -.input-group-sm > .input-group-append > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; } - -.input-group-lg > .custom-select, -.input-group-sm > .custom-select { - padding-right: 1.75rem; } - -.input-group > .input-group-prepend > .btn, -.input-group > .input-group-prepend > .input-group-text, -.input-group > .input-group-append:not(:last-child) > .btn, -.input-group > .input-group-append:not(:last-child) > .input-group-text, -.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - -.input-group > .input-group-append > .btn, -.input-group > .input-group-append > .input-group-text, -.input-group > .input-group-prepend:not(:first-child) > .btn, -.input-group > .input-group-prepend:not(:first-child) > .input-group-text, -.input-group > .input-group-prepend:first-child > .btn:not(:first-child), -.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.custom-control { - position: relative; - display: block; - min-height: 1.5rem; - padding-left: 1.5rem; } - -.custom-control-inline { - display: inline-flex; - margin-right: 1rem; } - -.custom-control-input { - position: absolute; - z-index: -1; - opacity: 0; } - .custom-control-input:checked ~ .custom-control-label::before { - color: #fff; - border-color: #007bff; - background-color: #007bff; } - .custom-control-input:focus ~ .custom-control-label::before { - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } - .custom-control-input:focus:not(:checked) ~ .custom-control-label::before { - border-color: #80bdff; } - .custom-control-input:not(:disabled):active ~ .custom-control-label::before { - color: #fff; - background-color: #b3d7ff; - border-color: #b3d7ff; } - .custom-control-input:disabled ~ .custom-control-label { - color: #6c757d; } - .custom-control-input:disabled ~ .custom-control-label::before { - background-color: #e9ecef; } - -.custom-control-label { - position: relative; - margin-bottom: 0; - vertical-align: top; } - .custom-control-label::before { - position: absolute; - top: 0.25rem; - left: -1.5rem; - display: block; - width: 1rem; - height: 1rem; - pointer-events: none; - content: ""; - background-color: #fff; - border: #adb5bd solid 1px; } - .custom-control-label::after { - position: absolute; - top: 0.25rem; - left: -1.5rem; - display: block; - width: 1rem; - height: 1rem; - content: ""; - background: no-repeat 50% / 50% 50%; } - -.custom-checkbox .custom-control-label::before { - border-radius: 0.25rem; } -.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); } -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { - border-color: #007bff; - background-color: #007bff; } -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); } -.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(0, 123, 255, 0.5); } -.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { - background-color: rgba(0, 123, 255, 0.5); } - -.custom-radio .custom-control-label::before { - border-radius: 50%; } -.custom-radio .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); } -.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(0, 123, 255, 0.5); } - -.custom-switch { - padding-left: 2.25rem; } - .custom-switch .custom-control-label::before { - left: -2.25rem; - width: 1.75rem; - pointer-events: all; - border-radius: 0.5rem; } - .custom-switch .custom-control-label::after { - top: calc(0.25rem + 2px); - left: calc(-2.25rem + 2px); - width: calc(1rem - 4px); - height: calc(1rem - 4px); - background-color: #adb5bd; - border-radius: 0.5rem; - transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .custom-switch .custom-control-label::after { - transition: none; } } - .custom-switch .custom-control-input:checked ~ .custom-control-label::after { - background-color: #fff; - transform: translateX(0.75rem); } - .custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { - background-color: rgba(0, 123, 255, 0.5); } - -.custom-select { - display: inline-block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - padding: 0.375rem 1.75rem 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - vertical-align: middle; - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; - background-color: #fff; - border: 1px solid #ced4da; - border-radius: 0.25rem; - appearance: none; } - .custom-select:focus { - border-color: #80bdff; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } - .custom-select:focus::-ms-value { - color: #495057; - background-color: #fff; } - .custom-select[multiple], .custom-select[size]:not([size="1"]) { - height: auto; - padding-right: 0.75rem; - background-image: none; } - .custom-select:disabled { - color: #6c757d; - background-color: #e9ecef; } - .custom-select::-ms-expand { - display: none; } - -.custom-select-sm { - height: calc(1.5em + 0.5rem + 2px); - padding-top: 0.25rem; - padding-bottom: 0.25rem; - padding-left: 0.5rem; - font-size: 0.875rem; } - -.custom-select-lg { - height: calc(1.5em + 1rem + 2px); - padding-top: 0.5rem; - padding-bottom: 0.5rem; - padding-left: 1rem; - font-size: 1.25rem; } - -.custom-file { - position: relative; - display: inline-block; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - margin-bottom: 0; } - -.custom-file-input { - position: relative; - z-index: 2; - width: 100%; - height: calc(1.5em + 0.75rem + 2px); - margin: 0; - opacity: 0; } - .custom-file-input:focus ~ .custom-file-label { - border-color: #80bdff; - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } - .custom-file-input:disabled ~ .custom-file-label { - background-color: #e9ecef; } - .custom-file-input:lang(en) ~ .custom-file-label::after { - content: "Browse"; } - .custom-file-input ~ .custom-file-label[data-browse]::after { - content: attr(data-browse); } - -.custom-file-label { - position: absolute; - top: 0; - right: 0; - left: 0; - z-index: 1; - height: calc(1.5em + 0.75rem + 2px); - padding: 0.375rem 0.75rem; - font-weight: 400; - line-height: 1.5; - color: #495057; - background-color: #fff; - border: 1px solid #ced4da; - border-radius: 0.25rem; } - .custom-file-label::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - z-index: 3; - display: block; - height: calc(1.5em + 0.75rem); - padding: 0.375rem 0.75rem; - line-height: 1.5; - color: #495057; - content: "Browse"; - background-color: #e9ecef; - border-left: inherit; - border-radius: 0 0.25rem 0.25rem 0; } - -.custom-range { - width: 100%; - height: calc(1rem + 0.4rem); - padding: 0; - background-color: transparent; - appearance: none; } - .custom-range:focus { - outline: none; } - .custom-range:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } - .custom-range:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } - .custom-range:focus::-ms-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } - .custom-range::-moz-focus-outer { - border: 0; } - .custom-range::-webkit-slider-thumb { - width: 1rem; - height: 1rem; - margin-top: -0.25rem; - background-color: #007bff; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; } - @media (prefers-reduced-motion: reduce) { - .custom-range::-webkit-slider-thumb { - transition: none; } } - .custom-range::-webkit-slider-thumb:active { - background-color: #b3d7ff; } - .custom-range::-webkit-slider-runnable-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #dee2e6; - border-color: transparent; - border-radius: 1rem; } - .custom-range::-moz-range-thumb { - width: 1rem; - height: 1rem; - background-color: #007bff; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; } - @media (prefers-reduced-motion: reduce) { - .custom-range::-moz-range-thumb { - transition: none; } } - .custom-range::-moz-range-thumb:active { - background-color: #b3d7ff; } - .custom-range::-moz-range-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #dee2e6; - border-color: transparent; - border-radius: 1rem; } - .custom-range::-ms-thumb { - width: 1rem; - height: 1rem; - margin-top: 0; - margin-right: 0.2rem; - margin-left: 0.2rem; - background-color: #007bff; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; } - @media (prefers-reduced-motion: reduce) { - .custom-range::-ms-thumb { - transition: none; } } - .custom-range::-ms-thumb:active { - background-color: #b3d7ff; } - .custom-range::-ms-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: transparent; - border-color: transparent; - border-width: 0.5rem; } - .custom-range::-ms-fill-lower { - background-color: #dee2e6; - border-radius: 1rem; } - .custom-range::-ms-fill-upper { - margin-right: 15px; - background-color: #dee2e6; - border-radius: 1rem; } - .custom-range:disabled::-webkit-slider-thumb { - background-color: #adb5bd; } - .custom-range:disabled::-webkit-slider-runnable-track { - cursor: default; } - .custom-range:disabled::-moz-range-thumb { - background-color: #adb5bd; } - .custom-range:disabled::-moz-range-track { - cursor: default; } - .custom-range:disabled::-ms-thumb { - background-color: #adb5bd; } - -.custom-control-label::before, -.custom-file-label, -.custom-select { - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .custom-control-label::before, - .custom-file-label, - .custom-select { - transition: none; } } - -.nav { - display: flex; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none; } - -.nav-link { - display: block; - padding: 0.5rem 1rem; } - .nav-link:hover, .nav-link:focus { - text-decoration: none; } - .nav-link.disabled { - color: #6c757d; - pointer-events: none; - cursor: default; } - -.nav-tabs { - border-bottom: 1px solid #dee2e6; } - .nav-tabs .nav-item { - margin-bottom: -1px; } - .nav-tabs .nav-link { - border: 1px solid transparent; - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; } - .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { - border-color: #e9ecef #e9ecef #dee2e6; } - .nav-tabs .nav-link.disabled { - color: #6c757d; - background-color: transparent; - border-color: transparent; } - .nav-tabs .nav-link.active, - .nav-tabs .nav-item.show .nav-link { - color: #495057; - background-color: #fff; - border-color: #dee2e6 #dee2e6 #fff; } - .nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.nav-pills .nav-link { - border-radius: 0.25rem; } -.nav-pills .nav-link.active, -.nav-pills .show > .nav-link { - color: #fff; - background-color: #007bff; } - -.nav-fill .nav-item { - flex: 1 1 auto; - text-align: center; } - -.nav-justified .nav-item { - flex-basis: 0; - flex-grow: 1; - text-align: center; } - -.tab-content > .tab-pane { - display: none; } -.tab-content > .active { - display: block; } - -.navbar { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; - padding: 0.5rem 1rem; } - .navbar > .container, - .navbar > .container-fluid { - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; } - -.navbar-brand { - display: inline-block; - padding-top: 0.3125rem; - padding-bottom: 0.3125rem; - margin-right: 1rem; - font-size: 1.25rem; - line-height: inherit; - white-space: nowrap; } - .navbar-brand:hover, .navbar-brand:focus { - text-decoration: none; } - -.navbar-nav { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - list-style: none; } - .navbar-nav .nav-link { - padding-right: 0; - padding-left: 0; } - .navbar-nav .dropdown-menu { - position: static; - float: none; } - -.navbar-text { - display: inline-block; - padding-top: 0.5rem; - padding-bottom: 0.5rem; } - -.navbar-collapse { - flex-basis: 100%; - flex-grow: 1; - align-items: center; } - -.navbar-toggler { - padding: 0.25rem 0.75rem; - font-size: 1.25rem; - line-height: 1; - background-color: transparent; - border: 1px solid transparent; - border-radius: 0.25rem; } - .navbar-toggler:hover, .navbar-toggler:focus { - text-decoration: none; } - -.navbar-toggler-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - vertical-align: middle; - content: ""; - background: no-repeat center center; - background-size: 100% 100%; } - -@media (max-width: 575.98px) { - .navbar-expand-sm > .container, - .navbar-expand-sm > .container-fluid { - padding-right: 0; - padding-left: 0; } } -@media (min-width: 576px) { - .navbar-expand-sm { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand-sm .navbar-nav { - flex-direction: row; } - .navbar-expand-sm .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-sm .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand-sm > .container, - .navbar-expand-sm > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand-sm .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-sm .navbar-toggler { - display: none; } } -@media (max-width: 767.98px) { - .navbar-expand-md > .container, - .navbar-expand-md > .container-fluid { - padding-right: 0; - padding-left: 0; } } -@media (min-width: 768px) { - .navbar-expand-md { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand-md .navbar-nav { - flex-direction: row; } - .navbar-expand-md .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-md .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand-md > .container, - .navbar-expand-md > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand-md .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-md .navbar-toggler { - display: none; } } -@media (max-width: 991.98px) { - .navbar-expand-lg > .container, - .navbar-expand-lg > .container-fluid { - padding-right: 0; - padding-left: 0; } } -@media (min-width: 992px) { - .navbar-expand-lg { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand-lg .navbar-nav { - flex-direction: row; } - .navbar-expand-lg .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-lg .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand-lg > .container, - .navbar-expand-lg > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand-lg .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-lg .navbar-toggler { - display: none; } } -@media (max-width: 1199.98px) { - .navbar-expand-xl > .container, - .navbar-expand-xl > .container-fluid { - padding-right: 0; - padding-left: 0; } } -@media (min-width: 1200px) { - .navbar-expand-xl { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand-xl .navbar-nav { - flex-direction: row; } - .navbar-expand-xl .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-xl .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand-xl > .container, - .navbar-expand-xl > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand-xl .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand-xl .navbar-toggler { - display: none; } } -.navbar-expand { - flex-flow: row nowrap; - justify-content: flex-start; } - .navbar-expand > .container, - .navbar-expand > .container-fluid { - padding-right: 0; - padding-left: 0; } - .navbar-expand .navbar-nav { - flex-direction: row; } - .navbar-expand .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; } - .navbar-expand > .container, - .navbar-expand > .container-fluid { - flex-wrap: nowrap; } - .navbar-expand .navbar-collapse { - display: flex !important; - flex-basis: auto; } - .navbar-expand .navbar-toggler { - display: none; } - -.navbar-light .navbar-brand { - color: rgba(0, 0, 0, 0.9); } - .navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { - color: rgba(0, 0, 0, 0.9); } -.navbar-light .navbar-nav .nav-link { - color: rgba(0, 0, 0, 0.5); } - .navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { - color: rgba(0, 0, 0, 0.7); } - .navbar-light .navbar-nav .nav-link.disabled { - color: rgba(0, 0, 0, 0.3); } -.navbar-light .navbar-nav .show > .nav-link, -.navbar-light .navbar-nav .active > .nav-link, -.navbar-light .navbar-nav .nav-link.show, -.navbar-light .navbar-nav .nav-link.active { - color: rgba(0, 0, 0, 0.9); } -.navbar-light .navbar-toggler { - color: rgba(0, 0, 0, 0.5); - border-color: rgba(0, 0, 0, 0.1); } -.navbar-light .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } -.navbar-light .navbar-text { - color: rgba(0, 0, 0, 0.5); } - .navbar-light .navbar-text a { - color: rgba(0, 0, 0, 0.9); } - .navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { - color: rgba(0, 0, 0, 0.9); } - -.navbar-dark .navbar-brand { - color: #fff; } - .navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { - color: #fff; } -.navbar-dark .navbar-nav .nav-link { - color: rgba(255, 255, 255, 0.5); } - .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { - color: rgba(255, 255, 255, 0.75); } - .navbar-dark .navbar-nav .nav-link.disabled { - color: rgba(255, 255, 255, 0.25); } -.navbar-dark .navbar-nav .show > .nav-link, -.navbar-dark .navbar-nav .active > .nav-link, -.navbar-dark .navbar-nav .nav-link.show, -.navbar-dark .navbar-nav .nav-link.active { - color: #fff; } -.navbar-dark .navbar-toggler { - color: rgba(255, 255, 255, 0.5); - border-color: rgba(255, 255, 255, 0.1); } -.navbar-dark .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } -.navbar-dark .navbar-text { - color: rgba(255, 255, 255, 0.5); } - .navbar-dark .navbar-text a { - color: #fff; } - .navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { - color: #fff; } - -.card { - position: relative; - display: flex; - flex-direction: column; - min-width: 0; - word-wrap: break-word; - background-color: #fff; - background-clip: border-box; - border: 1px solid rgba(0, 0, 0, 0.125); - border-radius: 0.25rem; } - .card > hr { - margin-right: 0; - margin-left: 0; } - .card > .list-group:first-child .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; } - .card > .list-group:last-child .list-group-item:last-child { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; } - -.card-body { - flex: 1 1 auto; - padding: 1.25rem; } - -.card-title { - margin-bottom: 0.75rem; } - -.card-subtitle { - margin-top: -0.375rem; - margin-bottom: 0; } - -.card-text:last-child { - margin-bottom: 0; } - -.card-link:hover { - text-decoration: none; } -.card-link + .card-link { - margin-left: 1.25rem; } - -.card-header { - padding: 0.75rem 1.25rem; - margin-bottom: 0; - background-color: rgba(0, 0, 0, 0.03); - border-bottom: 1px solid rgba(0, 0, 0, 0.125); } - .card-header:first-child { - border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; } - .card-header + .list-group .list-group-item:first-child { - border-top: 0; } - -.card-footer { - padding: 0.75rem 1.25rem; - background-color: rgba(0, 0, 0, 0.03); - border-top: 1px solid rgba(0, 0, 0, 0.125); } - .card-footer:last-child { - border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); } - -.card-header-tabs { - margin-right: -0.625rem; - margin-bottom: -0.75rem; - margin-left: -0.625rem; - border-bottom: 0; } - -.card-header-pills { - margin-right: -0.625rem; - margin-left: -0.625rem; } - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: 1.25rem; } - -.card-img { - width: 100%; - border-radius: calc(0.25rem - 1px); } - -.card-img-top { - width: 100%; - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px); } - -.card-img-bottom { - width: 100%; - border-bottom-right-radius: calc(0.25rem - 1px); - border-bottom-left-radius: calc(0.25rem - 1px); } - -.card-deck { - display: flex; - flex-direction: column; } - .card-deck .card { - margin-bottom: 15px; } - @media (min-width: 576px) { - .card-deck { - flex-flow: row wrap; - margin-right: -15px; - margin-left: -15px; } - .card-deck .card { - display: flex; - flex: 1 0 0%; - flex-direction: column; - margin-right: 15px; - margin-bottom: 0; - margin-left: 15px; } } - -.card-group { - display: flex; - flex-direction: column; } - .card-group > .card { - margin-bottom: 15px; } - @media (min-width: 576px) { - .card-group { - flex-flow: row wrap; } - .card-group > .card { - flex: 1 0 0%; - margin-bottom: 0; } - .card-group > .card + .card { - margin-left: 0; - border-left: 0; } - .card-group > .card:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .card-group > .card:not(:last-child) .card-img-top, - .card-group > .card:not(:last-child) .card-header { - border-top-right-radius: 0; } - .card-group > .card:not(:last-child) .card-img-bottom, - .card-group > .card:not(:last-child) .card-footer { - border-bottom-right-radius: 0; } - .card-group > .card:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - .card-group > .card:not(:first-child) .card-img-top, - .card-group > .card:not(:first-child) .card-header { - border-top-left-radius: 0; } - .card-group > .card:not(:first-child) .card-img-bottom, - .card-group > .card:not(:first-child) .card-footer { - border-bottom-left-radius: 0; } } - -.card-columns .card { - margin-bottom: 0.75rem; } -@media (min-width: 576px) { - .card-columns { - column-count: 3; - column-gap: 1.25rem; - orphans: 1; - widows: 1; } - .card-columns .card { - display: inline-block; - width: 100%; } } - -.accordion > .card { - overflow: hidden; } - .accordion > .card:not(:first-of-type) .card-header:first-child { - border-radius: 0; } - .accordion > .card:not(:first-of-type):not(:last-of-type) { - border-bottom: 0; - border-radius: 0; } - .accordion > .card:first-of-type { - border-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; } - .accordion > .card:last-of-type { - border-top-left-radius: 0; - border-top-right-radius: 0; } - .accordion > .card .card-header { - margin-bottom: -1px; } - -.breadcrumb { - display: flex; - flex-wrap: wrap; - padding: 0.75rem 1rem; - margin-bottom: 1rem; - list-style: none; - background-color: #e9ecef; - border-radius: 0.25rem; } - -.breadcrumb-item + .breadcrumb-item { - padding-left: 0.5rem; } - .breadcrumb-item + .breadcrumb-item::before { - display: inline-block; - padding-right: 0.5rem; - color: #6c757d; - content: "/"; } -.breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: underline; } -.breadcrumb-item + .breadcrumb-item:hover::before { - text-decoration: none; } -.breadcrumb-item.active { - color: #6c757d; } - -.pagination { - display: flex; - padding-left: 0; - list-style: none; - border-radius: 0.25rem; } - -.page-link { - position: relative; - display: block; - padding: 0.5rem 0.75rem; - margin-left: -1px; - line-height: 1.25; - color: #007bff; - background-color: #fff; - border: 1px solid #dee2e6; } - .page-link:hover { - z-index: 2; - color: #0056b3; - text-decoration: none; - background-color: #e9ecef; - border-color: #dee2e6; } - .page-link:focus { - z-index: 2; - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } - -.page-item:first-child .page-link { - margin-left: 0; - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; } -.page-item:last-child .page-link { - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; } -.page-item.active .page-link { - z-index: 1; - color: #fff; - background-color: #007bff; - border-color: #007bff; } -.page-item.disabled .page-link { - color: #6c757d; - pointer-events: none; - cursor: auto; - background-color: #fff; - border-color: #dee2e6; } - -.pagination-lg .page-link { - padding: 0.75rem 1.5rem; - font-size: 1.25rem; - line-height: 1.5; } -.pagination-lg .page-item:first-child .page-link { - border-top-left-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; } -.pagination-lg .page-item:last-child .page-link { - border-top-right-radius: 0.3rem; - border-bottom-right-radius: 0.3rem; } - -.pagination-sm .page-link { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; } -.pagination-sm .page-item:first-child .page-link { - border-top-left-radius: 0.2rem; - border-bottom-left-radius: 0.2rem; } -.pagination-sm .page-item:last-child .page-link { - border-top-right-radius: 0.2rem; - border-bottom-right-radius: 0.2rem; } - -.badge { - display: inline-block; - padding: 0.25em 0.4em; - font-size: 75%; - font-weight: 700; - line-height: 1; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: 0.25rem; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .badge { - transition: none; } } - a.badge:hover, a.badge:focus { - text-decoration: none; } - .badge:empty { - display: none; } - -.btn .badge { - position: relative; - top: -1px; } - -.badge-pill { - padding-right: 0.6em; - padding-left: 0.6em; - border-radius: 10rem; } - -.badge-primary { - color: #fff; - background-color: #007bff; } - a.badge-primary:hover, a.badge-primary:focus { - color: #fff; - background-color: #0062cc; } - a.badge-primary:focus, a.badge-primary.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); } - -.badge-secondary { - color: #fff; - background-color: #6c757d; } - a.badge-secondary:hover, a.badge-secondary:focus { - color: #fff; - background-color: #545b62; } - a.badge-secondary:focus, a.badge-secondary.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); } - -.badge-success { - color: #fff; - background-color: #28a745; } - a.badge-success:hover, a.badge-success:focus { - color: #fff; - background-color: #1e7e34; } - a.badge-success:focus, a.badge-success.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); } - -.badge-info { - color: #fff; - background-color: #17a2b8; } - a.badge-info:hover, a.badge-info:focus { - color: #fff; - background-color: #117a8b; } - a.badge-info:focus, a.badge-info.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } - -.badge-warning { - color: #212529; - background-color: #ffc107; } - a.badge-warning:hover, a.badge-warning:focus { - color: #212529; - background-color: #d39e00; } - a.badge-warning:focus, a.badge-warning.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); } - -.badge-danger { - color: #fff; - background-color: #dc3545; } - a.badge-danger:hover, a.badge-danger:focus { - color: #fff; - background-color: #bd2130; } - a.badge-danger:focus, a.badge-danger.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); } - -.badge-light { - color: #212529; - background-color: #f8f9fa; } - a.badge-light:hover, a.badge-light:focus { - color: #212529; - background-color: #dae0e5; } - a.badge-light:focus, a.badge-light.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } - -.badge-dark { - color: #fff; - background-color: #343a40; } - a.badge-dark:hover, a.badge-dark:focus { - color: #fff; - background-color: #1d2124; } - a.badge-dark:focus, a.badge-dark.focus { - outline: 0; - box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); } - -.jumbotron { - padding: 2rem 1rem; - margin-bottom: 2rem; - background-color: #e9ecef; - border-radius: 0.3rem; } - @media (min-width: 576px) { - .jumbotron { - padding: 4rem 2rem; } } - -.jumbotron-fluid { - padding-right: 0; - padding-left: 0; - border-radius: 0; } - -.alert { - position: relative; - padding: 0.75rem 1.25rem; - margin-bottom: 1rem; - border: 1px solid transparent; - border-radius: 0.25rem; } - -.alert-heading { - color: inherit; } - -.alert-link { - font-weight: 700; } - -.alert-dismissible { - padding-right: 4rem; } - .alert-dismissible .close { - position: absolute; - top: 0; - right: 0; - padding: 0.75rem 1.25rem; - color: inherit; } - -.alert-primary { - color: #004085; - background-color: #cce5ff; - border-color: #b8daff; } - .alert-primary hr { - border-top-color: #9fcdff; } - .alert-primary .alert-link { - color: #002752; } - -.alert-secondary { - color: #383d41; - background-color: #e2e3e5; - border-color: #d6d8db; } - .alert-secondary hr { - border-top-color: #c8cbcf; } - .alert-secondary .alert-link { - color: #202326; } - -.alert-success { - color: #155724; - background-color: #d4edda; - border-color: #c3e6cb; } - .alert-success hr { - border-top-color: #b1dfbb; } - .alert-success .alert-link { - color: #0b2e13; } - -.alert-info { - color: #0c5460; - background-color: #d1ecf1; - border-color: #bee5eb; } - .alert-info hr { - border-top-color: #abdde5; } - .alert-info .alert-link { - color: #062c33; } - -.alert-warning { - color: #856404; - background-color: #fff3cd; - border-color: #ffeeba; } - .alert-warning hr { - border-top-color: #ffe8a1; } - .alert-warning .alert-link { - color: #533f03; } - -.alert-danger { - color: #721c24; - background-color: #f8d7da; - border-color: #f5c6cb; } - .alert-danger hr { - border-top-color: #f1b0b7; } - .alert-danger .alert-link { - color: #491217; } - -.alert-light { - color: #818182; - background-color: #fefefe; - border-color: #fdfdfe; } - .alert-light hr { - border-top-color: #ececf6; } - .alert-light .alert-link { - color: #686868; } - -.alert-dark { - color: #1b1e21; - background-color: #d6d8d9; - border-color: #c6c8ca; } - .alert-dark hr { - border-top-color: #b9bbbe; } - .alert-dark .alert-link { - color: #040505; } - -@keyframes progress-bar-stripes { - from { - background-position: 1rem 0; } - to { - background-position: 0 0; } } -.progress { - display: flex; - height: 1rem; - overflow: hidden; - font-size: 0.75rem; - background-color: #e9ecef; - border-radius: 0.25rem; } - -.progress-bar { - display: flex; - flex-direction: column; - justify-content: center; - color: #fff; - text-align: center; - white-space: nowrap; - background-color: #007bff; - transition: width 0.6s ease; } - @media (prefers-reduced-motion: reduce) { - .progress-bar { - transition: none; } } - -.progress-bar-striped { - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 1rem 1rem; } - -.progress-bar-animated { - animation: progress-bar-stripes 1s linear infinite; } - @media (prefers-reduced-motion: reduce) { - .progress-bar-animated { - animation: none; } } - -.media { - display: flex; - align-items: flex-start; } - -.media-body { - flex: 1; } - -.list-group { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; } - -.list-group-item-action { - width: 100%; - color: #495057; - text-align: inherit; } - .list-group-item-action:hover, .list-group-item-action:focus { - z-index: 1; - color: #495057; - text-decoration: none; - background-color: #f8f9fa; } - .list-group-item-action:active { - color: #212529; - background-color: #e9ecef; } - -.list-group-item { - position: relative; - display: block; - padding: 0.75rem 1.25rem; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid rgba(0, 0, 0, 0.125); } - .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; } - .list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; } - .list-group-item.disabled, .list-group-item:disabled { - color: #6c757d; - pointer-events: none; - background-color: #fff; } - .list-group-item.active { - z-index: 2; - color: #fff; - background-color: #007bff; - border-color: #007bff; } - -.list-group-horizontal { - flex-direction: row; } - .list-group-horizontal .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } - -@media (min-width: 576px) { - .list-group-horizontal-sm { - flex-direction: row; } - .list-group-horizontal-sm .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal-sm .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal-sm .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } } -@media (min-width: 768px) { - .list-group-horizontal-md { - flex-direction: row; } - .list-group-horizontal-md .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal-md .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal-md .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } } -@media (min-width: 992px) { - .list-group-horizontal-lg { - flex-direction: row; } - .list-group-horizontal-lg .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal-lg .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal-lg .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } } -@media (min-width: 1200px) { - .list-group-horizontal-xl { - flex-direction: row; } - .list-group-horizontal-xl .list-group-item { - margin-right: -1px; - margin-bottom: 0; } - .list-group-horizontal-xl .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; } - .list-group-horizontal-xl .list-group-item:last-child { - margin-right: 0; - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0; } } -.list-group-flush .list-group-item { - border-right: 0; - border-left: 0; - border-radius: 0; } - .list-group-flush .list-group-item:last-child { - margin-bottom: -1px; } -.list-group-flush:first-child .list-group-item:first-child { - border-top: 0; } -.list-group-flush:last-child .list-group-item:last-child { - margin-bottom: 0; - border-bottom: 0; } - -.list-group-item-primary { - color: #004085; - background-color: #b8daff; } - .list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { - color: #004085; - background-color: #9fcdff; } - .list-group-item-primary.list-group-item-action.active { - color: #fff; - background-color: #004085; - border-color: #004085; } - -.list-group-item-secondary { - color: #383d41; - background-color: #d6d8db; } - .list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { - color: #383d41; - background-color: #c8cbcf; } - .list-group-item-secondary.list-group-item-action.active { - color: #fff; - background-color: #383d41; - border-color: #383d41; } - -.list-group-item-success { - color: #155724; - background-color: #c3e6cb; } - .list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { - color: #155724; - background-color: #b1dfbb; } - .list-group-item-success.list-group-item-action.active { - color: #fff; - background-color: #155724; - border-color: #155724; } - -.list-group-item-info { - color: #0c5460; - background-color: #bee5eb; } - .list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { - color: #0c5460; - background-color: #abdde5; } - .list-group-item-info.list-group-item-action.active { - color: #fff; - background-color: #0c5460; - border-color: #0c5460; } - -.list-group-item-warning { - color: #856404; - background-color: #ffeeba; } - .list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { - color: #856404; - background-color: #ffe8a1; } - .list-group-item-warning.list-group-item-action.active { - color: #fff; - background-color: #856404; - border-color: #856404; } - -.list-group-item-danger { - color: #721c24; - background-color: #f5c6cb; } - .list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { - color: #721c24; - background-color: #f1b0b7; } - .list-group-item-danger.list-group-item-action.active { - color: #fff; - background-color: #721c24; - border-color: #721c24; } - -.list-group-item-light { - color: #818182; - background-color: #fdfdfe; } - .list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { - color: #818182; - background-color: #ececf6; } - .list-group-item-light.list-group-item-action.active { - color: #fff; - background-color: #818182; - border-color: #818182; } - -.list-group-item-dark { - color: #1b1e21; - background-color: #c6c8ca; } - .list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { - color: #1b1e21; - background-color: #b9bbbe; } - .list-group-item-dark.list-group-item-action.active { - color: #fff; - background-color: #1b1e21; - border-color: #1b1e21; } - -.close { - float: right; - font-size: 1.5rem; - font-weight: 700; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - opacity: .5; } - .close:hover { - color: #000; - text-decoration: none; } - .close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { - opacity: .75; } - -button.close { - padding: 0; - background-color: transparent; - border: 0; - appearance: none; } - -a.close.disabled { - pointer-events: none; } - -.toast { - max-width: 350px; - overflow: hidden; - font-size: 0.875rem; - background-color: rgba(255, 255, 255, 0.85); - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.1); - box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); - backdrop-filter: blur(10px); - opacity: 0; - border-radius: 0.25rem; } - .toast:not(:last-child) { - margin-bottom: 0.75rem; } - .toast.showing { - opacity: 1; } - .toast.show { - display: block; - opacity: 1; } - .toast.hide { - display: none; } - -.toast-header { - display: flex; - align-items: center; - padding: 0.25rem 0.75rem; - color: #6c757d; - background-color: rgba(255, 255, 255, 0.85); - background-clip: padding-box; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); } - -.toast-body { - padding: 0.75rem; } - -.modal-open { - overflow: hidden; } - .modal-open .modal { - overflow-x: hidden; - overflow-y: auto; } - -.modal { - position: fixed; - top: 0; - left: 0; - z-index: 1050; - display: none; - width: 100%; - height: 100%; - overflow: hidden; - outline: 0; } - -.modal-dialog { - position: relative; - width: auto; - margin: 0.5rem; - pointer-events: none; } - .modal.fade .modal-dialog { - transition: transform 0.3s ease-out; - transform: translate(0, -50px); } - @media (prefers-reduced-motion: reduce) { - .modal.fade .modal-dialog { - transition: none; } } - .modal.show .modal-dialog { - transform: none; } - -.modal-dialog-scrollable { - display: flex; - max-height: calc(100% - 1rem); } - .modal-dialog-scrollable .modal-content { - max-height: calc(100vh - 1rem); - overflow: hidden; } - .modal-dialog-scrollable .modal-header, - .modal-dialog-scrollable .modal-footer { - flex-shrink: 0; } - .modal-dialog-scrollable .modal-body { - overflow-y: auto; } - -.modal-dialog-centered { - display: flex; - align-items: center; - min-height: calc(100% - 1rem); } - .modal-dialog-centered::before { - display: block; - height: calc(100vh - 1rem); - content: ""; } - .modal-dialog-centered.modal-dialog-scrollable { - flex-direction: column; - justify-content: center; - height: 100%; } - .modal-dialog-centered.modal-dialog-scrollable .modal-content { - max-height: none; } - .modal-dialog-centered.modal-dialog-scrollable::before { - content: none; } - -.modal-content { - position: relative; - display: flex; - flex-direction: column; - width: 100%; - pointer-events: auto; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; - outline: 0; } - -.modal-backdrop { - position: fixed; - top: 0; - left: 0; - z-index: 1040; - width: 100vw; - height: 100vh; - background-color: #000; } - .modal-backdrop.fade { - opacity: 0; } - .modal-backdrop.show { - opacity: 0.5; } - -.modal-header { - display: flex; - align-items: flex-start; - justify-content: space-between; - padding: 1rem 1rem; - border-bottom: 1px solid #dee2e6; - border-top-left-radius: 0.3rem; - border-top-right-radius: 0.3rem; } - .modal-header .close { - padding: 1rem 1rem; - margin: -1rem -1rem -1rem auto; } - -.modal-title { - margin-bottom: 0; - line-height: 1.5; } - -.modal-body { - position: relative; - flex: 1 1 auto; - padding: 1rem; } - -.modal-footer { - display: flex; - align-items: center; - justify-content: flex-end; - padding: 1rem; - border-top: 1px solid #dee2e6; - border-bottom-right-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; } - .modal-footer > :not(:first-child) { - margin-left: .25rem; } - .modal-footer > :not(:last-child) { - margin-right: .25rem; } - -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; } - -@media (min-width: 576px) { - .modal-dialog { - max-width: 500px; - margin: 1.75rem auto; } - - .modal-dialog-scrollable { - max-height: calc(100% - 3.5rem); } - .modal-dialog-scrollable .modal-content { - max-height: calc(100vh - 3.5rem); } - - .modal-dialog-centered { - min-height: calc(100% - 3.5rem); } - .modal-dialog-centered::before { - height: calc(100vh - 3.5rem); } - - .modal-sm { - max-width: 300px; } } -@media (min-width: 992px) { - .modal-lg, - .modal-xl { - max-width: 800px; } } -@media (min-width: 1200px) { - .modal-xl { - max-width: 1140px; } } -.tooltip { - position: absolute; - z-index: 1070; - display: block; - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - opacity: 0; } - .tooltip.show { - opacity: 0.9; } - .tooltip .arrow { - position: absolute; - display: block; - width: 0.8rem; - height: 0.4rem; } - .tooltip .arrow::before { - position: absolute; - content: ""; - border-color: transparent; - border-style: solid; } - -.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { - padding: 0.4rem 0; } - .bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { - bottom: 0; } - .bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { - top: 0; - border-width: 0.4rem 0.4rem 0; - border-top-color: #000; } - -.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { - padding: 0 0.4rem; } - .bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { - left: 0; - width: 0.4rem; - height: 0.8rem; } - .bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { - right: 0; - border-width: 0.4rem 0.4rem 0.4rem 0; - border-right-color: #000; } - -.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { - padding: 0.4rem 0; } - .bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { - top: 0; } - .bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { - bottom: 0; - border-width: 0 0.4rem 0.4rem; - border-bottom-color: #000; } - -.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { - padding: 0 0.4rem; } - .bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { - right: 0; - width: 0.4rem; - height: 0.8rem; } - .bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { - left: 0; - border-width: 0.4rem 0 0.4rem 0.4rem; - border-left-color: #000; } - -.tooltip-inner { - max-width: 200px; - padding: 0.25rem 0.5rem; - color: #fff; - text-align: center; - background-color: #000; - border-radius: 0.25rem; } - -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: block; - max-width: 276px; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; } - .popover .arrow { - position: absolute; - display: block; - width: 1rem; - height: 0.5rem; - margin: 0 0.3rem; } - .popover .arrow::before, .popover .arrow::after { - position: absolute; - display: block; - content: ""; - border-color: transparent; - border-style: solid; } - -.bs-popover-top, .bs-popover-auto[x-placement^="top"] { - margin-bottom: 0.5rem; } - .bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow { - bottom: calc((0.5rem + 1px) * -1); } - .bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before { - bottom: 0; - border-width: 0.5rem 0.5rem 0; - border-top-color: rgba(0, 0, 0, 0.25); } - .bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after { - bottom: 1px; - border-width: 0.5rem 0.5rem 0; - border-top-color: #fff; } - -.bs-popover-right, .bs-popover-auto[x-placement^="right"] { - margin-left: 0.5rem; } - .bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow { - left: calc((0.5rem + 1px) * -1); - width: 0.5rem; - height: 1rem; - margin: 0.3rem 0; } - .bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before { - left: 0; - border-width: 0.5rem 0.5rem 0.5rem 0; - border-right-color: rgba(0, 0, 0, 0.25); } - .bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after { - left: 1px; - border-width: 0.5rem 0.5rem 0.5rem 0; - border-right-color: #fff; } - -.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { - margin-top: 0.5rem; } - .bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow { - top: calc((0.5rem + 1px) * -1); } - .bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before { - top: 0; - border-width: 0 0.5rem 0.5rem 0.5rem; - border-bottom-color: rgba(0, 0, 0, 0.25); } - .bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after { - top: 1px; - border-width: 0 0.5rem 0.5rem 0.5rem; - border-bottom-color: #fff; } - .bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { - position: absolute; - top: 0; - left: 50%; - display: block; - width: 1rem; - margin-left: -0.5rem; - content: ""; - border-bottom: 1px solid #f7f7f7; } - -.bs-popover-left, .bs-popover-auto[x-placement^="left"] { - margin-right: 0.5rem; } - .bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow { - right: calc((0.5rem + 1px) * -1); - width: 0.5rem; - height: 1rem; - margin: 0.3rem 0; } - .bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before { - right: 0; - border-width: 0.5rem 0 0.5rem 0.5rem; - border-left-color: rgba(0, 0, 0, 0.25); } - .bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after { - right: 1px; - border-width: 0.5rem 0 0.5rem 0.5rem; - border-left-color: #fff; } - -.popover-header { - padding: 0.5rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-top-left-radius: calc(0.3rem - 1px); - border-top-right-radius: calc(0.3rem - 1px); } - .popover-header:empty { - display: none; } - -.popover-body { - padding: 0.5rem 0.75rem; - color: #212529; } - -.carousel { - position: relative; } - -.carousel.pointer-event { - touch-action: pan-y; } - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; } - .carousel-inner::after { - display: block; - clear: both; - content: ""; } - -.carousel-item { - position: relative; - display: none; - float: left; - width: 100%; - margin-right: -100%; - backface-visibility: hidden; - transition: transform 0.6s ease-in-out; } - @media (prefers-reduced-motion: reduce) { - .carousel-item { - transition: none; } } - -.carousel-item.active, -.carousel-item-next, -.carousel-item-prev { - display: block; } - -.carousel-item-next:not(.carousel-item-left), -.active.carousel-item-right { - transform: translateX(100%); } - -.carousel-item-prev:not(.carousel-item-right), -.active.carousel-item-left { - transform: translateX(-100%); } - -.carousel-fade .carousel-item { - opacity: 0; - transition-property: opacity; - transform: none; } -.carousel-fade .carousel-item.active, -.carousel-fade .carousel-item-next.carousel-item-left, -.carousel-fade .carousel-item-prev.carousel-item-right { - z-index: 1; - opacity: 1; } -.carousel-fade .active.carousel-item-left, -.carousel-fade .active.carousel-item-right { - z-index: 0; - opacity: 0; - transition: 0s 0.6s opacity; } - @media (prefers-reduced-motion: reduce) { - .carousel-fade .active.carousel-item-left, - .carousel-fade .active.carousel-item-right { - transition: none; } } - -.carousel-control-prev, -.carousel-control-next { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - display: flex; - align-items: center; - justify-content: center; - width: 15%; - color: #fff; - text-align: center; - opacity: 0.5; - transition: opacity 0.15s ease; } - @media (prefers-reduced-motion: reduce) { - .carousel-control-prev, - .carousel-control-next { - transition: none; } } - .carousel-control-prev:hover, .carousel-control-prev:focus, - .carousel-control-next:hover, - .carousel-control-next:focus { - color: #fff; - text-decoration: none; - outline: 0; - opacity: 0.9; } - -.carousel-control-prev { - left: 0; } - -.carousel-control-next { - right: 0; } - -.carousel-control-prev-icon, -.carousel-control-next-icon { - display: inline-block; - width: 20px; - height: 20px; - background: no-repeat 50% / 100% 100%; } - -.carousel-control-prev-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"); } - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"); } - -.carousel-indicators { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 15; - display: flex; - justify-content: center; - padding-left: 0; - margin-right: 15%; - margin-left: 15%; - list-style: none; } - .carousel-indicators li { - box-sizing: content-box; - flex: 0 1 auto; - width: 30px; - height: 3px; - margin-right: 3px; - margin-left: 3px; - text-indent: -999px; - cursor: pointer; - background-color: #fff; - background-clip: padding-box; - border-top: 10px solid transparent; - border-bottom: 10px solid transparent; - opacity: .5; - transition: opacity 0.6s ease; } - @media (prefers-reduced-motion: reduce) { - .carousel-indicators li { - transition: none; } } - .carousel-indicators .active { - opacity: 1; } - -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; } - -@keyframes spinner-border { - to { - transform: rotate(360deg); } } -.spinner-border { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - border: 0.25em solid currentColor; - border-right-color: transparent; - border-radius: 50%; - animation: spinner-border .75s linear infinite; } - -.spinner-border-sm { - width: 1rem; - height: 1rem; - border-width: 0.2em; } - -@keyframes spinner-grow { - 0% { - transform: scale(0); } - 50% { - opacity: 1; } } -.spinner-grow { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: text-bottom; - background-color: currentColor; - border-radius: 50%; - opacity: 0; - animation: spinner-grow .75s linear infinite; } - -.spinner-grow-sm { - width: 1rem; - height: 1rem; } - -.align-baseline { - vertical-align: baseline !important; } - -.align-top { - vertical-align: top !important; } - -.align-middle { - vertical-align: middle !important; } - -.align-bottom { - vertical-align: bottom !important; } - -.align-text-bottom { - vertical-align: text-bottom !important; } - -.align-text-top { - vertical-align: text-top !important; } - -.bg-primary { - background-color: #007bff !important; } - -a.bg-primary:hover, a.bg-primary:focus, -button.bg-primary:hover, -button.bg-primary:focus { - background-color: #0062cc !important; } - -.bg-secondary { - background-color: #6c757d !important; } - -a.bg-secondary:hover, a.bg-secondary:focus, -button.bg-secondary:hover, -button.bg-secondary:focus { - background-color: #545b62 !important; } - -.bg-success { - background-color: #28a745 !important; } - -a.bg-success:hover, a.bg-success:focus, -button.bg-success:hover, -button.bg-success:focus { - background-color: #1e7e34 !important; } - -.bg-info { - background-color: #17a2b8 !important; } - -a.bg-info:hover, a.bg-info:focus, -button.bg-info:hover, -button.bg-info:focus { - background-color: #117a8b !important; } - -.bg-warning { - background-color: #ffc107 !important; } - -a.bg-warning:hover, a.bg-warning:focus, -button.bg-warning:hover, -button.bg-warning:focus { - background-color: #d39e00 !important; } - -.bg-danger { - background-color: #dc3545 !important; } - -a.bg-danger:hover, a.bg-danger:focus, -button.bg-danger:hover, -button.bg-danger:focus { - background-color: #bd2130 !important; } - -.bg-light { - background-color: #f8f9fa !important; } - -a.bg-light:hover, a.bg-light:focus, -button.bg-light:hover, -button.bg-light:focus { - background-color: #dae0e5 !important; } - -.bg-dark { - background-color: #343a40 !important; } - -a.bg-dark:hover, a.bg-dark:focus, -button.bg-dark:hover, -button.bg-dark:focus { - background-color: #1d2124 !important; } - -.bg-white { - background-color: #fff !important; } - -.bg-transparent { - background-color: transparent !important; } - -.border { - border: 1px solid #dee2e6 !important; } - -.border-top { - border-top: 1px solid #dee2e6 !important; } - -.border-right { - border-right: 1px solid #dee2e6 !important; } - -.border-bottom { - border-bottom: 1px solid #dee2e6 !important; } - -.border-left { - border-left: 1px solid #dee2e6 !important; } - -.border-0 { - border: 0 !important; } - -.border-top-0 { - border-top: 0 !important; } - -.border-right-0 { - border-right: 0 !important; } - -.border-bottom-0 { - border-bottom: 0 !important; } - -.border-left-0 { - border-left: 0 !important; } - -.border-primary { - border-color: #007bff !important; } - -.border-secondary { - border-color: #6c757d !important; } - -.border-success { - border-color: #28a745 !important; } - -.border-info { - border-color: #17a2b8 !important; } - -.border-warning { - border-color: #ffc107 !important; } - -.border-danger { - border-color: #dc3545 !important; } - -.border-light { - border-color: #f8f9fa !important; } - -.border-dark { - border-color: #343a40 !important; } - -.border-white { - border-color: #fff !important; } - -.rounded-sm { - border-radius: 0.2rem !important; } - -.rounded { - border-radius: 0.25rem !important; } - -.rounded-top { - border-top-left-radius: 0.25rem !important; - border-top-right-radius: 0.25rem !important; } - -.rounded-right { - border-top-right-radius: 0.25rem !important; - border-bottom-right-radius: 0.25rem !important; } - -.rounded-bottom { - border-bottom-right-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; } - -.rounded-left { - border-top-left-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; } - -.rounded-lg { - border-radius: 0.3rem !important; } - -.rounded-circle { - border-radius: 50% !important; } - -.rounded-pill { - border-radius: 50rem !important; } - -.rounded-0 { - border-radius: 0 !important; } - -.clearfix::after { - display: block; - clear: both; - content: ""; } - -.d-none { - display: none !important; } - -.d-inline { - display: inline !important; } - -.d-inline-block { - display: inline-block !important; } - -.d-block { - display: block !important; } - -.d-table { - display: table !important; } - -.d-table-row { - display: table-row !important; } - -.d-table-cell { - display: table-cell !important; } - -.d-flex { - display: flex !important; } - -.d-inline-flex { - display: inline-flex !important; } - -@media (min-width: 576px) { - .d-sm-none { - display: none !important; } - - .d-sm-inline { - display: inline !important; } - - .d-sm-inline-block { - display: inline-block !important; } - - .d-sm-block { - display: block !important; } - - .d-sm-table { - display: table !important; } - - .d-sm-table-row { - display: table-row !important; } - - .d-sm-table-cell { - display: table-cell !important; } - - .d-sm-flex { - display: flex !important; } - - .d-sm-inline-flex { - display: inline-flex !important; } } -@media (min-width: 768px) { - .d-md-none { - display: none !important; } - - .d-md-inline { - display: inline !important; } - - .d-md-inline-block { - display: inline-block !important; } - - .d-md-block { - display: block !important; } - - .d-md-table { - display: table !important; } - - .d-md-table-row { - display: table-row !important; } - - .d-md-table-cell { - display: table-cell !important; } - - .d-md-flex { - display: flex !important; } - - .d-md-inline-flex { - display: inline-flex !important; } } -@media (min-width: 992px) { - .d-lg-none { - display: none !important; } - - .d-lg-inline { - display: inline !important; } - - .d-lg-inline-block { - display: inline-block !important; } - - .d-lg-block { - display: block !important; } - - .d-lg-table { - display: table !important; } - - .d-lg-table-row { - display: table-row !important; } - - .d-lg-table-cell { - display: table-cell !important; } - - .d-lg-flex { - display: flex !important; } - - .d-lg-inline-flex { - display: inline-flex !important; } } -@media (min-width: 1200px) { - .d-xl-none { - display: none !important; } - - .d-xl-inline { - display: inline !important; } - - .d-xl-inline-block { - display: inline-block !important; } - - .d-xl-block { - display: block !important; } - - .d-xl-table { - display: table !important; } - - .d-xl-table-row { - display: table-row !important; } - - .d-xl-table-cell { - display: table-cell !important; } - - .d-xl-flex { - display: flex !important; } - - .d-xl-inline-flex { - display: inline-flex !important; } } -@media print { - .d-print-none { - display: none !important; } - - .d-print-inline { - display: inline !important; } - - .d-print-inline-block { - display: inline-block !important; } - - .d-print-block { - display: block !important; } - - .d-print-table { - display: table !important; } - - .d-print-table-row { - display: table-row !important; } - - .d-print-table-cell { - display: table-cell !important; } - - .d-print-flex { - display: flex !important; } - - .d-print-inline-flex { - display: inline-flex !important; } } -.embed-responsive { - position: relative; - display: block; - width: 100%; - padding: 0; - overflow: hidden; } - .embed-responsive::before { - display: block; - content: ""; } - .embed-responsive .embed-responsive-item, - .embed-responsive iframe, - .embed-responsive embed, - .embed-responsive object, - .embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; } - -.embed-responsive-21by9::before { - padding-top: 42.8571428571%; } - -.embed-responsive-16by9::before { - padding-top: 56.25%; } - -.embed-responsive-4by3::before { - padding-top: 75%; } - -.embed-responsive-1by1::before { - padding-top: 100%; } - -.flex-row { - flex-direction: row !important; } - -.flex-column { - flex-direction: column !important; } - -.flex-row-reverse { - flex-direction: row-reverse !important; } - -.flex-column-reverse { - flex-direction: column-reverse !important; } - -.flex-wrap { - flex-wrap: wrap !important; } - -.flex-nowrap { - flex-wrap: nowrap !important; } - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; } - -.flex-fill { - flex: 1 1 auto !important; } - -.flex-grow-0 { - flex-grow: 0 !important; } - -.flex-grow-1 { - flex-grow: 1 !important; } - -.flex-shrink-0 { - flex-shrink: 0 !important; } - -.flex-shrink-1 { - flex-shrink: 1 !important; } - -.justify-content-start { - justify-content: flex-start !important; } - -.justify-content-end { - justify-content: flex-end !important; } - -.justify-content-center { - justify-content: center !important; } - -.justify-content-between { - justify-content: space-between !important; } - -.justify-content-around { - justify-content: space-around !important; } - -.align-items-start { - align-items: flex-start !important; } - -.align-items-end { - align-items: flex-end !important; } - -.align-items-center { - align-items: center !important; } - -.align-items-baseline { - align-items: baseline !important; } - -.align-items-stretch { - align-items: stretch !important; } - -.align-content-start { - align-content: flex-start !important; } - -.align-content-end { - align-content: flex-end !important; } - -.align-content-center { - align-content: center !important; } - -.align-content-between { - align-content: space-between !important; } - -.align-content-around { - align-content: space-around !important; } - -.align-content-stretch { - align-content: stretch !important; } - -.align-self-auto { - align-self: auto !important; } - -.align-self-start { - align-self: flex-start !important; } - -.align-self-end { - align-self: flex-end !important; } - -.align-self-center { - align-self: center !important; } - -.align-self-baseline { - align-self: baseline !important; } - -.align-self-stretch { - align-self: stretch !important; } - -@media (min-width: 576px) { - .flex-sm-row { - flex-direction: row !important; } - - .flex-sm-column { - flex-direction: column !important; } - - .flex-sm-row-reverse { - flex-direction: row-reverse !important; } - - .flex-sm-column-reverse { - flex-direction: column-reverse !important; } - - .flex-sm-wrap { - flex-wrap: wrap !important; } - - .flex-sm-nowrap { - flex-wrap: nowrap !important; } - - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-sm-fill { - flex: 1 1 auto !important; } - - .flex-sm-grow-0 { - flex-grow: 0 !important; } - - .flex-sm-grow-1 { - flex-grow: 1 !important; } - - .flex-sm-shrink-0 { - flex-shrink: 0 !important; } - - .flex-sm-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-sm-start { - justify-content: flex-start !important; } - - .justify-content-sm-end { - justify-content: flex-end !important; } - - .justify-content-sm-center { - justify-content: center !important; } - - .justify-content-sm-between { - justify-content: space-between !important; } - - .justify-content-sm-around { - justify-content: space-around !important; } - - .align-items-sm-start { - align-items: flex-start !important; } - - .align-items-sm-end { - align-items: flex-end !important; } - - .align-items-sm-center { - align-items: center !important; } - - .align-items-sm-baseline { - align-items: baseline !important; } - - .align-items-sm-stretch { - align-items: stretch !important; } - - .align-content-sm-start { - align-content: flex-start !important; } - - .align-content-sm-end { - align-content: flex-end !important; } - - .align-content-sm-center { - align-content: center !important; } - - .align-content-sm-between { - align-content: space-between !important; } - - .align-content-sm-around { - align-content: space-around !important; } - - .align-content-sm-stretch { - align-content: stretch !important; } - - .align-self-sm-auto { - align-self: auto !important; } - - .align-self-sm-start { - align-self: flex-start !important; } - - .align-self-sm-end { - align-self: flex-end !important; } - - .align-self-sm-center { - align-self: center !important; } - - .align-self-sm-baseline { - align-self: baseline !important; } - - .align-self-sm-stretch { - align-self: stretch !important; } } -@media (min-width: 768px) { - .flex-md-row { - flex-direction: row !important; } - - .flex-md-column { - flex-direction: column !important; } - - .flex-md-row-reverse { - flex-direction: row-reverse !important; } - - .flex-md-column-reverse { - flex-direction: column-reverse !important; } - - .flex-md-wrap { - flex-wrap: wrap !important; } - - .flex-md-nowrap { - flex-wrap: nowrap !important; } - - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-md-fill { - flex: 1 1 auto !important; } - - .flex-md-grow-0 { - flex-grow: 0 !important; } - - .flex-md-grow-1 { - flex-grow: 1 !important; } - - .flex-md-shrink-0 { - flex-shrink: 0 !important; } - - .flex-md-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-md-start { - justify-content: flex-start !important; } - - .justify-content-md-end { - justify-content: flex-end !important; } - - .justify-content-md-center { - justify-content: center !important; } - - .justify-content-md-between { - justify-content: space-between !important; } - - .justify-content-md-around { - justify-content: space-around !important; } - - .align-items-md-start { - align-items: flex-start !important; } - - .align-items-md-end { - align-items: flex-end !important; } - - .align-items-md-center { - align-items: center !important; } - - .align-items-md-baseline { - align-items: baseline !important; } - - .align-items-md-stretch { - align-items: stretch !important; } - - .align-content-md-start { - align-content: flex-start !important; } - - .align-content-md-end { - align-content: flex-end !important; } - - .align-content-md-center { - align-content: center !important; } - - .align-content-md-between { - align-content: space-between !important; } - - .align-content-md-around { - align-content: space-around !important; } - - .align-content-md-stretch { - align-content: stretch !important; } - - .align-self-md-auto { - align-self: auto !important; } - - .align-self-md-start { - align-self: flex-start !important; } - - .align-self-md-end { - align-self: flex-end !important; } - - .align-self-md-center { - align-self: center !important; } - - .align-self-md-baseline { - align-self: baseline !important; } - - .align-self-md-stretch { - align-self: stretch !important; } } -@media (min-width: 992px) { - .flex-lg-row { - flex-direction: row !important; } - - .flex-lg-column { - flex-direction: column !important; } - - .flex-lg-row-reverse { - flex-direction: row-reverse !important; } - - .flex-lg-column-reverse { - flex-direction: column-reverse !important; } - - .flex-lg-wrap { - flex-wrap: wrap !important; } - - .flex-lg-nowrap { - flex-wrap: nowrap !important; } - - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-lg-fill { - flex: 1 1 auto !important; } - - .flex-lg-grow-0 { - flex-grow: 0 !important; } - - .flex-lg-grow-1 { - flex-grow: 1 !important; } - - .flex-lg-shrink-0 { - flex-shrink: 0 !important; } - - .flex-lg-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-lg-start { - justify-content: flex-start !important; } - - .justify-content-lg-end { - justify-content: flex-end !important; } - - .justify-content-lg-center { - justify-content: center !important; } - - .justify-content-lg-between { - justify-content: space-between !important; } - - .justify-content-lg-around { - justify-content: space-around !important; } - - .align-items-lg-start { - align-items: flex-start !important; } - - .align-items-lg-end { - align-items: flex-end !important; } - - .align-items-lg-center { - align-items: center !important; } - - .align-items-lg-baseline { - align-items: baseline !important; } - - .align-items-lg-stretch { - align-items: stretch !important; } - - .align-content-lg-start { - align-content: flex-start !important; } - - .align-content-lg-end { - align-content: flex-end !important; } - - .align-content-lg-center { - align-content: center !important; } - - .align-content-lg-between { - align-content: space-between !important; } - - .align-content-lg-around { - align-content: space-around !important; } - - .align-content-lg-stretch { - align-content: stretch !important; } - - .align-self-lg-auto { - align-self: auto !important; } - - .align-self-lg-start { - align-self: flex-start !important; } - - .align-self-lg-end { - align-self: flex-end !important; } - - .align-self-lg-center { - align-self: center !important; } - - .align-self-lg-baseline { - align-self: baseline !important; } - - .align-self-lg-stretch { - align-self: stretch !important; } } -@media (min-width: 1200px) { - .flex-xl-row { - flex-direction: row !important; } - - .flex-xl-column { - flex-direction: column !important; } - - .flex-xl-row-reverse { - flex-direction: row-reverse !important; } - - .flex-xl-column-reverse { - flex-direction: column-reverse !important; } - - .flex-xl-wrap { - flex-wrap: wrap !important; } - - .flex-xl-nowrap { - flex-wrap: nowrap !important; } - - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; } - - .flex-xl-fill { - flex: 1 1 auto !important; } - - .flex-xl-grow-0 { - flex-grow: 0 !important; } - - .flex-xl-grow-1 { - flex-grow: 1 !important; } - - .flex-xl-shrink-0 { - flex-shrink: 0 !important; } - - .flex-xl-shrink-1 { - flex-shrink: 1 !important; } - - .justify-content-xl-start { - justify-content: flex-start !important; } - - .justify-content-xl-end { - justify-content: flex-end !important; } - - .justify-content-xl-center { - justify-content: center !important; } - - .justify-content-xl-between { - justify-content: space-between !important; } - - .justify-content-xl-around { - justify-content: space-around !important; } - - .align-items-xl-start { - align-items: flex-start !important; } - - .align-items-xl-end { - align-items: flex-end !important; } - - .align-items-xl-center { - align-items: center !important; } - - .align-items-xl-baseline { - align-items: baseline !important; } - - .align-items-xl-stretch { - align-items: stretch !important; } - - .align-content-xl-start { - align-content: flex-start !important; } - - .align-content-xl-end { - align-content: flex-end !important; } - - .align-content-xl-center { - align-content: center !important; } - - .align-content-xl-between { - align-content: space-between !important; } - - .align-content-xl-around { - align-content: space-around !important; } - - .align-content-xl-stretch { - align-content: stretch !important; } - - .align-self-xl-auto { - align-self: auto !important; } - - .align-self-xl-start { - align-self: flex-start !important; } - - .align-self-xl-end { - align-self: flex-end !important; } - - .align-self-xl-center { - align-self: center !important; } - - .align-self-xl-baseline { - align-self: baseline !important; } - - .align-self-xl-stretch { - align-self: stretch !important; } } -.float-left { - float: left !important; } - -.float-right { - float: right !important; } - -.float-none { - float: none !important; } - -@media (min-width: 576px) { - .float-sm-left { - float: left !important; } - - .float-sm-right { - float: right !important; } - - .float-sm-none { - float: none !important; } } -@media (min-width: 768px) { - .float-md-left { - float: left !important; } - - .float-md-right { - float: right !important; } - - .float-md-none { - float: none !important; } } -@media (min-width: 992px) { - .float-lg-left { - float: left !important; } - - .float-lg-right { - float: right !important; } - - .float-lg-none { - float: none !important; } } -@media (min-width: 1200px) { - .float-xl-left { - float: left !important; } - - .float-xl-right { - float: right !important; } - - .float-xl-none { - float: none !important; } } -.overflow-auto { - overflow: auto !important; } - -.overflow-hidden { - overflow: hidden !important; } - -.position-static { - position: static !important; } - -.position-relative { - position: relative !important; } - -.position-absolute { - position: absolute !important; } - -.position-fixed { - position: fixed !important; } - -.position-sticky { - position: sticky !important; } - -.fixed-top { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; } - -.fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030; } - -@supports (position: sticky) { - .sticky-top { - position: sticky; - top: 0; - z-index: 1020; } } - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border: 0; } - -.sr-only-focusable:active, .sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - overflow: visible; - clip: auto; - white-space: normal; } - -.shadow-sm { - box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; } - -.shadow { - box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; } - -.shadow-lg { - box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; } - -.shadow-none { - box-shadow: none !important; } - -.w-25 { - width: 25% !important; } - -.w-50 { - width: 50% !important; } - -.w-75 { - width: 75% !important; } - -.w-100 { - width: 100% !important; } - -.w-auto { - width: auto !important; } - -.h-25 { - height: 25% !important; } - -.h-50 { - height: 50% !important; } - -.h-75 { - height: 75% !important; } - -.h-100 { - height: 100% !important; } - -.h-auto { - height: auto !important; } - -.mw-100 { - max-width: 100% !important; } - -.mh-100 { - max-height: 100% !important; } - -.min-vw-100 { - min-width: 100vw !important; } - -.min-vh-100 { - min-height: 100vh !important; } - -.vw-100 { - width: 100vw !important; } - -.vh-100 { - height: 100vh !important; } - -.stretched-link::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - pointer-events: auto; - content: ""; - background-color: rgba(0, 0, 0, 0); } - -.m-0 { - margin: 0 !important; } - -.mt-0, -.my-0 { - margin-top: 0 !important; } - -.mr-0, -.mx-0 { - margin-right: 0 !important; } - -.mb-0, -.my-0 { - margin-bottom: 0 !important; } - -.ml-0, -.mx-0 { - margin-left: 0 !important; } - -.m-1 { - margin: 0.25rem !important; } - -.mt-1, -.my-1 { - margin-top: 0.25rem !important; } - -.mr-1, -.mx-1 { - margin-right: 0.25rem !important; } - -.mb-1, -.my-1 { - margin-bottom: 0.25rem !important; } - -.ml-1, -.mx-1 { - margin-left: 0.25rem !important; } - -.m-2 { - margin: 0.5rem !important; } - -.mt-2, -.my-2 { - margin-top: 0.5rem !important; } - -.mr-2, -.mx-2 { - margin-right: 0.5rem !important; } - -.mb-2, -.my-2 { - margin-bottom: 0.5rem !important; } - -.ml-2, -.mx-2 { - margin-left: 0.5rem !important; } - -.m-3 { - margin: 1rem !important; } - -.mt-3, -.my-3 { - margin-top: 1rem !important; } - -.mr-3, -.mx-3 { - margin-right: 1rem !important; } - -.mb-3, -.my-3 { - margin-bottom: 1rem !important; } - -.ml-3, -.mx-3 { - margin-left: 1rem !important; } - -.m-4 { - margin: 1.5rem !important; } - -.mt-4, -.my-4 { - margin-top: 1.5rem !important; } - -.mr-4, -.mx-4 { - margin-right: 1.5rem !important; } - -.mb-4, -.my-4 { - margin-bottom: 1.5rem !important; } - -.ml-4, -.mx-4 { - margin-left: 1.5rem !important; } - -.m-5 { - margin: 3rem !important; } - -.mt-5, -.my-5 { - margin-top: 3rem !important; } - -.mr-5, -.mx-5 { - margin-right: 3rem !important; } - -.mb-5, -.my-5 { - margin-bottom: 3rem !important; } - -.ml-5, -.mx-5 { - margin-left: 3rem !important; } - -.p-0 { - padding: 0 !important; } - -.pt-0, -.py-0 { - padding-top: 0 !important; } - -.pr-0, -.px-0 { - padding-right: 0 !important; } - -.pb-0, -.py-0 { - padding-bottom: 0 !important; } - -.pl-0, -.px-0 { - padding-left: 0 !important; } - -.p-1 { - padding: 0.25rem !important; } - -.pt-1, -.py-1 { - padding-top: 0.25rem !important; } - -.pr-1, -.px-1 { - padding-right: 0.25rem !important; } - -.pb-1, -.py-1 { - padding-bottom: 0.25rem !important; } - -.pl-1, -.px-1 { - padding-left: 0.25rem !important; } - -.p-2 { - padding: 0.5rem !important; } - -.pt-2, -.py-2 { - padding-top: 0.5rem !important; } - -.pr-2, -.px-2 { - padding-right: 0.5rem !important; } - -.pb-2, -.py-2 { - padding-bottom: 0.5rem !important; } - -.pl-2, -.px-2 { - padding-left: 0.5rem !important; } - -.p-3 { - padding: 1rem !important; } - -.pt-3, -.py-3 { - padding-top: 1rem !important; } - -.pr-3, -.px-3 { - padding-right: 1rem !important; } - -.pb-3, -.py-3 { - padding-bottom: 1rem !important; } - -.pl-3, -.px-3 { - padding-left: 1rem !important; } - -.p-4 { - padding: 1.5rem !important; } - -.pt-4, -.py-4 { - padding-top: 1.5rem !important; } - -.pr-4, -.px-4 { - padding-right: 1.5rem !important; } - -.pb-4, -.py-4 { - padding-bottom: 1.5rem !important; } - -.pl-4, -.px-4 { - padding-left: 1.5rem !important; } - -.p-5 { - padding: 3rem !important; } - -.pt-5, -.py-5 { - padding-top: 3rem !important; } - -.pr-5, -.px-5 { - padding-right: 3rem !important; } - -.pb-5, -.py-5 { - padding-bottom: 3rem !important; } - -.pl-5, -.px-5 { - padding-left: 3rem !important; } - -.m-n1 { - margin: -0.25rem !important; } - -.mt-n1, -.my-n1 { - margin-top: -0.25rem !important; } - -.mr-n1, -.mx-n1 { - margin-right: -0.25rem !important; } - -.mb-n1, -.my-n1 { - margin-bottom: -0.25rem !important; } - -.ml-n1, -.mx-n1 { - margin-left: -0.25rem !important; } - -.m-n2 { - margin: -0.5rem !important; } - -.mt-n2, -.my-n2 { - margin-top: -0.5rem !important; } - -.mr-n2, -.mx-n2 { - margin-right: -0.5rem !important; } - -.mb-n2, -.my-n2 { - margin-bottom: -0.5rem !important; } - -.ml-n2, -.mx-n2 { - margin-left: -0.5rem !important; } - -.m-n3 { - margin: -1rem !important; } - -.mt-n3, -.my-n3 { - margin-top: -1rem !important; } - -.mr-n3, -.mx-n3 { - margin-right: -1rem !important; } - -.mb-n3, -.my-n3 { - margin-bottom: -1rem !important; } - -.ml-n3, -.mx-n3 { - margin-left: -1rem !important; } - -.m-n4 { - margin: -1.5rem !important; } - -.mt-n4, -.my-n4 { - margin-top: -1.5rem !important; } - -.mr-n4, -.mx-n4 { - margin-right: -1.5rem !important; } - -.mb-n4, -.my-n4 { - margin-bottom: -1.5rem !important; } - -.ml-n4, -.mx-n4 { - margin-left: -1.5rem !important; } - -.m-n5 { - margin: -3rem !important; } - -.mt-n5, -.my-n5 { - margin-top: -3rem !important; } - -.mr-n5, -.mx-n5 { - margin-right: -3rem !important; } - -.mb-n5, -.my-n5 { - margin-bottom: -3rem !important; } - -.ml-n5, -.mx-n5 { - margin-left: -3rem !important; } - -.m-auto { - margin: auto !important; } - -.mt-auto, -.my-auto { - margin-top: auto !important; } - -.mr-auto, -.mx-auto { - margin-right: auto !important; } - -.mb-auto, -.my-auto { - margin-bottom: auto !important; } - -.ml-auto, -.mx-auto { - margin-left: auto !important; } - -@media (min-width: 576px) { - .m-sm-0 { - margin: 0 !important; } - - .mt-sm-0, - .my-sm-0 { - margin-top: 0 !important; } - - .mr-sm-0, - .mx-sm-0 { - margin-right: 0 !important; } - - .mb-sm-0, - .my-sm-0 { - margin-bottom: 0 !important; } - - .ml-sm-0, - .mx-sm-0 { - margin-left: 0 !important; } - - .m-sm-1 { - margin: 0.25rem !important; } - - .mt-sm-1, - .my-sm-1 { - margin-top: 0.25rem !important; } - - .mr-sm-1, - .mx-sm-1 { - margin-right: 0.25rem !important; } - - .mb-sm-1, - .my-sm-1 { - margin-bottom: 0.25rem !important; } - - .ml-sm-1, - .mx-sm-1 { - margin-left: 0.25rem !important; } - - .m-sm-2 { - margin: 0.5rem !important; } - - .mt-sm-2, - .my-sm-2 { - margin-top: 0.5rem !important; } - - .mr-sm-2, - .mx-sm-2 { - margin-right: 0.5rem !important; } - - .mb-sm-2, - .my-sm-2 { - margin-bottom: 0.5rem !important; } - - .ml-sm-2, - .mx-sm-2 { - margin-left: 0.5rem !important; } - - .m-sm-3 { - margin: 1rem !important; } - - .mt-sm-3, - .my-sm-3 { - margin-top: 1rem !important; } - - .mr-sm-3, - .mx-sm-3 { - margin-right: 1rem !important; } - - .mb-sm-3, - .my-sm-3 { - margin-bottom: 1rem !important; } - - .ml-sm-3, - .mx-sm-3 { - margin-left: 1rem !important; } - - .m-sm-4 { - margin: 1.5rem !important; } - - .mt-sm-4, - .my-sm-4 { - margin-top: 1.5rem !important; } - - .mr-sm-4, - .mx-sm-4 { - margin-right: 1.5rem !important; } - - .mb-sm-4, - .my-sm-4 { - margin-bottom: 1.5rem !important; } - - .ml-sm-4, - .mx-sm-4 { - margin-left: 1.5rem !important; } - - .m-sm-5 { - margin: 3rem !important; } - - .mt-sm-5, - .my-sm-5 { - margin-top: 3rem !important; } - - .mr-sm-5, - .mx-sm-5 { - margin-right: 3rem !important; } - - .mb-sm-5, - .my-sm-5 { - margin-bottom: 3rem !important; } - - .ml-sm-5, - .mx-sm-5 { - margin-left: 3rem !important; } - - .p-sm-0 { - padding: 0 !important; } - - .pt-sm-0, - .py-sm-0 { - padding-top: 0 !important; } - - .pr-sm-0, - .px-sm-0 { - padding-right: 0 !important; } - - .pb-sm-0, - .py-sm-0 { - padding-bottom: 0 !important; } - - .pl-sm-0, - .px-sm-0 { - padding-left: 0 !important; } - - .p-sm-1 { - padding: 0.25rem !important; } - - .pt-sm-1, - .py-sm-1 { - padding-top: 0.25rem !important; } - - .pr-sm-1, - .px-sm-1 { - padding-right: 0.25rem !important; } - - .pb-sm-1, - .py-sm-1 { - padding-bottom: 0.25rem !important; } - - .pl-sm-1, - .px-sm-1 { - padding-left: 0.25rem !important; } - - .p-sm-2 { - padding: 0.5rem !important; } - - .pt-sm-2, - .py-sm-2 { - padding-top: 0.5rem !important; } - - .pr-sm-2, - .px-sm-2 { - padding-right: 0.5rem !important; } - - .pb-sm-2, - .py-sm-2 { - padding-bottom: 0.5rem !important; } - - .pl-sm-2, - .px-sm-2 { - padding-left: 0.5rem !important; } - - .p-sm-3 { - padding: 1rem !important; } - - .pt-sm-3, - .py-sm-3 { - padding-top: 1rem !important; } - - .pr-sm-3, - .px-sm-3 { - padding-right: 1rem !important; } - - .pb-sm-3, - .py-sm-3 { - padding-bottom: 1rem !important; } - - .pl-sm-3, - .px-sm-3 { - padding-left: 1rem !important; } - - .p-sm-4 { - padding: 1.5rem !important; } - - .pt-sm-4, - .py-sm-4 { - padding-top: 1.5rem !important; } - - .pr-sm-4, - .px-sm-4 { - padding-right: 1.5rem !important; } - - .pb-sm-4, - .py-sm-4 { - padding-bottom: 1.5rem !important; } - - .pl-sm-4, - .px-sm-4 { - padding-left: 1.5rem !important; } - - .p-sm-5 { - padding: 3rem !important; } - - .pt-sm-5, - .py-sm-5 { - padding-top: 3rem !important; } - - .pr-sm-5, - .px-sm-5 { - padding-right: 3rem !important; } - - .pb-sm-5, - .py-sm-5 { - padding-bottom: 3rem !important; } - - .pl-sm-5, - .px-sm-5 { - padding-left: 3rem !important; } - - .m-sm-n1 { - margin: -0.25rem !important; } - - .mt-sm-n1, - .my-sm-n1 { - margin-top: -0.25rem !important; } - - .mr-sm-n1, - .mx-sm-n1 { - margin-right: -0.25rem !important; } - - .mb-sm-n1, - .my-sm-n1 { - margin-bottom: -0.25rem !important; } - - .ml-sm-n1, - .mx-sm-n1 { - margin-left: -0.25rem !important; } - - .m-sm-n2 { - margin: -0.5rem !important; } - - .mt-sm-n2, - .my-sm-n2 { - margin-top: -0.5rem !important; } - - .mr-sm-n2, - .mx-sm-n2 { - margin-right: -0.5rem !important; } - - .mb-sm-n2, - .my-sm-n2 { - margin-bottom: -0.5rem !important; } - - .ml-sm-n2, - .mx-sm-n2 { - margin-left: -0.5rem !important; } - - .m-sm-n3 { - margin: -1rem !important; } - - .mt-sm-n3, - .my-sm-n3 { - margin-top: -1rem !important; } - - .mr-sm-n3, - .mx-sm-n3 { - margin-right: -1rem !important; } - - .mb-sm-n3, - .my-sm-n3 { - margin-bottom: -1rem !important; } - - .ml-sm-n3, - .mx-sm-n3 { - margin-left: -1rem !important; } - - .m-sm-n4 { - margin: -1.5rem !important; } - - .mt-sm-n4, - .my-sm-n4 { - margin-top: -1.5rem !important; } - - .mr-sm-n4, - .mx-sm-n4 { - margin-right: -1.5rem !important; } - - .mb-sm-n4, - .my-sm-n4 { - margin-bottom: -1.5rem !important; } - - .ml-sm-n4, - .mx-sm-n4 { - margin-left: -1.5rem !important; } - - .m-sm-n5 { - margin: -3rem !important; } - - .mt-sm-n5, - .my-sm-n5 { - margin-top: -3rem !important; } - - .mr-sm-n5, - .mx-sm-n5 { - margin-right: -3rem !important; } - - .mb-sm-n5, - .my-sm-n5 { - margin-bottom: -3rem !important; } - - .ml-sm-n5, - .mx-sm-n5 { - margin-left: -3rem !important; } - - .m-sm-auto { - margin: auto !important; } - - .mt-sm-auto, - .my-sm-auto { - margin-top: auto !important; } - - .mr-sm-auto, - .mx-sm-auto { - margin-right: auto !important; } - - .mb-sm-auto, - .my-sm-auto { - margin-bottom: auto !important; } - - .ml-sm-auto, - .mx-sm-auto { - margin-left: auto !important; } } -@media (min-width: 768px) { - .m-md-0 { - margin: 0 !important; } - - .mt-md-0, - .my-md-0 { - margin-top: 0 !important; } - - .mr-md-0, - .mx-md-0 { - margin-right: 0 !important; } - - .mb-md-0, - .my-md-0 { - margin-bottom: 0 !important; } - - .ml-md-0, - .mx-md-0 { - margin-left: 0 !important; } - - .m-md-1 { - margin: 0.25rem !important; } - - .mt-md-1, - .my-md-1 { - margin-top: 0.25rem !important; } - - .mr-md-1, - .mx-md-1 { - margin-right: 0.25rem !important; } - - .mb-md-1, - .my-md-1 { - margin-bottom: 0.25rem !important; } - - .ml-md-1, - .mx-md-1 { - margin-left: 0.25rem !important; } - - .m-md-2 { - margin: 0.5rem !important; } - - .mt-md-2, - .my-md-2 { - margin-top: 0.5rem !important; } - - .mr-md-2, - .mx-md-2 { - margin-right: 0.5rem !important; } - - .mb-md-2, - .my-md-2 { - margin-bottom: 0.5rem !important; } - - .ml-md-2, - .mx-md-2 { - margin-left: 0.5rem !important; } - - .m-md-3 { - margin: 1rem !important; } - - .mt-md-3, - .my-md-3 { - margin-top: 1rem !important; } - - .mr-md-3, - .mx-md-3 { - margin-right: 1rem !important; } - - .mb-md-3, - .my-md-3 { - margin-bottom: 1rem !important; } - - .ml-md-3, - .mx-md-3 { - margin-left: 1rem !important; } - - .m-md-4 { - margin: 1.5rem !important; } - - .mt-md-4, - .my-md-4 { - margin-top: 1.5rem !important; } - - .mr-md-4, - .mx-md-4 { - margin-right: 1.5rem !important; } - - .mb-md-4, - .my-md-4 { - margin-bottom: 1.5rem !important; } - - .ml-md-4, - .mx-md-4 { - margin-left: 1.5rem !important; } - - .m-md-5 { - margin: 3rem !important; } - - .mt-md-5, - .my-md-5 { - margin-top: 3rem !important; } - - .mr-md-5, - .mx-md-5 { - margin-right: 3rem !important; } - - .mb-md-5, - .my-md-5 { - margin-bottom: 3rem !important; } - - .ml-md-5, - .mx-md-5 { - margin-left: 3rem !important; } - - .p-md-0 { - padding: 0 !important; } - - .pt-md-0, - .py-md-0 { - padding-top: 0 !important; } - - .pr-md-0, - .px-md-0 { - padding-right: 0 !important; } - - .pb-md-0, - .py-md-0 { - padding-bottom: 0 !important; } - - .pl-md-0, - .px-md-0 { - padding-left: 0 !important; } - - .p-md-1 { - padding: 0.25rem !important; } - - .pt-md-1, - .py-md-1 { - padding-top: 0.25rem !important; } - - .pr-md-1, - .px-md-1 { - padding-right: 0.25rem !important; } - - .pb-md-1, - .py-md-1 { - padding-bottom: 0.25rem !important; } - - .pl-md-1, - .px-md-1 { - padding-left: 0.25rem !important; } - - .p-md-2 { - padding: 0.5rem !important; } - - .pt-md-2, - .py-md-2 { - padding-top: 0.5rem !important; } - - .pr-md-2, - .px-md-2 { - padding-right: 0.5rem !important; } - - .pb-md-2, - .py-md-2 { - padding-bottom: 0.5rem !important; } - - .pl-md-2, - .px-md-2 { - padding-left: 0.5rem !important; } - - .p-md-3 { - padding: 1rem !important; } - - .pt-md-3, - .py-md-3 { - padding-top: 1rem !important; } - - .pr-md-3, - .px-md-3 { - padding-right: 1rem !important; } - - .pb-md-3, - .py-md-3 { - padding-bottom: 1rem !important; } - - .pl-md-3, - .px-md-3 { - padding-left: 1rem !important; } - - .p-md-4 { - padding: 1.5rem !important; } - - .pt-md-4, - .py-md-4 { - padding-top: 1.5rem !important; } - - .pr-md-4, - .px-md-4 { - padding-right: 1.5rem !important; } - - .pb-md-4, - .py-md-4 { - padding-bottom: 1.5rem !important; } - - .pl-md-4, - .px-md-4 { - padding-left: 1.5rem !important; } - - .p-md-5 { - padding: 3rem !important; } - - .pt-md-5, - .py-md-5 { - padding-top: 3rem !important; } - - .pr-md-5, - .px-md-5 { - padding-right: 3rem !important; } - - .pb-md-5, - .py-md-5 { - padding-bottom: 3rem !important; } - - .pl-md-5, - .px-md-5 { - padding-left: 3rem !important; } - - .m-md-n1 { - margin: -0.25rem !important; } - - .mt-md-n1, - .my-md-n1 { - margin-top: -0.25rem !important; } - - .mr-md-n1, - .mx-md-n1 { - margin-right: -0.25rem !important; } - - .mb-md-n1, - .my-md-n1 { - margin-bottom: -0.25rem !important; } - - .ml-md-n1, - .mx-md-n1 { - margin-left: -0.25rem !important; } - - .m-md-n2 { - margin: -0.5rem !important; } - - .mt-md-n2, - .my-md-n2 { - margin-top: -0.5rem !important; } - - .mr-md-n2, - .mx-md-n2 { - margin-right: -0.5rem !important; } - - .mb-md-n2, - .my-md-n2 { - margin-bottom: -0.5rem !important; } - - .ml-md-n2, - .mx-md-n2 { - margin-left: -0.5rem !important; } - - .m-md-n3 { - margin: -1rem !important; } - - .mt-md-n3, - .my-md-n3 { - margin-top: -1rem !important; } - - .mr-md-n3, - .mx-md-n3 { - margin-right: -1rem !important; } - - .mb-md-n3, - .my-md-n3 { - margin-bottom: -1rem !important; } - - .ml-md-n3, - .mx-md-n3 { - margin-left: -1rem !important; } - - .m-md-n4 { - margin: -1.5rem !important; } - - .mt-md-n4, - .my-md-n4 { - margin-top: -1.5rem !important; } - - .mr-md-n4, - .mx-md-n4 { - margin-right: -1.5rem !important; } - - .mb-md-n4, - .my-md-n4 { - margin-bottom: -1.5rem !important; } - - .ml-md-n4, - .mx-md-n4 { - margin-left: -1.5rem !important; } - - .m-md-n5 { - margin: -3rem !important; } - - .mt-md-n5, - .my-md-n5 { - margin-top: -3rem !important; } - - .mr-md-n5, - .mx-md-n5 { - margin-right: -3rem !important; } - - .mb-md-n5, - .my-md-n5 { - margin-bottom: -3rem !important; } - - .ml-md-n5, - .mx-md-n5 { - margin-left: -3rem !important; } - - .m-md-auto { - margin: auto !important; } - - .mt-md-auto, - .my-md-auto { - margin-top: auto !important; } - - .mr-md-auto, - .mx-md-auto { - margin-right: auto !important; } - - .mb-md-auto, - .my-md-auto { - margin-bottom: auto !important; } - - .ml-md-auto, - .mx-md-auto { - margin-left: auto !important; } } -@media (min-width: 992px) { - .m-lg-0 { - margin: 0 !important; } - - .mt-lg-0, - .my-lg-0 { - margin-top: 0 !important; } - - .mr-lg-0, - .mx-lg-0 { - margin-right: 0 !important; } - - .mb-lg-0, - .my-lg-0 { - margin-bottom: 0 !important; } - - .ml-lg-0, - .mx-lg-0 { - margin-left: 0 !important; } - - .m-lg-1 { - margin: 0.25rem !important; } - - .mt-lg-1, - .my-lg-1 { - margin-top: 0.25rem !important; } - - .mr-lg-1, - .mx-lg-1 { - margin-right: 0.25rem !important; } - - .mb-lg-1, - .my-lg-1 { - margin-bottom: 0.25rem !important; } - - .ml-lg-1, - .mx-lg-1 { - margin-left: 0.25rem !important; } - - .m-lg-2 { - margin: 0.5rem !important; } - - .mt-lg-2, - .my-lg-2 { - margin-top: 0.5rem !important; } - - .mr-lg-2, - .mx-lg-2 { - margin-right: 0.5rem !important; } - - .mb-lg-2, - .my-lg-2 { - margin-bottom: 0.5rem !important; } - - .ml-lg-2, - .mx-lg-2 { - margin-left: 0.5rem !important; } - - .m-lg-3 { - margin: 1rem !important; } - - .mt-lg-3, - .my-lg-3 { - margin-top: 1rem !important; } - - .mr-lg-3, - .mx-lg-3 { - margin-right: 1rem !important; } - - .mb-lg-3, - .my-lg-3 { - margin-bottom: 1rem !important; } - - .ml-lg-3, - .mx-lg-3 { - margin-left: 1rem !important; } - - .m-lg-4 { - margin: 1.5rem !important; } - - .mt-lg-4, - .my-lg-4 { - margin-top: 1.5rem !important; } - - .mr-lg-4, - .mx-lg-4 { - margin-right: 1.5rem !important; } - - .mb-lg-4, - .my-lg-4 { - margin-bottom: 1.5rem !important; } - - .ml-lg-4, - .mx-lg-4 { - margin-left: 1.5rem !important; } - - .m-lg-5 { - margin: 3rem !important; } - - .mt-lg-5, - .my-lg-5 { - margin-top: 3rem !important; } - - .mr-lg-5, - .mx-lg-5 { - margin-right: 3rem !important; } - - .mb-lg-5, - .my-lg-5 { - margin-bottom: 3rem !important; } - - .ml-lg-5, - .mx-lg-5 { - margin-left: 3rem !important; } - - .p-lg-0 { - padding: 0 !important; } - - .pt-lg-0, - .py-lg-0 { - padding-top: 0 !important; } - - .pr-lg-0, - .px-lg-0 { - padding-right: 0 !important; } - - .pb-lg-0, - .py-lg-0 { - padding-bottom: 0 !important; } - - .pl-lg-0, - .px-lg-0 { - padding-left: 0 !important; } - - .p-lg-1 { - padding: 0.25rem !important; } - - .pt-lg-1, - .py-lg-1 { - padding-top: 0.25rem !important; } - - .pr-lg-1, - .px-lg-1 { - padding-right: 0.25rem !important; } - - .pb-lg-1, - .py-lg-1 { - padding-bottom: 0.25rem !important; } - - .pl-lg-1, - .px-lg-1 { - padding-left: 0.25rem !important; } - - .p-lg-2 { - padding: 0.5rem !important; } - - .pt-lg-2, - .py-lg-2 { - padding-top: 0.5rem !important; } - - .pr-lg-2, - .px-lg-2 { - padding-right: 0.5rem !important; } - - .pb-lg-2, - .py-lg-2 { - padding-bottom: 0.5rem !important; } - - .pl-lg-2, - .px-lg-2 { - padding-left: 0.5rem !important; } - - .p-lg-3 { - padding: 1rem !important; } - - .pt-lg-3, - .py-lg-3 { - padding-top: 1rem !important; } - - .pr-lg-3, - .px-lg-3 { - padding-right: 1rem !important; } - - .pb-lg-3, - .py-lg-3 { - padding-bottom: 1rem !important; } - - .pl-lg-3, - .px-lg-3 { - padding-left: 1rem !important; } - - .p-lg-4 { - padding: 1.5rem !important; } - - .pt-lg-4, - .py-lg-4 { - padding-top: 1.5rem !important; } - - .pr-lg-4, - .px-lg-4 { - padding-right: 1.5rem !important; } - - .pb-lg-4, - .py-lg-4 { - padding-bottom: 1.5rem !important; } - - .pl-lg-4, - .px-lg-4 { - padding-left: 1.5rem !important; } - - .p-lg-5 { - padding: 3rem !important; } - - .pt-lg-5, - .py-lg-5 { - padding-top: 3rem !important; } - - .pr-lg-5, - .px-lg-5 { - padding-right: 3rem !important; } - - .pb-lg-5, - .py-lg-5 { - padding-bottom: 3rem !important; } - - .pl-lg-5, - .px-lg-5 { - padding-left: 3rem !important; } - - .m-lg-n1 { - margin: -0.25rem !important; } - - .mt-lg-n1, - .my-lg-n1 { - margin-top: -0.25rem !important; } - - .mr-lg-n1, - .mx-lg-n1 { - margin-right: -0.25rem !important; } - - .mb-lg-n1, - .my-lg-n1 { - margin-bottom: -0.25rem !important; } - - .ml-lg-n1, - .mx-lg-n1 { - margin-left: -0.25rem !important; } - - .m-lg-n2 { - margin: -0.5rem !important; } - - .mt-lg-n2, - .my-lg-n2 { - margin-top: -0.5rem !important; } - - .mr-lg-n2, - .mx-lg-n2 { - margin-right: -0.5rem !important; } - - .mb-lg-n2, - .my-lg-n2 { - margin-bottom: -0.5rem !important; } - - .ml-lg-n2, - .mx-lg-n2 { - margin-left: -0.5rem !important; } - - .m-lg-n3 { - margin: -1rem !important; } - - .mt-lg-n3, - .my-lg-n3 { - margin-top: -1rem !important; } - - .mr-lg-n3, - .mx-lg-n3 { - margin-right: -1rem !important; } - - .mb-lg-n3, - .my-lg-n3 { - margin-bottom: -1rem !important; } - - .ml-lg-n3, - .mx-lg-n3 { - margin-left: -1rem !important; } - - .m-lg-n4 { - margin: -1.5rem !important; } - - .mt-lg-n4, - .my-lg-n4 { - margin-top: -1.5rem !important; } - - .mr-lg-n4, - .mx-lg-n4 { - margin-right: -1.5rem !important; } - - .mb-lg-n4, - .my-lg-n4 { - margin-bottom: -1.5rem !important; } - - .ml-lg-n4, - .mx-lg-n4 { - margin-left: -1.5rem !important; } - - .m-lg-n5 { - margin: -3rem !important; } - - .mt-lg-n5, - .my-lg-n5 { - margin-top: -3rem !important; } - - .mr-lg-n5, - .mx-lg-n5 { - margin-right: -3rem !important; } - - .mb-lg-n5, - .my-lg-n5 { - margin-bottom: -3rem !important; } - - .ml-lg-n5, - .mx-lg-n5 { - margin-left: -3rem !important; } - - .m-lg-auto { - margin: auto !important; } - - .mt-lg-auto, - .my-lg-auto { - margin-top: auto !important; } - - .mr-lg-auto, - .mx-lg-auto { - margin-right: auto !important; } - - .mb-lg-auto, - .my-lg-auto { - margin-bottom: auto !important; } - - .ml-lg-auto, - .mx-lg-auto { - margin-left: auto !important; } } -@media (min-width: 1200px) { - .m-xl-0 { - margin: 0 !important; } - - .mt-xl-0, - .my-xl-0 { - margin-top: 0 !important; } - - .mr-xl-0, - .mx-xl-0 { - margin-right: 0 !important; } - - .mb-xl-0, - .my-xl-0 { - margin-bottom: 0 !important; } - - .ml-xl-0, - .mx-xl-0 { - margin-left: 0 !important; } - - .m-xl-1 { - margin: 0.25rem !important; } - - .mt-xl-1, - .my-xl-1 { - margin-top: 0.25rem !important; } - - .mr-xl-1, - .mx-xl-1 { - margin-right: 0.25rem !important; } - - .mb-xl-1, - .my-xl-1 { - margin-bottom: 0.25rem !important; } - - .ml-xl-1, - .mx-xl-1 { - margin-left: 0.25rem !important; } - - .m-xl-2 { - margin: 0.5rem !important; } - - .mt-xl-2, - .my-xl-2 { - margin-top: 0.5rem !important; } - - .mr-xl-2, - .mx-xl-2 { - margin-right: 0.5rem !important; } - - .mb-xl-2, - .my-xl-2 { - margin-bottom: 0.5rem !important; } - - .ml-xl-2, - .mx-xl-2 { - margin-left: 0.5rem !important; } - - .m-xl-3 { - margin: 1rem !important; } - - .mt-xl-3, - .my-xl-3 { - margin-top: 1rem !important; } - - .mr-xl-3, - .mx-xl-3 { - margin-right: 1rem !important; } - - .mb-xl-3, - .my-xl-3 { - margin-bottom: 1rem !important; } - - .ml-xl-3, - .mx-xl-3 { - margin-left: 1rem !important; } - - .m-xl-4 { - margin: 1.5rem !important; } - - .mt-xl-4, - .my-xl-4 { - margin-top: 1.5rem !important; } - - .mr-xl-4, - .mx-xl-4 { - margin-right: 1.5rem !important; } - - .mb-xl-4, - .my-xl-4 { - margin-bottom: 1.5rem !important; } - - .ml-xl-4, - .mx-xl-4 { - margin-left: 1.5rem !important; } - - .m-xl-5 { - margin: 3rem !important; } - - .mt-xl-5, - .my-xl-5 { - margin-top: 3rem !important; } - - .mr-xl-5, - .mx-xl-5 { - margin-right: 3rem !important; } - - .mb-xl-5, - .my-xl-5 { - margin-bottom: 3rem !important; } - - .ml-xl-5, - .mx-xl-5 { - margin-left: 3rem !important; } - - .p-xl-0 { - padding: 0 !important; } - - .pt-xl-0, - .py-xl-0 { - padding-top: 0 !important; } - - .pr-xl-0, - .px-xl-0 { - padding-right: 0 !important; } - - .pb-xl-0, - .py-xl-0 { - padding-bottom: 0 !important; } - - .pl-xl-0, - .px-xl-0 { - padding-left: 0 !important; } - - .p-xl-1 { - padding: 0.25rem !important; } - - .pt-xl-1, - .py-xl-1 { - padding-top: 0.25rem !important; } - - .pr-xl-1, - .px-xl-1 { - padding-right: 0.25rem !important; } - - .pb-xl-1, - .py-xl-1 { - padding-bottom: 0.25rem !important; } - - .pl-xl-1, - .px-xl-1 { - padding-left: 0.25rem !important; } - - .p-xl-2 { - padding: 0.5rem !important; } - - .pt-xl-2, - .py-xl-2 { - padding-top: 0.5rem !important; } - - .pr-xl-2, - .px-xl-2 { - padding-right: 0.5rem !important; } - - .pb-xl-2, - .py-xl-2 { - padding-bottom: 0.5rem !important; } - - .pl-xl-2, - .px-xl-2 { - padding-left: 0.5rem !important; } - - .p-xl-3 { - padding: 1rem !important; } - - .pt-xl-3, - .py-xl-3 { - padding-top: 1rem !important; } - - .pr-xl-3, - .px-xl-3 { - padding-right: 1rem !important; } - - .pb-xl-3, - .py-xl-3 { - padding-bottom: 1rem !important; } - - .pl-xl-3, - .px-xl-3 { - padding-left: 1rem !important; } - - .p-xl-4 { - padding: 1.5rem !important; } - - .pt-xl-4, - .py-xl-4 { - padding-top: 1.5rem !important; } - - .pr-xl-4, - .px-xl-4 { - padding-right: 1.5rem !important; } - - .pb-xl-4, - .py-xl-4 { - padding-bottom: 1.5rem !important; } - - .pl-xl-4, - .px-xl-4 { - padding-left: 1.5rem !important; } - - .p-xl-5 { - padding: 3rem !important; } - - .pt-xl-5, - .py-xl-5 { - padding-top: 3rem !important; } - - .pr-xl-5, - .px-xl-5 { - padding-right: 3rem !important; } - - .pb-xl-5, - .py-xl-5 { - padding-bottom: 3rem !important; } - - .pl-xl-5, - .px-xl-5 { - padding-left: 3rem !important; } - - .m-xl-n1 { - margin: -0.25rem !important; } - - .mt-xl-n1, - .my-xl-n1 { - margin-top: -0.25rem !important; } - - .mr-xl-n1, - .mx-xl-n1 { - margin-right: -0.25rem !important; } - - .mb-xl-n1, - .my-xl-n1 { - margin-bottom: -0.25rem !important; } - - .ml-xl-n1, - .mx-xl-n1 { - margin-left: -0.25rem !important; } - - .m-xl-n2 { - margin: -0.5rem !important; } - - .mt-xl-n2, - .my-xl-n2 { - margin-top: -0.5rem !important; } - - .mr-xl-n2, - .mx-xl-n2 { - margin-right: -0.5rem !important; } - - .mb-xl-n2, - .my-xl-n2 { - margin-bottom: -0.5rem !important; } - - .ml-xl-n2, - .mx-xl-n2 { - margin-left: -0.5rem !important; } - - .m-xl-n3 { - margin: -1rem !important; } - - .mt-xl-n3, - .my-xl-n3 { - margin-top: -1rem !important; } - - .mr-xl-n3, - .mx-xl-n3 { - margin-right: -1rem !important; } - - .mb-xl-n3, - .my-xl-n3 { - margin-bottom: -1rem !important; } - - .ml-xl-n3, - .mx-xl-n3 { - margin-left: -1rem !important; } - - .m-xl-n4 { - margin: -1.5rem !important; } - - .mt-xl-n4, - .my-xl-n4 { - margin-top: -1.5rem !important; } - - .mr-xl-n4, - .mx-xl-n4 { - margin-right: -1.5rem !important; } - - .mb-xl-n4, - .my-xl-n4 { - margin-bottom: -1.5rem !important; } - - .ml-xl-n4, - .mx-xl-n4 { - margin-left: -1.5rem !important; } - - .m-xl-n5 { - margin: -3rem !important; } - - .mt-xl-n5, - .my-xl-n5 { - margin-top: -3rem !important; } - - .mr-xl-n5, - .mx-xl-n5 { - margin-right: -3rem !important; } - - .mb-xl-n5, - .my-xl-n5 { - margin-bottom: -3rem !important; } - - .ml-xl-n5, - .mx-xl-n5 { - margin-left: -3rem !important; } - - .m-xl-auto { - margin: auto !important; } - - .mt-xl-auto, - .my-xl-auto { - margin-top: auto !important; } - - .mr-xl-auto, - .mx-xl-auto { - margin-right: auto !important; } - - .mb-xl-auto, - .my-xl-auto { - margin-bottom: auto !important; } - - .ml-xl-auto, - .mx-xl-auto { - margin-left: auto !important; } } -.text-monospace { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; } - -.text-justify { - text-align: justify !important; } - -.text-wrap { - white-space: normal !important; } - -.text-nowrap { - white-space: nowrap !important; } - -.text-truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; } - -.text-left { - text-align: left !important; } - -.text-right { - text-align: right !important; } - -.text-center { - text-align: center !important; } - -@media (min-width: 576px) { - .text-sm-left { - text-align: left !important; } - - .text-sm-right { - text-align: right !important; } - - .text-sm-center { - text-align: center !important; } } -@media (min-width: 768px) { - .text-md-left { - text-align: left !important; } - - .text-md-right { - text-align: right !important; } - - .text-md-center { - text-align: center !important; } } -@media (min-width: 992px) { - .text-lg-left { - text-align: left !important; } - - .text-lg-right { - text-align: right !important; } - - .text-lg-center { - text-align: center !important; } } -@media (min-width: 1200px) { - .text-xl-left { - text-align: left !important; } - - .text-xl-right { - text-align: right !important; } - - .text-xl-center { - text-align: center !important; } } -.text-lowercase { - text-transform: lowercase !important; } - -.text-uppercase { - text-transform: uppercase !important; } - -.text-capitalize { - text-transform: capitalize !important; } - -.font-weight-light { - font-weight: 300 !important; } - -.font-weight-lighter { - font-weight: lighter !important; } - -.font-weight-normal { - font-weight: 400 !important; } - -.font-weight-bold { - font-weight: 700 !important; } - -.font-weight-bolder { - font-weight: bolder !important; } - -.font-italic { - font-style: italic !important; } - -.text-white { - color: #fff; } - -.text-primary { - color: #007bff !important; } - -a.text-primary:hover, a.text-primary:focus { - color: #0056b3 !important; } - -.text-secondary { - color: #6c757d !important; } - -a.text-secondary:hover, a.text-secondary:focus { - color: #494f54 !important; } - -.text-success { - color: #28a745 !important; } - -a.text-success:hover, a.text-success:focus { - color: #19692c !important; } - -.text-info { - color: #17a2b8 !important; } - -a.text-info:hover, a.text-info:focus { - color: #0f6674 !important; } - -.text-warning { - color: #ffc107 !important; } - -a.text-warning:hover, a.text-warning:focus { - color: #ba8b00 !important; } - -.text-danger { - color: #dc3545 !important; } - -a.text-danger:hover, a.text-danger:focus { - color: #a71d2a !important; } - -.text-light { - color: #f8f9fa !important; } - -a.text-light:hover, a.text-light:focus { - color: #cbd3da !important; } - -.text-dark { - color: #343a40 !important; } - -a.text-dark:hover, a.text-dark:focus { - color: #121416 !important; } - -.text-body { - color: #212529; } - -.text-muted { - color: #6c757d; } - -.text-black-50 { - color: rgba(0, 0, 0, 0.5); } - -.text-white-50 { - color: rgba(255, 255, 255, 0.5); } - -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; } - -.text-decoration-none { - text-decoration: none !important; } - -.text-break { - word-break: break-word !important; - overflow-wrap: break-word !important; } - -.text-reset { - color: inherit !important; } - -.visible { - visibility: visible !important; } - -.invisible { - visibility: hidden !important; } - -@media print { - *, - *::before, - *::after { - text-shadow: none !important; - box-shadow: none !important; } - - a:not(.btn) { - text-decoration: underline; } - - abbr[title]::after { - content: " (" attr(title) ")"; } - - pre { - white-space: pre-wrap !important; } - - pre, - blockquote { - border: 1px solid #adb5bd; - page-break-inside: avoid; } - - thead { - display: table-header-group; } - - tr, - img { - page-break-inside: avoid; } - - p, - h2, - h3 { - orphans: 3; - widows: 3; } - - h2, - h3 { - page-break-after: avoid; } - - @page { - size: a3; } - body { - min-width: 992px !important; } - - .container { - min-width: 992px !important; } - - .navbar { - display: none; } - - .badge { - border: 1px solid #000; } - - .table { - border-collapse: collapse !important; } - .table td, - .table th { - background-color: #fff !important; } - - .table-bordered th, - .table-bordered td { - border: 1px solid #dee2e6 !important; } - - .table-dark { - color: inherit; } - .table-dark th, - .table-dark td, - .table-dark thead th, - .table-dark tbody + tbody { - border-color: #dee2e6; } - - .table .thead-dark th { - color: inherit; - border-color: #dee2e6; } } diff --git a/update/userfiles/modules/microweber/api/libs/bootstrap-4.3.1/css/bootstrap.min.css b/update/userfiles/modules/microweber/api/libs/bootstrap-4.3.1/css/bootstrap.min.css deleted file mode 100644 index 7c4b8576..00000000 --- a/update/userfiles/modules/microweber/api/libs/bootstrap-4.3.1/css/bootstrap.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap v4.3.1 (https://getbootstrap.com/) - * Copyright 2011-2019 The Bootstrap Authors - * Copyright 2011-2019 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:calc(1rem + .4rem);padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #dee2e6;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:0s .6s opacity}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} diff --git a/update/userfiles/modules/microweber/api/live_edit.js b/update/userfiles/modules/microweber/api/live_edit.js index 1adbc058..0ff94b41 100644 --- a/update/userfiles/modules/microweber/api/live_edit.js +++ b/update/userfiles/modules/microweber/api/live_edit.js @@ -68,11 +68,7 @@ mw.live_edit.showSettings = function (a, opts) { return; } var attributes = {}; - if (curr && curr.id && mw.$('#module-settings-' + curr.id).length > 0) { - var m = mw.$('#module-settings-' + curr.id)[0]; - m.scrollIntoView(); - mw.tools.highlight(m); - } + if (curr && curr.attributes) { $.each(curr.attributes, function (index, attr) { attributes[attr.name] = attr.value; @@ -136,7 +132,12 @@ mw.live_edit.showSettings = function (a, opts) { if(mw.liveEditSettings && mw.liveEditSettings.active){ mw.liveEditSettings.hide(); } - + var has = mw.$('#' + modal_name); + if(has.length){ + var dialog = mw.dialog.get(has[0]); + dialog.show(); + return dialog; + } var nmodal = mw.dialogIframe({ url: src, width: 532, @@ -144,7 +145,8 @@ mw.live_edit.showSettings = function (a, opts) { autoHeight:true, id: modal_name, title:'', - className: 'mw-dialog-module-settings' + className: 'mw-dialog-module-settings', + closeButtonAction: 'hide' }); nmodal.iframe.contentWindow.thismodal = nmodal; diff --git a/update/userfiles/modules/microweber/api/liveedit.js b/update/userfiles/modules/microweber/api/liveedit.js deleted file mode 100644 index de5e8d3f..00000000 --- a/update/userfiles/modules/microweber/api/liveedit.js +++ /dev/null @@ -1,114 +0,0 @@ - -mw.liveedit = {}; - - - - - - - - -mw.isDrag = false; -mw.resizable_row_width = false; -mw.mouse_over_handle = false; -mw.external_content_dragged = false; - -mw.have_new_items = false; - -mw.dragCurrent = null; -mw.currentDragMouseOver = null; -mw.liveEditSelectMode = 'element'; - -mw.modulesClickInsert = true; - -mw.mouseDownOnEditor = false; -mw.mouseDownStarted = false; -mw.SmallEditorIsDragging = false; - -mw.states = {}; -mw.live_edit_module_settings_array = []; - -mw.noEditModules = [ - '[type="template_settings"]' -]; - - - -!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery); - -mw.tools.addClass(mwd.body, 'mw-live-edit'); - -$(document).ready(function() { - - if (("ontouchstart" in document.documentElement)) { - mw.$('body').addClass('touchscreen-device'); - } - - mw.liveedit.initReady(); - mw.liveedit.handleEvents(); - mw.liveedit.handleCustomEvents(); - -}); - - -$(window).on("load", function() { - mw.liveedit.initLoad(); -}); - -$(window).on('resize', function() { - mw.tools.module_slider.scale(); - mw.tools.toolbar_slider.ctrl_show_hide(); - mw.liveedit.toolbar.setEditor(); -}); - - diff --git a/update/userfiles/modules/microweber/api/liveedit/beforeleave.js b/update/userfiles/modules/microweber/api/liveedit/beforeleave.js deleted file mode 100644 index 93651b1a..00000000 --- a/update/userfiles/modules/microweber/api/liveedit/beforeleave.js +++ /dev/null @@ -1,40 +0,0 @@ - - -mw.liveedit.beforeleave = function(url) { - var beforeleave_html = "" + - "
      " + - "

      Leave page by choosing an option

      " + - "" + mw.msg.before_leave + "" + - "" + mw.msg.save_and_continue + "" + - "" + mw.msg.cancel + "" + - "
      "; - if (mw.askusertostay && mw.$(".edit.orig_changed").length > 0) { - if (mwd.getElementById('modal_beforeleave') === null) { - var modal = mw.tools.modal.init({ - html: beforeleave_html, - name: 'modal_beforeleave', - width: 470, - height: 230, - template: 'mw_modal_basic' - }); - - var save = modal.container.querySelector('.mw-ui-btn-notification'); - var go = modal.container.querySelector('.mw-ui-btn-important'); - - mw.$(save).click(function() { - mw.$(mwd.body).addClass("loading"); - mw.tools.modal.remove(modal); - mw.drag.save(undefined, function() { - mw.askusertostay = false; - window.location.href = url; - }); - }); - mw.$(go).click(function() { - mw.askusertostay = false; - window.location.href = url; - }); - } - - return false; - } -} diff --git a/update/userfiles/modules/microweber/api/liveedit/data.js b/update/userfiles/modules/microweber/api/liveedit/data.js deleted file mode 100644 index d0f78f40..00000000 --- a/update/userfiles/modules/microweber/api/liveedit/data.js +++ /dev/null @@ -1,23 +0,0 @@ -mw.liveedit.data = { - _data:{}, - init: function() { - mw.$(document.body) - .on('touchmove mousemove', function(e){ - var hasLayout = !!mw.tools.firstMatchesOnNodeOrParent(e.target, ['[data-module-name="layouts"]', '[data-type="layouts"]']); - mw.liveedit.data.set('move', 'hasLayout', hasLayout); - mw.liveedit.data.set('move', 'hasModuleOrElement', mw.tools.hasAnyOfClassesOnNodeOrParent(e.target, ['module', 'element'])); - }) - .on('mouseup touchend', function(e){ - mw.liveedit.data.set('mouseup', 'isIcon', mw.wysiwyg.firstElementThatHasFontIconClass(e.target)); - }); - - - }, - set: function(action, item, value){ - this._data[action] = this._data[action] || {}; - this._data[action][item] = value; - }, - get: function(action, item){ - return this._data[action] ? this._data[action][item] : undefined; - } -}; diff --git a/update/userfiles/modules/microweber/api/liveedit/drag.js b/update/userfiles/modules/microweber/api/liveedit/drag.js index 7a1ceef3..47e8ace8 100644 --- a/update/userfiles/modules/microweber/api/liveedit/drag.js +++ b/update/userfiles/modules/microweber/api/liveedit/drag.js @@ -688,7 +688,7 @@ mw.drag = { i = 0; if (l > 0) { for (; i < l; i++) { - if (els[i].querySelector('p,div,li,h1,h2,h3,h4,h5,h6') === null && !mw.tools.hasClass(els[i], 'plain-text')) { + if (els[i].querySelector('p,div,li,h1,h2,h3,h4,h5,h6,figure,img') === null && !mw.tools.hasClass(els[i], 'plain-text')) { if (!mw.tools.hasClass(els[i].className, 'nodrop') && !mw.tools.hasClass(els[i].className, 'mw-empty')) { if(!mw.tools.hasAnyOfClassesOnNodeOrParent(els[i], ['safe-mode'])){ els[i].innerHTML = '

      ' + els[i].innerHTML + '

      '; diff --git a/update/userfiles/modules/microweber/api/liveedit/events.custom.js b/update/userfiles/modules/microweber/api/liveedit/events.custom.js deleted file mode 100644 index a18a3458..00000000 --- a/update/userfiles/modules/microweber/api/liveedit/events.custom.js +++ /dev/null @@ -1,169 +0,0 @@ -mw.liveedit.handleCustomEvents = function() { - mw.on('ElementOver ModuleOver', function(e, target){ - if(target.id){ - mw.liveEditSelector.active(true); - mw.liveEditSelector.setItem(target, mw.liveEditSelector.interactors); - } - }); - - mw.on("ImageClick ElementClick ModuleClick", function(e, el, originalEvent){ - if(originalEvent) { - el = mw.tools.firstParentOrCurrentWithAnyOfClasses(originalEvent.target, ['element', 'module']) - } - if(el.id) { - if(mw.liveEditSelector.selected && mw.liveEditSelector.selected[0] === el) { - return; - } - mw.liveEditSelector.select(el); - } - }); - - mw.on("DragHoverOnEmpty", function(e, el) { - if ($.browser.webkit) { - var _el = mw.$(el); - _el.addClass("hover"); - if (!_el.hasClass("mw-webkit-drag-hover-binded")) { - _el.addClass("mw-webkit-drag-hover-binded"); - _el.mouseleave(function() { - _el.removeClass("hover"); - }); - } - } - }); - mw.on("IconElementClick", function(e, el) { - mw.iconSelector._activeElement = el; - mw.iconSelector.settingsUI(); - setTimeout(function () { - mw.wysiwyg.contentEditable(el, false); - }) - }); - - mw.on("ComponentClick", function(e, node, type){ - - if (type === 'icon'){ - mw.iconSelector._activeElement = node; - mw.iconSelector.uiHTML(); - mw.iconSelector.settingsUI(); - return; - - } - if(mw.settings.live_edit_open_module_settings_in_sidebar) { - mw.log('ComponentClick' + type); - if (!mw.liveEditSettings) { - return; // admin mode - } - var uitype = type; - if (type === 'element') { - uitype = 'none'; - } - if (type === 'safe-element') { - //uitype = 'element' ; - uitype = 'none'; - } - if (node.nodeName === 'IMG') { - uitype = 'image'; - } - - if (mw.liveEditSettings.active) { - if (mw.sidebarSettingsTabs) { - if (uitype !== 'module') { - mw.sidebarSettingsTabs.setLastClicked(); - } else { - mw.sidebarSettingsTabs.set(2); - } - } - mw.liveNodeSettings.set(uitype, node); - } - - } - }); - - mw.on("ElementClick", function(e, el, c) { - mw.$(".element-current").not(el).removeClass('element-current'); - if (mw.liveEditSelectMode === 'element') { - mw.$(el).addClass('element-current'); - } - - mw.$('.module').each(function(){ - mw.wysiwyg.contentEditable(this, false) - }); - }); - mw.on("PlainTextClick", function(e, el) { - mw.wysiwyg.contentEditable(el, true); - mw.$('.module').each(function(){ - mw.wysiwyg.contentEditable(this, false); - }); - }); - - - mw.on("editUserIsTypingForLong", function(node){ - if(typeof(mw.liveEditSettings) != 'undefined'){ - if(mw.liveEditSettings.active){ - mw.liveEditSettings.hide(); - } - } - }); - mw.on("TableTdClick", function(e, el) { - if (mw.liveedit && mw.liveedit.inline) { - mw.liveedit.inline.setActiveCell(el, e); - var td_parent_table = mw.tools.firstParentWithTag(el, 'table'); - console.log(td_parent_table) - if (td_parent_table) { - mw.liveedit.inline.tableController(td_parent_table); - } - } - }); - - mw.on('UserInteraction', function(){ - mw.dropables.userInteractionClasses(); - mw.liveEditSelector.positionSelected(); - - }); - - mw.on('ElementOver moduleOver', function(e, target){ - var over_target_el = null; - if(e.type === 'onElementOver'){ - over_target_el = mw.tools.firstParentOrCurrentWithAnyOfClasses(target, ['element']) - if(over_target_el && !mw.tools.hasClass('element-over',over_target_el)){ - mw.tools.addClass(over_target_el, 'element-over') - } - } else if(e.type === 'moduleOver'){ - over_target_el = mw.tools.firstParentOrCurrentWithAnyOfClasses(target, ['module']) - if(over_target_el && !mw.tools.hasClass('module-over',over_target_el)){ - mw.tools.addClass(over_target_el, 'module-over') - } - } - if(over_target_el){ - mw.$(".element-over,.module-over").not(over_target_el).removeClass('element-over module-over'); - } - }); - - - - mw.on('CloneableOver', function(e, target, isOverControl){ - mw.drag.onCloneableControl(target, isOverControl) - }); - - var onModuleBetweenModulesTime = null; - - mw.on('ModuleBetweenModules', function(e, el, pos){ - clearTimeout(onModuleBetweenModulesTime); - onModuleBetweenModulesTime = setTimeout(function(){ - if($("#moduleinbetween").length === 0){ - var tip = mw.tooltip({ - content:'To drop this element here, select Clean container first', - element:el[0], - position:pos+'-center', - skin:'dark', - id:'moduleinbetween' - }); - setTimeout(function(){ - mw.$("#moduleinbetween").fadeOut(function(){ - mw.$(this).remove() - }) - }, 3000) - } - }, 1000) - - }); -} diff --git a/update/userfiles/modules/microweber/api/liveedit/events.js b/update/userfiles/modules/microweber/api/liveedit/events.js deleted file mode 100644 index 60aa438f..00000000 --- a/update/userfiles/modules/microweber/api/liveedit/events.js +++ /dev/null @@ -1,117 +0,0 @@ -mw.liveedit.handleEvents = function() { - mw.$(document.body).on('touchmove mousemove', function(){ - if(mw.liveEditSelector.interactors.active) { - if( !mw.liveedit.data.get('move', 'hasModuleOrElement') ){ - mw.liveEditSelector.hideItem(mw.liveEditSelector.interactors); - } - } - }); - mw.$("#live-edit-dropdown-actions-content a").off('click'); - - mw.$(document).on('mousedown touchstart', function(e){ - if(!mw.tools.hasAnyOfClassesOnNodeOrParent(e.target, ['mw-defaults', 'edit', 'element'])){ - mw.$(".element-current").removeClass("element-current"); - } - }); - - mw.$("span.edit:not('.nodrop')").each(function(){ - mw.tools.setTag(this, 'div'); - }); - - - mw.$("#mw-toolbar-css-editor-btn").click(function() { - mw.liveedit.widgets.cssEditorDialog(); - }); - mw.$("#mw-toolbar-html-editor-btn").click(function() { - mw.liveedit.widgets.htmlEditorDialog(); - }); - - mw.$("#mw-toolbar-reset-content-editor-btn").click(function() { - mw.tools.open_reset_content_editor(); - }); - mw.$(mwd.body).on('keyup', function(e) { - mw.$(".mw_master_handle").css({ - left: "", - top: "" - }); - mw.on.stopWriting(e.target, function() { - if (mw.tools.hasClass(e.target, 'edit') || mw.tools.hasParentsWithClass(this, 'edit')) { - mw.liveEditState.record({ - target:e.target, - value:e.target.innerHTML - }); - mw.drag.saveDraft(); - } - }); - }); - - mw.$(mwd.body).on("keydown", function(e) { - - if (e.keyCode === 83 && e.ctrlKey) { - - if (e.altKey) { - return; - } - - if (typeof(mw.settings.live_edit_disable_keyboard_shortcuts) != 'undefined') { - if (mw.settings.live_edit_disable_keyboard_shortcuts === true) { - return; - } - } - mw.event.cancel(e, true); - mw.drag.save(); - } - }); - - mw.$(mwd.body).on("paste", function(e) { - if(mw.tools.hasClass(e.target, 'plain-text')){ - e.preventDefault(); - var text = (e.originalEvent || e).clipboardData.getData('text/plain'); - document.execCommand("insertHTML", false, text); - } - }); - - mw.$(mwd.body).on("mousedown mouseup touchstart touchend", function(e) { - - if (e.type === 'mousedown' || e.type === 'touchstart') { - if (mw.iconSelectorGUI - && !mw.wysiwyg.elementHasFontIconClass(e.target) - && !mw.tools.hasAnyOfClassesOnNodeOrParent(e.target, ['tooltip-icon-picker', 'mw-tooltip'])) { - mw.$(mw.iconSelectorGUI).hide(); - mw.iconSelector.hide(); - } - if (!mw.tools.hasClass(e.target, 'ui-resizable-handle') && !mw.tools.hasParentsWithClass(e.target, 'ui-resizable-handle')) { - mw.tools.addClass(mwd.body, 'state-element') - } else { - mw.tools.removeClass(mwd.body, 'state-element'); - } - - if (!mw.tools.hasParentsWithClass(e.target, 'mw-tooltip-insert-module') && !mw.tools.hasAnyOfClasses(e.target, ['mw-plus-bottom', 'mw-plus-top'])) { - mw.$('.mw-tooltip-insert-module').remove(); - mw.drag.plus.locked = false; - } - - } else { - mw.tools.removeClass(mwd.body, 'state-element'); - } - }); - mw.$('span.mw-powered-by').on("click", function(e) { - mw.tools.open_global_module_settings_modal('white_label/admin', 'mw-powered-by'); - return false; - }); - - mw.$(".edit a, #mw-toolbar-right a").click(function() { - var el = this; - if (!el.isContentEditable) { - if (el.onclick === null) { - var href = (el.getAttribute('href') || '').trim(); - if(href) { - if (!(href.indexOf("javascript:") === 0 || href.indexOf('#') === 0)) { - return mw.liveedit.beforeleave(this.href); - } - } - } - } - }); - -}; diff --git a/update/userfiles/modules/microweber/api/liveedit/initload.js b/update/userfiles/modules/microweber/api/liveedit/initload.js index 98f3b90f..414b58aa 100644 --- a/update/userfiles/modules/microweber/api/liveedit/initload.js +++ b/update/userfiles/modules/microweber/api/liveedit/initload.js @@ -31,8 +31,8 @@ mw.liveedit.initLoad = function() { mw.interval('regular-mode', function(){ - mw.$('.row').addClass('nodrop'); - mw.$('.row .col, .row [class*="col-"]').addClass('allow-drop'); + // mw.$('.row').addClass('nodrop'); + // mw.$('.row .col, .row [class*="col-"]').addClass('allow-drop'); // mw.$('.nodrop .allow-drop').addClass('regular-mode'); mw.$('.safe-element[class*="mw-micon-"]').removeClass('safe-element'); }) diff --git a/update/userfiles/modules/microweber/api/liveedit/initready.js b/update/userfiles/modules/microweber/api/liveedit/initready.js deleted file mode 100644 index 877b5bce..00000000 --- a/update/userfiles/modules/microweber/api/liveedit/initready.js +++ /dev/null @@ -1,32 +0,0 @@ -mw.liveedit.initReady = function() { - mw.liveedit.data.init(); - mw.liveEditSelector = new mw.Selector({ - root: document.body, - autoSelect: false - }); - - mw.paddingCTRL = new mw.paddingEditor({ - - }); - - mw.drag.create(); - - mw.liveedit.editFields.handleKeydown(); - - mw.dragSTOPCheck = false; - - var t = mwd.querySelectorAll('[field="title"]'), - l = t.length, - i = 0; - - for (; i < l; i++) { - mw.$(t[i]).addClass("nodrop"); - } - - - - mw.wysiwyg.init_editables(); - mw.wysiwyg.prepare(); - mw.wysiwyg.init(); - mw.ea = mw.ea || new mw.ElementAnalyzer(); -}; diff --git a/update/userfiles/modules/microweber/api/liveedit/inline.js b/update/userfiles/modules/microweber/api/liveedit/inline.js deleted file mode 100644 index c8da3e22..00000000 --- a/update/userfiles/modules/microweber/api/liveedit/inline.js +++ /dev/null @@ -1,123 +0,0 @@ -mw.liveedit.inline = { - bar: function (id) { - if (typeof id === 'undefined') { - return false; - } - if (mw.$("#" + id).length === 0) { - var bar = mwd.createElement('div'); - bar.id = id; - mw.wysiwyg.contentEditable(bar, false); - bar.className = 'mw-defaults mw-inline-bar'; - mwd.body.appendChild(bar); - return bar; - } - else { - return mw.$("#" + id)[0]; - } - }, - tableControl: false, - tableController: function (el, e) { - if (typeof e !== 'undefined') { - e.stopPropagation(); - } - if (mw.liveedit.inline.tableControl === false) { - mw.liveedit.inline.tableControl = mw.liveedit.inline.bar('mw-inline-tableControl'); - mw.liveedit.inline.tableControl.innerHTML = '' - + ''; - } - var off = mw.$(el).offset(); - mw.$(mw.liveedit.inline.tableControl).css({ - top: off.top - 45, - left: off.left, - display: 'block' - }); - }, - activeCell: null, - setActiveCell: function (el, event) { - if (!mw.tools.hasClass(el.className, 'tc-activecell')) { - mw.$(".tc-activecell").removeClass('tc-activecell'); - mw.$(el).addClass('tc-activecell'); - mw.liveedit.inline.activeCell = el; - } - }, - tableManager: { - insertColumn: function (dir, cell) { - cell = mw.$(cell)[0]; - if (cell === null) { - return false; - } - dir = dir || 'right'; - var rows = mw.$(cell.parentNode.parentNode).children('tr'); - var i = 0, l = rows.length, index = mw.tools.index(cell); - for (; i < l; i++) { - var row = rows[i]; - var cell = mw.$(row).children('td')[index]; - if (dir == 'left' || dir == 'both') { - mw.$(cell).before(" "); - } - if (dir == 'right' || dir == 'both') { - mw.$(cell).after(" "); - } - } - }, - insertRow: function (dir, cell) { - var cell = mw.$(cell)[0]; - if (cell === null) { - return false; - } - var dir = dir || 'under'; - var parent = cell.parentNode, cells = mw.$(parent).children('td'), i = 0, l = cells.length, html = ''; - for (; i < l; i++) { - html += ' '; - } - var html = '' + html + ''; - if (dir == 'under' || dir == 'both') { - mw.$(parent).after(html) - } - if (dir == 'above' || dir == 'both') { - mw.$(parent).before(html) - } - }, - deleteRow: function (cell) { - mw.$(cell.parentNode).remove(); - }, - deleteColumn: function (cell) { - var index = mw.tools.index(cell), body = cell.parentNode.parentNode, rows = mw.$(body).children('tr'), l = rows.length, i = 0; - for (; i < l; i++) { - var row = rows[i]; - mw.$(row.getElementsByTagName('td')[index]).remove(); - } - }, - setStyle: function (cls, cell) { - var table = mw.tools.firstParentWithTag(cell, 'table'); - mw.tools.classNamespaceDelete(table, 'mw-wysiwyg-table'); - mw.$(table).addClass(cls); - } - } -} diff --git a/update/userfiles/modules/microweber/api/liveedit/manage.content.js b/update/userfiles/modules/microweber/api/liveedit/manage.content.js deleted file mode 100644 index ee097388..00000000 --- a/update/userfiles/modules/microweber/api/liveedit/manage.content.js +++ /dev/null @@ -1,116 +0,0 @@ -mw.liveedit.manageContent = { - w: '1220px', - page: function() { - var modal = mw.dialogIframe({ - url: mw.settings.api_url + "module/?type=content/edit_page&live_edit=true&quick_edit=false&id=mw-quick-page&recommended_parent=" + mw.settings.page_id, - width: this.w, - height: 'auto', - autoHeight:true, - name: 'quick_page', - overlay: true, - title: 'New Page', - scrollMode: 'inside' - }); - mw.$(modal.main).addClass('mw-add-content-modal'); - }, - category: function() { - var modal = mw.dialogIframe({ - url: mw.settings.api_url + "module/?type=categories/edit_category&live_edit=true&quick_edit=false&id=mw-quick-category&recommended_parent=" + mw.settings.page_id, - width: this.w, - height: 'auto', - autoHeight:true, - name: 'quick_page', - overlay: true, - title: 'New Category', - scrollMode: 'inside' - }); - mw.$(modal.main).addClass('mw-add-content-modal'); - }, - edit: function(id, content_type, subtype, parent, category) { - var str = ""; - - if (parent) { - str = "&recommended_parent=" + parent; - } - - if (content_type) { - str = str + '&content_type=' + content_type; - } - - if (category) { - str = str + '&category=' + category; - } - - if (subtype) { - str = str + '&subtype=' + subtype; - } - - var actionType = ''; - - if(id === 0){ - actionType = 'Add'; - }else{ - actionType = 'Edit'; - } - - var actionOf = 'Content'; - if(content_type === 'post'){ - actionOf = 'Post' - }else if(content_type === 'page'){ - actionOf = 'Page' - }else if(content_type === 'product'){ - actionOf = 'Product' - }else if(content_type === 'category'){ - actionOf = 'Category' - } - - var modal = mw.dialogIframe({ - url: mw.settings.api_url + "module/?type=content/edit&live_edit=true&quick_edit=false&is-current=true&id=mw-quick-page&content-id=" + id + str, - width: this.w, - height: 'auto', - autoHeight:true, - name: 'quick_page', - id: 'quick_page', - overlay: true, - title: actionType + ' ' + actionOf, - scrollMode: 'inside' - }); - mw.$(modal.main).addClass('mw-add-content-modal'); - }, - page_2: function() { - var modal = mw.dialogIframe({ - url: mw.settings.api_url + "module/?type=content/quick_add&live_edit=true&id=mw-new-content-add-ifame", - width: this.w, - height: 'auto', - name: 'quick_page', - overlay: true, - title: 'New Page', - scrollMode: 'inside' - }); - mw.$(modal.main).addClass('mw-add-content-modal'); - }, - post: function() { - var modal = mw.dialogIframe({ - url: mw.settings.api_url + "module/?type=content/edit_page&live_edit=true&quick_edit=false&id=mw-quick-post&subtype=post&parent-page-id=" + mw.settings.page_id + "&parent-category-id=" + mw.settings.category_id, - width: this.w, - height: 'auto', - autoHeight:true, - name: 'quick_post', - overlay: true, - title: 'New Post' - }); - mw.$(modal.main).addClass('mw-add-content-modal'); - }, - product: function() { - var modal = mw.dialogIframe({ - url: mw.settings.api_url + "module/?type=content/edit_page&live_edit=true&quick_edit=false&id=mw-quick-product&subtype=product&parent-page-id=" + mw.settings.page_id + "&parent-category-id=" + mw.settings.category_id, - width: this.w, - height: 'auto', - autoHeight:true, - name: 'quick_product', - overlay: true, - title: 'New Product' - }); - mw.$(modal.main).addClass('mw-add-content-modal'); - } -} diff --git a/update/userfiles/modules/microweber/api/liveedit/modules.toolbar.js b/update/userfiles/modules/microweber/api/liveedit/modules.toolbar.js deleted file mode 100644 index 1fa9f7d7..00000000 --- a/update/userfiles/modules/microweber/api/liveedit/modules.toolbar.js +++ /dev/null @@ -1,61 +0,0 @@ -mw.liveedit.modulesToolbar = { - init: function (selector) { - var items = selector || ".modules-list li[data-module-name]"; - var $items = mw.$(items); - $items.draggable({ - revert: true, - revertDuration: 0, - start: function(a, b) { - mw.isDrag = true; - mw.dragCurrent = mw.ea.data.currentGrabbed = mw.GlobalModuleListHelper; - mw.$(mwd.body).addClass("dragStart"); - mw.image_resizer._hide(); - - }, - stop: function() { - mw.isDrag = false; - mw.pauseSave = true; - var el = this; - mw.$(mwd.body).removeClass("dragStart"); - setTimeout(function() { - mw.drag.load_new_modules(); - mw.recommend.increase($(mw.dragCurrent).attr("data-module-name")); - mw.drag.toolbar_modules(el); - }, 200); - } - }); - $items.on('mouseenter touchstart', function() { - mw.$(this).draggable("option", "helper", function() { - var el = $(this); - var clone = el.clone(true); - clone.appendTo(mwd.body); - clone.addClass('mw-module-drag-clone'); - mw.GlobalModuleListHelper = clone[0]; - clone.css({ - width: el.width(), - height: el.height() - }); - return clone[0]; - }); - }); - $items.on("click mousedown mouseup", function(e) { - e.preventDefault(); - if (e.type === 'click') { - return false; - } - if (e.type === 'mousedown') { - this.mousedown = true; - } - if (e.type === 'mouseup' && e.which === 1 && !!this.mousedown) { - $items.each(function() { - this.mousedown = false; - }); - if (!mw.isDrag && mww.getSelection().rangeCount > 0 && mwd.querySelector('.mw_modal') === null && mw.modulesClickInsert) { - var html = this.outerHTML; - mw.wysiwyg.insert_html(html); - mw.drag.load_new_modules(); - } - } - }); - } -}; diff --git a/update/userfiles/modules/microweber/api/liveedit/toolbar.js b/update/userfiles/modules/microweber/api/liveedit/toolbar.js deleted file mode 100644 index 0c02022a..00000000 --- a/update/userfiles/modules/microweber/api/liveedit/toolbar.js +++ /dev/null @@ -1,185 +0,0 @@ -mw.liveedit.toolbar = { - fixPad: function () { - mwd.body.style.paddingTop = parseFloat($(mwd.body).css("paddingTop")) + mw.$("#live_edit_toolbar").height() + 'px'; - }, - setEditor: function(){ - /*mw - .$(mwd.querySelector('.editor_wrapper_tabled')) - .css({ - left: mw.$(mwd.querySelector('.toolbar-sections-tabs')).outerWidth(true) + mw.$(mwd.querySelector('.wysiwyg-undo-redo')).outerWidth(true) + 30, - right: mw.$(mwd.querySelector('#mw-toolbar-right')).outerWidth(true) - });*/ - }, - prepare: function () { - mw.$("#liveedit_wysiwyg") - .on('mousedown touchstart',function() { - if (mw.$(".mw_editor_btn_hover").length === 0) { - mw.mouseDownOnEditor = true; - mw.$(this).addClass("hover"); - } - }) - .on('mouseup touchend',function() { - mw.mouseDownOnEditor = false; - mw.$(this).removeClass("hover"); - }); - mw.$(window).scroll(function() { - if ($(window).scrollTop() > 10) { - mw.tools.addClass(mwd.getElementById('live_edit_toolbar'), 'scrolling'); - } else { - mw.tools.removeClass(mwd.getElementById('live_edit_toolbar'), 'scrolling'); - } - - }); - mw.$("#live_edit_toolbar").hover(function() { - mw.$(mwd.body).addClass("toolbar-hover"); - }, function() { - mw.$(mwd.body).removeClass("toolbar-hover"); - }); - }, - editor: { - init: function () { - this.ed = mwd.getElementById('liveedit_wysiwyg'); - this.nextBTNS = mw.$(".liveedit_wysiwyg_next"); - this.prevBTNS = mw.$(".liveedit_wysiwyg_prev") ; - }, - calc: { - SliderButtonsNeeded: function (parent) { - var t = {left: false, right: false}; - if (parent == null || !parent) { - return; - } - var el = parent.firstElementChild; - if ($(parent).width() > mw.$(el).width()) return t; - var a = mw.$(parent).offset().left + mw.$(parent).width(); - var b = mw.$(el).offset().left + mw.$(el).width(); - if (b > a) { - t.right = true; - } - if ($(el).offset().left < mw.$(parent).offset().left) { - t.left = true; - } - return t; - }, - SliderNormalize: function (parent) { - if (parent === null || !parent) { - return false; - } - var el = parent.firstElementChild; - var a = mw.$(parent).offset().left + mw.$(parent).width(); - var b = mw.$(el).offset().left + mw.$(el).width(); - if (b < a) { - return (a - b); - } - return false; - }, - SliderNext: function (parent, step) { - if (parent === null || !parent) { - return false; - } - var el = parent.firstElementChild; - if ($(parent).width() > mw.$(el).width()) return 0; - var a = mw.$(parent).offset().left + mw.$(parent).width(); - var b = mw.$(el).offset().left + mw.$(el).width(); - step = step || mw.$(parent).width(); - var curr = parseFloat(window.getComputedStyle(el, null).left); - if (a < b) { - if ((b - step) > a) { - return (curr - step); - } - else { - return curr - (b - a); - } - } - else { - return curr - (b - a); - } - }, - SliderPrev: function (parent, step) { - if (parent === null || !parent) { - return false; - } - var el = parent.firstElementChild; - step = step || mw.$(parent).width(); - var curr = parseFloat(window.getComputedStyle(el, null).left); - if (curr < 0) { - if ((curr + step) < 0) { - return (curr + step); - } - else { - return 0; - } - } - else { - return 0; - } - } - }, - - step: function () { - return $(mw.liveedit.toolbar.editor.ed).width(); - }, - denied: false, - buttons: function () { - var b = mw.liveedit.toolbar.editor.calc.SliderButtonsNeeded(mw.liveedit.toolbar.editor.ed); - if (!b) { - return; - } - if (b.left) { - mw.liveedit.toolbar.editor.prevBTNS.addClass('active'); - } - else { - mw.liveedit.toolbar.editor.prevBTNS.removeClass('active'); - } - if (b.right) { - mw.liveedit.toolbar.editor.nextBTNS.addClass('active'); - } - else { - mw.liveedit.toolbar.editor.nextBTNS.removeClass('active'); - } - }, - slideLeft: function () { - if (!mw.liveedit.toolbar.editor.denied) { - mw.liveedit.toolbar.editor.denied = true; - var el = mw.liveedit.toolbar.editor.ed.firstElementChild; - var to = mw.liveedit.toolbar.editor.calc.SliderPrev(mw.liveedit.toolbar.editor.ed, mw.liveedit.toolbar.editor.step()); - $(el).animate({left: to}, function () { - mw.liveedit.toolbar.editor.denied = false; - mw.liveedit.toolbar.editor.buttons(); - }); - } - }, - slideRight: function () { - if (!mw.liveedit.toolbar.editor.denied) { - mw.liveedit.toolbar.editor.denied = true; - var el = mw.liveedit.toolbar.editor.ed.firstElementChild; - - var to = mw.liveedit.toolbar.editor.calc.SliderNext(mw.liveedit.toolbar.editor.ed, mw.liveedit.toolbar.editor.step()); - $(el).animate({left: to}, function () { - mw.liveedit.toolbar.editor.denied = false; - mw.liveedit.toolbar.editor.buttons(); - }); - } - }, - fixConvertible: function (who) { - who = who || ".wysiwyg-convertible"; - who = $(who); - if (who.length > 1) { - $(who).each(function () { - mw.liveedit.toolbar.editor.fixConvertible(this); - }); - return false; - } - else { - var w = $(window).width(); - var w1 = who.offset().left + who.width(); - if (w1 > w) { - who.css("left", -(w1 - w)); - } - else { - who.css("left", 0); - } - } - } - } - -}; diff --git a/update/userfiles/modules/microweber/api/liveedit_elements.js b/update/userfiles/modules/microweber/api/liveedit_elements.js deleted file mode 100644 index 21c965bf..00000000 --- a/update/userfiles/modules/microweber/api/liveedit_elements.js +++ /dev/null @@ -1,432 +0,0 @@ - -/** - * Makes Droppable area - * - * @return Dom Element - */ -mw.dropables = { - prepare: function() { - var dropable = document.createElement('div'); - dropable.className = 'mw_dropable'; - dropable.innerHTML = ''; - document.body.appendChild(dropable); - mw.dropable = mw.$(dropable); - mw.dropable.hide = function(){ - return mw.$(this).addClass('mw_dropable_hidden'); - }; - mw.dropable.show = function(){ - return mw.$(this).removeClass('mw_dropable_hidden'); - }; - mw.dropable.hide() - }, - userInteractionClasses:function(){ - var bgHolders = mwd.querySelectorAll(".edit.background-image-holder, .edit .background-image-holder, .edit[style*='background-image'], .edit [style*='background-image']"); - var noEditModules = mwd.querySelectorAll('.module' + mw.noEditModules.join(',.module')); - var edits = mwd.querySelectorAll('.edit'); - var i = 0, i1 = 0, i2 = 0; - for ( ; i 0 ? v1 : v2; - if(coords.y > v){ - - final.element = all[i]; - } - if(coords.y > v && v1 > 0){ - final.position = 'top'; - } - else if(coords.y > v && v2 > 0){ - final.position = 'bottom'; - } - if(coords.y > v){ - - coords.y = v - } - - } - return final; - }, - display: function(el) { - - el = mw.$(el); - var offset = el.offset(); - var width = el.outerWidth(); - var height = el.outerHeight(); - if (mw.drop_regions.global_drop_is_in_region) { - - } else { - mw.dropable.css({ - top: offset.top + height, - left: offset.left, - width: width - }); - } - }, - set: function(pos, offset, height, width) { - if (pos === 'top') { - - mw.dropable.css({ - top: offset.top - 2, - left: offset.left, - width: width, - height: '' - }); - mw.dropable.data("position", "top"); - mw.dropable.addClass("mw_dropable_arr_up"); - } else if (pos === 'bottom') { - - mw.dropable.css({ - top: offset.top + height + 2, - left: offset.left, - width: width, - height: '' - }); - mw.dropable.data("position", "bottom"); - mw.dropable.removeClass("mw_dropable_arr_up"); - mw.dropable.removeClass("mw_dropable_arr_rigt"); - } else if (pos === 'left') { - mw.dropable.data("position", 'left'); - mw.dropable.css({ - top: offset.top, - height: height, - width: '', - left: offset.left - }); - } else if (pos === 'right') { - mw.dropable.data("position", 'right'); - mw.dropable.addClass("mw_dropable_arr_rigt"); - mw.dropable.css({ - top: offset.top, - left: offset.left + width, - height: height, - width: '' - }); - } - } -}; - - - mw.triggerLiveEditHandlers = { - cacheEnabled: false, - reseSetCache: function(key) { - this[key] = {}; - }, - shouldTrigger:function(key, node) { - if(!this.cacheEnabled) return true; - var countMax = 3; - if(!this[key] || this[key].node !== node) { - this[key] = { - node:node, - count:0 - }; - } - if(this[key].count < countMax) { - this[key].count++; - return true; - } - return false; - }, - _moduleRegister: null, - module: function(targetFrom){ - targetFrom = targetFrom || mw.mm_target; - var module = mw.tools.firstMatchesOnNodeOrParent(targetFrom, '.module:not(.no-settings)'); - //var module = mw.tools.lastMatchesOnNodeOrParent(targetFrom, '.module:not(.no-settings)'); - var triggerTarget = module.__disableModuleTrigger || module; - if(module){ - //if(this.shouldTrigger('_moduleRegister', triggerTarget)) { - mw.trigger("moduleOver", triggerTarget); - //} - } else { - if ( - mw.mm_target.id !== 'mw-handle-item-module' - && !mw.tools.hasParentWithId(mw.mm_target, 'mw-handle-item-module') - && !mw.tools.hasAnyOfClassesOnNodeOrParent(mw.mm_target, ['mwInaccessibleModulesMenu'])) { - /*if(this._moduleRegister !== null) {*/ - mw.trigger("ModuleLeave", mw.mm_target); - /*this._moduleRegister = null; - }*/ - } - } - }, - cloneable: function () { - var cloneable = mw.tools.firstParentOrCurrentWithAnyOfClasses(mw.mm_target, ['cloneable', 'mw-cloneable-control']); - - if(!!cloneable){ - if(mw.tools.hasClass(cloneable, 'mw-cloneable-control')){ - mw.trigger("CloneableOver", [mw.drag._onCloneableControl.__target, true]); - } - else if(mw.tools.hasParentsWithClass(cloneable, 'mw-cloneable-control')){ - mw.trigger("CloneableOver", [mw.drag._onCloneableControl.__target, true]); - } - else{ - mw.trigger("CloneableOver", [cloneable, false]); - } - - } - else{ - if(mw.drag._onCloneableControl && mw.mm_target !== mw.drag._onCloneableControl){ - mw.drag._onCloneableControl.style.display = 'none'; - } - } - }, - _elementRegister:null, - element: function() { - var element = mw.tools.firstParentOrCurrentWithClass(mw.mm_target, 'element'); - if(element && this._elementRegister !== element) { - this._elementRegister = element; - if (!mw.tools.hasClass(element, 'module') - && (mw.tools.parentsOrCurrentOrderMatchOrOnlyFirst(element, ['edit', 'module']) - && mw.tools.parentsOrCurrentOrderMatchOrOnlyFirstOrNone(element, ['allow-drop', 'nodrop']))) { - - mw.trigger("ElementOver", element); - } - else /*if(this._elementRegister !== null)*/{ - //if (!mw.tools.firstParentOrCurrentWithId(mw.mm_target, 'mw_handle_element')) { - this._elementRegister = null; - //mw.trigger("ElementLeave", element); - //} - } - } else if(!element && !mw.tools.firstParentOrCurrentWithId(mw.mm_target, 'mw-handle-item-element')) { - this._elementRegister = null; - mw.trigger("ElementLeave"); - } - if (mw.mm_target === mw.image_resizer && this._elementRegister !== mw.image.currentResizing[0]) { - this._elementRegister = mw.image.currentResizing[0]; - mw.trigger("ElementOver", mw.image.currentResizing[0]); - } - }, - _layoutRegister:null, - layout: function () { - var targetLayout = mw.tools.firstParentOrCurrentWithClass(mw.mm_target, 'mw-layout-root'); - if (targetLayout && this._layoutRegister !== targetLayout) { - this._layoutRegister = targetLayout; - mw.trigger("LayoutOver", targetLayout); - } - }, - _rowRegister:null, - row: function () { - var row = mw.tools.firstParentOrCurrentWithClass(mw.mm_target, 'mw-row'); - - if (row && this._rowRegister !== row) { - this._rowRegister = row; - mw.trigger("RowOver", row); - } else if (this._rowRegister !== null) { - this._rowRegister = null; - mw.trigger("RowLeave", mw.mm_target); - } - }, - col: function () { - if (!mw.drag.columns.resizing) { - var column = mw.tools.firstParentOrCurrentWithClass(mw.mm_target, 'mw-col'); - if (column) { - mw.trigger("ColumnOver", column); - } else { - mw.trigger("ColumnOut", mw.mm_target); - } - } - } - }; - mw.liveEditHandlers = function(event){ - if ( /*mw.emouse.x % 2 === 0 && */ mw.drag.columns.resizing === false ) { - mw.triggerLiveEditHandlers.cloneable(); - mw.triggerLiveEditHandlers.layout(); - mw.triggerLiveEditHandlers.element(); - mw.triggerLiveEditHandlers.module(); - if (mw.drag.columns.resizing === false && mw.tools.hasParentsWithClass(mw.mm_target, 'edit') && (!mw.tools.hasParentsWithClass(mw.mm_target, 'module') || - mw.tools.hasParentsWithClass(mw.mm_target, 'allow-drop'))) { - mw.triggerLiveEditHandlers.row(); - mw.triggerLiveEditHandlers.col(); - } - } - - mw.image._dragTxt(event); - - var bg, bgTarget, bgCanChange; - if(event.target){ - bg = event.target.style && event.target.style.backgroundImage && !mw.tools.hasClass(event.target, 'edit'); - bgTarget = event.target; - if(!bg){ - var _c = 0, bgp = event.target; - while (!bg || bgp === mwd.body){ - bgp = bgp.parentNode; - if(!bgp) { - break; - } - _c++; - bg = bgp.style && bgp.style.backgroundImage && !mw.tools.hasClass(bgp, 'edit'); - bgTarget = bgp; - } - } - } - - if(bg){ - bgCanChange = mw.drag.columns.resizing === false - && (mw.tools.parentsOrCurrentOrderMatchOrOnlyFirst(bgTarget, ['edit','module']) || mw.tools.hasClass(event.target, 'element')); - } - - if (!mw.image.isResizing && mw.image_resizer) { - - if (event.target.nodeName === 'IMG' && (mw.tools.parentsOrCurrentOrderMatchOrOnlyFirst(event.target, ['edit','module'])) && mw.drag.columns.resizing === false) { - mw.image_resizer._show(); - mw.image.resize.resizerSet(event.target, false); - } - else if (bg && bgCanChange) { - mw.image_resizer._show(); - mw.image.resize.resizerSet(bgTarget, false); - } - - else if(mw.tools.hasClass(mw.mm_target, 'mw-image-holder-content')||mw.tools.hasParentsWithClass(mw.mm_target, 'mw-image-holder-content')){ - mw.image_resizer._show(); - mw.image.resize.resizerSet(mw.tools.firstParentWithClass(mw.mm_target, 'mw-image-holder').querySelector('img'), false); - } - else { - if (!event.target.mwImageResizerComponent) { - if(mw.image_resizer){ - mw.image_resizer._hide(); - } - } - } - } -}; - - -mw.liveNodeSettings = { - _working: false, - set: function (type, el) { - if (this._working) return; - this._working = true; - var scope = this; - setTimeout(function () { - scope._working = false; - }, 78); - - if(this[type]){ - mw.sidebarSettingsTabs.set(2); - return this[type](el); - } - }, - element: function (el) { - if (!this.__is_sidebar_opened()) { - return; - } - mw.$('.mw-live-edit-component-options') - .hide() - .filter('#js-live-edit-side-wysiwyg-editor-holder') - .show(); - }, - none: function (el) { - if (!this.__is_sidebar_opened()) { - return; - } - mw.$('.mw-live-edit-component-options').hide(); - }, - module: function (el) { - mw.live_edit.showSettings(undefined, {mode:"sidebar", liveedit:true}) - }, - image: function (el) { - if (!this.__is_sidebar_opened()) { - return; - } - - mw.$("#mw-live-edit-sidebar-image-frame") - .contents() - .find("#mwimagecurrent") - .attr("src", el.src) - mw.$('.mw-live-edit-component-options') - .hide() - .filter('#js-live-edit-image-settings-holder') - .show() - }, - initImage: function () { - var url = mw.external_tool('imageeditor'); - mw.$("#js-live-edit-image-settings-holder").append(''); - }, - icon: function () { - mw.iconSelector.settingsUI(true); - mw.$('.mw-live-edit-component-options') - .hide() - .filter('#js-live-edit-icon-settings-holder') - .show(); - }, - __is_sidebar_opened: function () { - if (mw.liveEditSettings && mw.liveEditSettings.active) { - return true; - } - } -}; - -$(document).ready(function(){ - mw.on('liveEditSettingsReady', function(){ - mw.liveNodeSettings.initImage(); - }); -}); diff --git a/update/userfiles/modules/microweber/api/plus.js b/update/userfiles/modules/microweber/api/plus.js new file mode 100644 index 00000000..f5b3d6a2 --- /dev/null +++ b/update/userfiles/modules/microweber/api/plus.js @@ -0,0 +1,195 @@ +mw.drag = mw.drag || {}; +mw.drag.plus = { + locked: false, + disabled: false, + // mouse_moved: false, + init: function (holder) { + + if(this.disabled) return; + + mw.drag.plusTop = mwd.querySelector('.mw-plus-top'); + mw.drag.plusBottom = mwd.querySelector('.mw-plus-bottom'); + + if(typeof(mw.drag.plusTop) != 'undefined'){ + mw.drag.plusTop.style.top = -9999 + 'px'; + } + if(typeof(mw.drag.plusBottom) != 'undefined'){ + mw.drag.plusBottom.style.top = -9999 + 'px'; + } + mw.$(holder).on('mousemove touchmove click', function (e) { + + + if (mw.drag.plus.locked === false && mw.isDrag === false) { + if (e.pageY % 2 === 0 && mw.tools.isEditable(e)) { + var node = mw.drag.plus.selectNode(e.target); + + mw.drag.plus.set(node); + mw.$(mwd.body).removeClass('editorKeyup'); + } + } + else { + mw.drag.plusTop.style.top = -9999 + 'px'; + mw.drag.plusBottom.style.top = -9999 + 'px'; + } + }); + mw.$(holder).on('mouseleave', function (e) { + if (mw.drag.plus.locked === false) { + mw.drag.plus.set(undefined); + } + }); + mw.drag.plus.action(); + }, + selectNode: function (target) { + + if(!target || mw.tools.hasAnyOfClassesOnNodeOrParent(target, ['noplus', 'noedit', 'noplus']) || mw.tools.hasClass(target, 'edit')) { + mw.drag.plusTop.style.top = -9999 + 'px'; + mw.drag.plusBottom.style.top = -9999 + 'px'; + return; + } + var comp = mw.tools.firstMatchesOnNodeOrParent(target, ['.module', '.element', 'p', '.mw-empty']); + + if (comp + && mw.tools.parentsOrCurrentOrderMatchOrOnlyFirstOrNone(target, ['regular-mode', 'safe-mode']) + && mw.tools.parentsOrCurrentOrderMatchOrOnlyFirstOrNone(target, ['allow-drop', 'nodrop'])) { + return comp; + } + else { + mw.drag.plusTop.style.top = -9999 + 'px'; + mw.drag.plusBottom.style.top = -9999 + 'px'; + return undefined; + } + }, + set: function (node) { + + setTimeout(function () { + + if (typeof node === 'undefined') { + return; + } + var $node = mw.$(node) + var off = $node.offset(), + toolbar = mwd.querySelector('#live_edit_toolbar'); + var oleft = Math.max(0, off.left - 10); + if(toolbar && off.top < toolbar.offsetHeight){ + off.top = toolbar.offsetHeight + 10; + } + mw.drag.plusTop.style.top = off.top + 'px'; + mw.drag.plusTop.style.left = oleft + ($node.width()/2) + 'px'; + // mw.drag.plusTop.style.display = 'block'; + mw.drag.plusTop.currentNode = node; + mw.drag.plusBottom.style.top = (off.top + node.offsetHeight) + 'px'; + mw.drag.plusBottom.style.left = oleft + ($node.width()/2) + 'px'; + mw.drag.plusBottom.currentNode = node; + mw.tools.removeClass([mw.drag.plusTop, mw.drag.plusBottom], 'active'); + + + }, 100); + + }, + tipPosition: function (node) { + var off = mw.$(node).offset(); + if (off.top > 130) { + if ((off.top + node.offsetHeight) < ($(mwd.body).height() - 130)) { + return 'right-center'; + } + else { + return 'right-bottom'; + } + } + else { + return 'right-top'; + } + }, + action: function () { + var pls = [mw.drag.plusTop, mw.drag.plusBottom]; + mw.$(pls).click(function () { + var other = this === mw.drag.plusTop ? mw.drag.plusBottom : mw.drag.plusTop; + if (!mw.tools.hasClass(this, 'active')) { + mw.tools.addClass(this, 'active'); + mw.tools.removeClass(other, 'active'); + mw.drag.plus.locked = true; + mw.$('.mw-tooltip-insert-module').remove(); + mw.drag.plusActive = this === mw.drag.plusTop ? 'top' : 'bottom'; + var tip = new mw.tooltip({ + content: mwd.getElementById('plus-modules-list').innerHTML, + element: this, + position: mw.drag.plus.tipPosition(this.currentNode), + template: 'mw-tooltip-default mw-tooltip-insert-module', + id: 'mw-plus-tooltip-selector' + }); + mw.tabs({ + nav: tip.querySelectorAll('.mw-ui-btn'), + tabs: tip.querySelectorAll('.module-bubble-tab'), + }); + + mw.$('.mw-ui-searchfield', tip).on('keyup paste', function () { + var resultsLength = mw.drag.plus.search(this.value, mw.$('.module-bubble-tab:visible', tip)[0]); + if (resultsLength === 0) { + mw.$('.module-bubble-tab-not-found-message').html(mw.msg.no_results_for + ': ' + this.value + '').show(); + } + else { + mw.$(".module-bubble-tab-not-found-message").hide(); + } + }); + } + }); + mw.$('#plus-modules-list li').each(function () { + var name = mw.$(this).attr('data-module-name'); + if(name === 'layout'){ + var template = mw.$(this).attr('template'); + mw.$(this).attr('onclick', 'InsertModule("' + name + '", {class:this.className, template:"'+template+'"})'); + } else { + mw.$(this).attr('onclick', 'InsertModule("' + name + '", {class:this.className})'); + } + }); + }, + search: function (val, root) { + var all = root.querySelectorAll('.module_name'), + l = all.length, + i = 0, + val = val.toLowerCase(), + found = 0; + isEmpty = val.replace(/\s+/g, '') == ''; + for (; i < l; i++) { + var text = all[i].textContent.toLowerCase(); + if (text.contains(val) || isEmpty) { + mw.tools.firstParentWithTag(all[i], 'li').style.display = 'list-item'; + if (text.contains(val)) found++; + } + else { + mw.tools.firstParentWithTag(all[i], 'li').style.display = 'none'; + } + } + return found; + } +}; + +InsertModule = function (module, cls) { + var id = 'mwemodule-' + mw.random(), el = '
      ', action; + if (mw.drag.plusActive === 'top') { + action = 'before'; + if(mw.tools.hasClass(mw.drag.plusTop.currentNode, 'allow-drop')) { + action = 'prepend'; + } + } + else if (mw.drag.plusActive === 'bottom') { + action = 'after'; + if(mw.tools.hasClass(mw.drag.plusTop.currentNode, 'allow-drop')) { + action = 'append'; + } + } + mw.$(mw.drag.plusBottom.currentNode)[action](el); + + mw.load_module(module, '#' + id, function () { + mw.wysiwyg.change(document.getElementById(id)); + mw.drag.plus.locked = false; + mw.drag.fixes(); + setTimeout(function () { + mw.drag.fix_placeholders(); + }, 40); + mw.dropable.hide(); + }, cls); + mw.$('.mw-tooltip').hide(); +} + + diff --git a/update/userfiles/modules/microweber/api/state.js b/update/userfiles/modules/microweber/api/state.js deleted file mode 100644 index 69ba20c9..00000000 --- a/update/userfiles/modules/microweber/api/state.js +++ /dev/null @@ -1,207 +0,0 @@ -mw.State = function(options){ - var defaults = { - maxItems: 1000 - }; - this.options = $.extend({}, defaults, (options || {})); - this._state = this.options.state || []; - this._active = null; - this._activeIndex = -1; - - this.hasNext = false; - this.hasPrev = false; - - this.state = function(state){ - if(!state){ - return this._state; - } - this._state = state; - return this; - }; - - - this.active = function(active){ - if(!active){ - return this._active; - } - }; - - this.activeIndex = function(activeIndex){ - if(!activeIndex){ - return this._activeIndex; - } - }; - - this._timeout = null; - this.timeoutRecord = function(item){ - clearTimeout(this._timeout); - this._timeout = setTimeout(function(scope, item){ - scope.record(item); - }, 333, this, item); - }; - - this.recordPack = function () { - - }; - - this.record = function(item){ - if(this._activeIndex>-1) { - var i = 0; - while ( i < this._activeIndex) { - this._state.shift(); - i++; - } - } - this._state.unshift(item); - if(this._state.length >= this.options.maxItems) { - this._state.splice(-1,1); - } - this._active = null; - this._activeIndex = -1; - this.afterChange(false); - mw.$(this).trigger('stateRecord', [this.eventData()]); - return this; - }; - - this.actionRecord = function(recordGenFunc, action){ - this.record(recordGenFunc()); - action.call(); - this.record(recordGenFunc()); - }; - - this.redo = function(){ - this._activeIndex--; - this._active = this._state[this._activeIndex]; - this.afterChange('stateRedo'); - return this; - }; - - this.undo = function(){ - if(this._activeIndex === -1) { - this._activeIndex = 1; - } - else{ - this._activeIndex++; - } - this._active = this._state[this._activeIndex]; - this.afterChange('stateUndo'); - return this; - }; - - this.eventData = function(){ - return { - hasPrev: this.hasPrev, - hasNext: this.hasNext, - active: this.active(), - activeIndex: this.activeIndex() - }; - }; - this.afterChange = function(action){ - this.hasNext = true; - this.hasPrev = true; - - if(action) { - if(this._activeIndex >= this._state.length) { - this._activeIndex = this._state.length - 1; - this._active = this._state[this._activeIndex]; - } - } - - if(this._activeIndex <= 0) { - this.hasPrev = false; - } - if(this._activeIndex === this._state.length-1 || (this._state.length === 1 && this._state[0].$initial)) { - this.hasNext = false; - } - - if(action){ - - mw.$(this).trigger(action, [this.eventData()]); - } - if(action !== false){ - mw.$(this).trigger('change', [this.eventData()]); - } - return this; - }; - - this.reset = function(){ - this._state = this.options.state || []; - this.afterChange('reset'); - return this; - }; - - this.clear = function(){ - this._state = []; - this.afterChange('clear'); - return this; - }; - - -}; - -(function(){ - mw.liveEditState = new mw.State(); - mw.liveEditState.record({ - value: null, - $initial: true - }); - mw.$liveEditState = mw.$(mw.liveEditState); - - var ui = mw.$('
      '), - undo = mwd.createElement('span'), - redo = mwd.createElement('span'); - undo.className = 'mw-ui-btn mw-ui-btn-medium'; - undo.innerHTML = ''; - redo.className = 'mw-ui-btn mw-ui-btn-medium'; - redo.innerHTML = ''; - - undo.onclick = function(){ - mw.liveEditState.undo(); - }; - redo.onclick = function(){ - mw.liveEditState.redo(); - }; - - ui.append(undo); - ui.append(redo); - - mw.$(document).ready(function(){ - var idata = mw.liveEditState.eventData(); - - mw.$(undo)[!idata.hasNext?'addClass':'removeClass']('disabled'); - mw.$(redo)[!idata.hasPrev?'addClass':'removeClass']('disabled'); - - /*undo.disabled = !idata.hasNext; - redo.disabled = !idata.hasPrev;*/ - - mw.$liveEditState.on('stateRecord', function(e, data){ - mw.$(undo)[!data.hasNext?'addClass':'removeClass']('disabled'); - mw.$(redo)[!data.hasPrev?'addClass':'removeClass']('disabled'); - }); - mw.$liveEditState.on('stateUndo stateRedo', function(e, data){ - if(!data.active || !data.active.target) { - mw.$(undo)[!data.hasNext?'addClass':'removeClass']('disabled'); - mw.$(redo)[!data.hasPrev?'addClass':'removeClass']('disabled'); - return; - } - if(document.body.contains(data.active.target)) { - mw.$(data.active.target).html(data.active.value); - } else{ - if(data.active.target.id) { - mw.$(document.getElementById(data.active.target.id)).html(data.active.value); - } - } - if(data.active.prev) { - mw.$(data.active.prev).html(data.active.prevValue); - } - mw.drag.load_new_modules(); - mw.$(undo)[!data.hasNext?'addClass':'removeClass']('disabled'); - mw.$(redo)[!data.hasPrev?'addClass':'removeClass']('disabled'); - }); - - mw.$('#history_panel_toggle,#history_dd,.mw_editor_undo,.mw_editor_redo').remove(); - mw.$('.wysiwyg-cell-undo-redo').prepend(ui); - }); - -})(); - - diff --git a/update/userfiles/modules/microweber/api/tags.js b/update/userfiles/modules/microweber/api/tags.js new file mode 100644 index 00000000..d440c59f --- /dev/null +++ b/update/userfiles/modules/microweber/api/tags.js @@ -0,0 +1,252 @@ + + +mw.coreIcons = { + category:'mw-icon-category', + page:'mw-icon-page', + home:'mw-icon-home', + shop:'mai-market2', + post:'mai-post' +}; + + +mw.tags = mw.chips = function(options){ + + "use strict"; + + options.element = mw.$(options.element)[0]; + options.size = options.size || 'medium'; + + this.options = options; + this.options.map = this.options.map || { title: 'title', value: 'id', image: 'image', icon: 'icon' }; + this.map = this.options.map; + var scope = this; + /* + data: [ + {title:'Some tag', icon:''}, + {title:'Some tag', icon:'icon', image:'http://some-image/jpg.png'}, + {title:'Some tag', color:'warn'}, + ] + */ + + this.refresh = function(){ + mw.$(scope.options.element).empty(); + this.rend(); + }; + + this.setData = function(data){ + this.options.data = data; + this.refresh(); + }; + this.rend = function(){ + $.each(this.options.data, function(i){ + var data = $.extend({index:i}, this); + scope.options.element.appendChild(scope.tag(data)); + }); + if(this.options.inputField) { + scope.options.element.appendChild(this.addInputField()); + } + }; + + this.addInputField = function () { + this._field = document.createElement('input'); + this._field.className = 'mw-ui-invisible-field mw-ui-field-' + this.options.size; + this._field.onkeydown = function (e) { + if(mw.event.is.enter(e)) { + var val = scope._field.value.trim(); + if(val) { + scope.addTag({ + title: val + }); + } + } + }; + return this._field; + }; + + + + this.dataValue = function(data){ + if(typeof data === 'string'){ + return data; + } + else{ + return data[this.map.value] + } + }; + + this.dataImage = function(data){ + if(data[this.map.image]){ + var img = document.createElement('span'); + img.className = 'mw-ui-btn-img'; + img.style.backgroundImage = 'url('+data.image+')'; + return img; + } + }; + + this.dataTitle = function(data){ + if(typeof data === 'string'){ + return data; + } + else{ + return data[this.map.title] + } + }; + + this.dataIcon = function(data){ + if(typeof data === 'string'){ + return; + } + else{ + return data[this.map.icon] + } + }; + + + this.createImage = function (config) { + var img = this.dataImage(config); + if(img){ + return img; + } + }; + this.createIcon = function (config) { + var ic = this.dataIcon(config); + + if(!ic && config.type){ + ic = mw.coreIcons[config.type]; + + } + var icon; + if(typeof ic === 'string' && ic.indexOf('<') === -1){ + icon = mwd.createElement('i'); + icon.className = ic; + } + else{ + icon = ic; + } + + return mw.$(icon)[0]; + }; + + this.removeTag = function (index) { + var item = this.options.data[index]; + this.options.data.splice(index,1); + this.refresh(); + mw.$(scope).trigger('tagRemoved', [item, this.options.data]); + mw.$(scope).trigger('change', [item, this.options.data]); + }; + + this.addTag = function(data, index){ + index = typeof index === 'number' ? index : this.options.data.length; + this.options.data.splice( index, 0, data ); + this.refresh(); + mw.$(scope).trigger('tagAdded', [data, this.options.data]); + mw.$(scope).trigger('change', [data, this.options.data]); + }; + + this.tag = function (options) { + var config = { + close:true, + tagBtnClass:'mw-ui-btn mw-ui-btn-' + this.options.size + }; + + $.extend(config, options); + + if(this.options.color){ + config.tagBtnClass += ' mw-ui-btn-' + this.options.color; + } + + if(this.options.outline){ + config.tagBtnClass += ' mw-ui-btn-outline'; + } + + if(this.options.rounded){ + config.tagBtnClass += ' mw-ui-btn-rounded'; + } + + + var tag_holder = mwd.createElement('span'); + var tag_close = mwd.createElement('span'); + + tag_close._index = config.index; + tag_holder._index = config.index; + tag_holder._config = config; + tag_holder.dataset.index = config.index; + + tag_holder.className = config.tagBtnClass; + + if(options.image){ + + } + + tag_holder.innerHTML = '' + this.dataTitle(config) + ''; + + if(typeof this.options.disableItem === 'function') { + if(this.options.disableItem(config)){ + tag_holder.className += ' disabled'; + } + } + if(typeof this.options.hideItem === 'function') { + if(this.options.hideItem(config)){ + tag_holder.className += ' hidden'; + } + } + + var icon = this.createIcon(config); + + var image = this.createImage(config); + + if(image){ + mw.$(tag_holder).prepend(image); + } + if(icon){ + mw.$(tag_holder).prepend(icon); + } + + + tag_holder.onclick = function (e) { + if(e.target !== tag_close){ + mw.$(scope).trigger('tagClick', [this._config, this._index, this]) + } + }; + + tag_close.className = 'mw-icon-close'; + if(config.close){ + tag_close.onclick = function () { + scope.removeTag(this._index); + }; + } + tag_holder.appendChild(tag_close); + return tag_holder; + }; + + this.init = function () { + this.rend(); + }; + this.init(); +}; + +mw.treeTags = mw.treeChips = function(options){ + this.options = options; + var scope = this; + + var tagsHolder = options.tagsHolder || mw.$('
      '); + var treeHolder = options.treeHolder || mw.$('
      '); + + var treeSettings = $.extend({}, this.options, {element:treeHolder}); + var tagsSettings = $.extend({}, this.options, {element:tagsHolder, data:this.options.selectedData || []}); + + this.tree = new mw.tree(treeSettings); + + this.tags = new mw.tags(tagsSettings); + + mw.$( this.options.element ).append(tagsHolder); + mw.$( this.options.element ).append(treeHolder); + + mw.$(this.tags).on('tagRemoved', function(event, item){ + scope.tree.unselect(item); + }); + mw.$(this.tree).on('selectionChange', function(event, selectedData){ + scope.tags.setData(selectedData); + }); + +}; diff --git a/update/userfiles/modules/microweber/api/tools.js b/update/userfiles/modules/microweber/api/tools.js index d7412b4c..1a421a0b 100644 --- a/update/userfiles/modules/microweber/api/tools.js +++ b/update/userfiles/modules/microweber/api/tools.js @@ -878,24 +878,7 @@ mw.tools = { return new mw.tools.modal._init(o); }, get: function (selector) { - var el = mw.$(selector), - child_cont = el.find(".mw_modal_container:first"), - parent_cont = el.parents(".mw_modal_container:first"); - if(!el[0]){ - return false; - } - else if(el[0]._dialog){ - return el[0]._dialog; - } - else if (child_cont.length !== 0) { - return child_cont.parent()[0].modal; - } - else if (parent_cont.length !== 0) { - return parent_cont.parent()[0].modal; - } - else { - return false; - } + return mw.dialog.get(selector); }, minimize: function (id) { var doc = mwd; @@ -2311,7 +2294,7 @@ mw.tools = { } - ok.on('keyup', function (e) { + ok.on('keydown', function (e) { if (e.keyCode === 13 || e.keyCode === 32) { callback.call(window); modal.remove(); @@ -5298,6 +5281,9 @@ mw.extradataForm = function (options, data) { content: form, title: data.error }); + mw.$('script', form).each(function() { + eval($(this).text()); + }); if(data.form_data_required) { mw.$(form).on('submit', function (e) { @@ -5520,8 +5506,9 @@ mw.tabAccordion = function (options, accordion) { mw.$(window).on('load resize orientationchange', function () { scope.breakPoint(); }); - } + }; this.init(); -} +}; + diff --git a/update/userfiles/modules/microweber/api/wysiwyg.js b/update/userfiles/modules/microweber/api/wysiwyg.js index 5aad0c35..ace16ef2 100644 --- a/update/userfiles/modules/microweber/api/wysiwyg.js +++ b/update/userfiles/modules/microweber/api/wysiwyg.js @@ -472,15 +472,28 @@ mw.wysiwyg = { }, execCommandFilter: function (a, b, c) { var arr = ['justifyCenter', 'justifyFull', 'justifyLeft', 'justifyRight']; + var align; + var node = window.getSelection().focusNode; + var elementNode = mw.wysiwyg.validateCommonAncestorContainer(node); + console.log(elementNode, mw.wysiwyg.isSafeMode(elementNode)) + if (mw.wysiwyg.isSafeMode(elementNode) && arr.indexOf(a) !== -1) { + align = a.split('justify')[1].toLowerCase(); + if (align === 'full') { + align = 'justify'; + } + elementNode.style.textAlign = align; + mw.wysiwyg.change(elementNode); + return false; + } if (mw.is.firefox && arr.indexOf(a) !== -1) { - var node = window.getSelection().focusNode; - var elementNode = mw.wysiwyg.validateCommonAncestorContainer(node); - if (elementNode.nodeName == 'P') { - var align = a.split('justify')[1].toLocaleString(); - if (align == 'full') { + + if (elementNode.nodeName === 'P') { + align = a.split('justify')[1].toLowerCase(); + if (align === 'full') { align = 'justify'; } - elementNode.style.textAlign = align + elementNode.style.textAlign = align; + mw.wysiwyg.change(elementNode) return false; } } diff --git a/update/userfiles/modules/microweber/api/wysiwygmdab.js b/update/userfiles/modules/microweber/api/wysiwygmdab.js deleted file mode 100644 index c52a57de..00000000 --- a/update/userfiles/modules/microweber/api/wysiwygmdab.js +++ /dev/null @@ -1,224 +0,0 @@ - -var canDestroy = function (event) { - var target = event.target; - return !mw.tools.hasAnyOfClassesOnNodeOrParent(event, ['safe-element']) - && mw.tools.parentsOrCurrentOrderMatchOrOnlyFirstOrNone(target, ['allow-drop', 'nodrop']); -}; - -mw.wysiwyg._manageDeleteAndBackspaceInSafeMode = { - emptyNode: function (event, node, sel, range) { - if(!canDestroy(node)) { - return; - } - var todelete = node; - if(mw.tools.hasAnyOfClasses(node.parentNode, ['text', 'title'])){ - todelete = node.parentNode; - } - var transfer, transferPosition; - if (mw.event.is.delete(event)) { - transfer = todelete.nextElementSibling; - transferPosition = 'start'; - } else { - transfer = todelete.previousElementSibling; - transferPosition = 'end'; - } - var parent = todelete.parentNode; - mw.liveEditState.record({ - target: parent, - value: parent.innerHTML - }); - $(todelete).remove(); - if(transfer && mw.tools.isEditable(transfer)) { - setTimeout(function () { - mw.wysiwyg.cursorToElement(transfer, transferPosition); - }); - } - mw.liveEditState.record({ - target: parent, - value: parent.innerHTML - }); - }, - nodeBoundaries: function (event, node, sel, range) { - var isStart = range.startOffset === 0 || !((sel.anchorNode.data || '').substring(0, range.startOffset).replace(/\s/g, '')); - var curr, content; - if(mw.event.is.backSpace(event) && isStart && range.collapsed){ // is at the beginning - curr = node; - if(mw.tools.hasAnyOfClasses(node.parentNode, ['text', 'title'])){ - curr = node.parentNode; - } - var prev = curr.previousElementSibling; - if(prev && prev.nodeName === node.nodeName && canDestroy(node)) { - content = node.innerHTML; - mw.wysiwyg.cursorToElement(prev, 'end'); - prev.appendChild(range.createContextualFragment(content)); - $(curr).remove(); - } - } else if(mw.event.is.delete(event) - && range.collapsed - && range.startOffset === sel.anchorNode.data.replace(/\s*$/,'').length // is at the end - && canDestroy(node)){ - curr = node; - if(mw.tools.hasAnyOfClasses(node.parentNode, ['text', 'title'])){ - curr = node.parentNode; - } - var next = curr.nextElementSibling, deleteParent; - if(mw.tools.hasAnyOfClasses(next, ['text', 'title'])){ - next = next.firstElementChild; - deleteParent = true; - } - if(next && next.nodeName === curr.nodeName) { - content = next.innerHTML; - setTimeout(function(){ - var parent = deleteParent ? next.parentNode.parentNode : next.parentNode; - mw.liveEditState.actionRecord(function() { - return { - target: parent, - value: parent.innerHTML - }; - }, function () { - curr.append(range.createContextualFragment(content)); - } - ); - }); - } - } - } -}; -mw.wysiwyg.manageDeleteAndBackspaceInSafeMode = function (event, sel) { - var node = mw.wysiwyg.validateCommonAncestorContainer(sel.focusNode); - var range = sel.getRangeAt(0); - if(!node.innerText.replace(/\s/gi, '')){ - mw.wysiwyg._manageDeleteAndBackspaceInSafeMode.emptyNode(event, node, sel, range); - return false; - } - mw.wysiwyg._manageDeleteAndBackspaceInSafeMode.nodeBoundaries(event, node, sel, range); - return true; -}; -mw.wysiwyg.manageDeleteAndBackspace = function (event, sel) { - - if (mw.event.is.delete(event) || mw.event.is.backSpace(event)) { - if(!sel.rangeCount) return; - var r = sel.getRangeAt(0); - var isSafe = mw.wysiwyg.isSafeMode(); - - if(isSafe) { - return mw.wysiwyg.manageDeleteAndBackspaceInSafeMode(event, sel); - } - - if (!mw.settings.liveEdit) { - return true; - } - var nextNode = null, nextchar, nextnextchar, nextel; - - - if (mw.event.is.delete(event)) { - nextchar = sel.focusNode.textContent.charAt(sel.focusOffset); - nextnextchar = sel.focusNode.textContent.charAt(sel.focusOffset + 1); - nextel = sel.focusNode.nextSibling || sel.focusNode.nextElementSibling; - - } else { - nextchar = sel.focusNode.textContent.charAt(sel.focusOffset - 1); - nextnextchar = sel.focusNode.textContent.charAt(sel.focusOffset - 2); - nextel = sel.focusNode.previouSibling || sel.focusNode.previousElementSibling; - - } - - - if ((nextchar == ' ' || /\r|\n/.exec(nextchar) !== null) && sel.focusNode.nodeType === 3 && !nextnextchar) { - event.preventDefault(); - return false; - } - - - if (nextnextchar == '') { - - - if (nextchar.replace(/\s/g, '') == '' && r.collapsed) { - - if (nextel && !mw.ea.helpers.isBlockLevel(nextel) && ( typeof nextel.className === 'undefined' || !nextel.className.trim())) { - return true; - } - else if (nextel && nextel.nodeName !== 'BR') { - if (sel.focusNode.nodeName === 'P') { - if (event.keyCode === 46) { - if (sel.focusNode.nextElementSibling.nodeName === 'P') { - return true; - } - } - if (event.keyCode === 8) { - - if (sel.focusNode.previousElementSibling.nodeName === 'P') { - return true; - } - } - } - event.preventDefault(); - return false; - } - - } - else if ((focus.previousElementSibling === null && rootfocus.previousElementSibling === null) && mw.tools.hasAnyOfClassesOnNodeOrParent(rootfocus, ['nodrop', 'allow-drop'])) { - return false; - } - else { - - } - } - if (nextchar == '') { - - - //continue check nodes - if (mw.event.is.delete(event)) { - nextNode = mw.wysiwyg.merge.getNext(sel.focusNode); - } - if (mw.event.is.backSpace(event)) { - nextNode = mw.wysiwyg.merge.getPrev(sel.focusNode); - } - if (mw.wysiwyg.merge.alwaysMergeable(nextNode)) { - return true; - } - - var nonbr = mw.wysiwyg.merge.isInNonbreakable(nextNode) - if (nonbr) { - event.preventDefault(); - return false; - } - - if (nextNode.nodeValue == '') { - - } - if (nextNode !== null && mw.wysiwyg.merge.isMergeable(nextNode)) { - if (mw.event.is.delete(event)) { - mw.wysiwyg.merge.manageBreakables(sel.focusNode, nextNode, 'next', event) - } - else { - mw.wysiwyg.merge.manageBreakables(sel.focusNode, nextNode, 'prev', event) - } - } - else { - event.preventDefault() - } - // } - if (nextNode === null) { - nextNode = sel.focusNode.parentNode.nextSibling; - if (!mw.wysiwyg.merge.isMergeable(nextNode)) { - event.preventDefault(); - } - if (mw.event.is.delete(event)) { - mw.wysiwyg.merge.manageBreakables(sel.focusNode, nextNode, 'next', event) - } - else { - mw.wysiwyg.merge.manageBreakables(sel.focusNode, nextNode, 'prev', event) - } - - } - - } else { - - } - - - } - - return true; -}; diff --git a/update/userfiles/modules/microweber/css/admin.css b/update/userfiles/modules/microweber/css/admin.css deleted file mode 100644 index 30e94cdb..00000000 --- a/update/userfiles/modules/microweber/css/admin.css +++ /dev/null @@ -1,7595 +0,0 @@ -/*@import url(//fonts.googleapis.com/css?family=Open+Sans:800,700,600,500,400,300&subset=latin,cyrillic-ext,greek-ext,greek,cyrillic,latin-ext);*/ -@import "navs.css"; -@import "mai.css"; - -@font-face { - font-family: 'mwadmin'; - src: url('fonts/fontadmin.ttf?mwv=9') format('truetype'); - font-weight: normal; - font-style: normal; -} - -[class*='mai-'] { - position: relative; -} - -* { - margin: 0; - padding: 0; -} - -*, *:before, *:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -::-ms-clear { - display: none; -} - -::-ms-reveal { - display: none; -} - -/************************* - Main Styles -**************************/ - -html { - font-size: 12px; -} - -html, body { - min-height: 100%; - height: 100%; -} - -body.is_admin { - background: #f5f5f5; -} - - textarea, input { - font-family: 'Open Sans', sans-serif; - font-size: 13px; - line-height: 1.3; -} - -body { - font-family: 'Open Sans', sans-serif; - font-size: 12px; - line-height: 1.3; -} - -body, a { - color: #3B3B3B; -} - -a { - text-decoration: none; -} - -img { - border: none; -} - -h1, h2, h3, h4, h5, h6 { - font-weight: normal; - margin-top: 10px; - margin-bottom: 5px; -} - -h1 { - font-size: 200%; -} - -h2 { - font-size: 170%; - line-height: 170%; -} - -h3 { - font-size: 140%; - line-height: 140%; -} - -h4 { - font-size: 130%; - line-height: 130%; -} - -h5 { - font-size: 120%; -} - -h6 { - font-size: 110%; -} - -hr, .hr { - height: 1px; - border: none; - position: relative; - clear: both; - display: block; - background: #E5E5E5; - overflow: hidden; - margin: 22px 0; -} - -.hr1 { - margin: 12px 0; -} - -.hr2 { - margin: 32px 0; -} - -h2 > [class*="mw-icon-"]:first-child { - margin-right: 10px; - vertical-align: baseline; - top: 3px; -} - -h3 > [class*="mw-icon-"]:first-child { - margin-right: 10px; - vertical-align: baseline; - top: 0; -} - -/************************************ - Primary Admin Grid -*************************************/ - -.mw-simple-rotator { - /*max-width: 1200px;*/ -} - -#mw-edit-page-editor-holder { - border: 1px solid #DADADA; - border-radius: 3px; - background: white; -} - -.mw-iframe-editor { - min-height: 200px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -.fixed-side-column-container { - position: relative; - z-index: 0; -} - -.mw-simple-rotator { - overflow: hidden; - position: relative; - clear: both; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -.fixed-side-column { - position: fixed; - top: 66px; - height: 100%; - background-color: #F5F5F5; -} - -.fixed-side-column { - min-width: 210px; - max-width: 300px; - width: 300px; -} - -.admin-section-container:after { - content: "."; - display: block; - clear: both; - visibility: hidden; - line-height: 0; - height: 0; -} - -#file_module_live_edit_adm .mw-module-admin-wrap { - padding-left: 0; -} - -.tree-show-hide-nav { - text-align: center; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 15px 15px 16px 15px; -} - -#pages_tree_toolbar [class*='mw-icon-'] { - font-size: 12px; - display: block; - visibility: hidden; - position: absolute; - height: 21px; - width: 20px; - top: 7px; - padding: 3px; - text-align: center; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - border: 1px solid transparent; - color: #3B3B3B; - opacity: 0.5; -} - -#pages_tree_toolbar a:hover > [class*='mw-icon-'] { - visibility: visible; -} - -#pages_tree_toolbar .mw-icon-pen { - right: 30px; -} - -#pages_tree_toolbar .mw-icon-bin { - right: 10px; - font-size: 15px; - padding: 2px; -} - -#pages_tree_toolbar [class*='mw-icon-']:hover { - background-color: #191919; - opacity: 1; - color: white; -} - -#pages_tree_toolbar .mw-icon-bin:hover { - background-color: #999999; -} - -.mw-tree .module a:hover, .mw-tree li.active-bg > a { - color: #0086db; -} - -/************************************ - Login -*************************************/ - -#mw-login { - width: 345px; - max-width: 100%; - margin: auto; - padding-top: 100px; - text-align: center; -} - -#admin_login .mw-ui-field-holder:first-child { - padding-top: 0; -} - -#admin_login .mw-ui-field-holder:last-child { - padding-bottom: 0; -} - -#mw-login .mw-ui-box { - background-color: #fff; - min-width: 300px; - text-align: left; - box-shadow: 0 0 12px -10px #000; - -webkit-box-shadow: 0 0 12px -7px #000; -} - -#mw-login .mw-icon-back { - font-size: 20px; - position: relative; - top: -1px; - margin-right: 5px; -} - -#login-logo .mw-icon-mw { - font-size: 60px; - float: left; -} - -#login-logo { - display: inline-block; - position: relative; - padding-bottom: 30px; - color: #444444; - text-decoration: none; - width: 290px; - max-width: 100%; - text-align: center; -} - -#login-logo img { - max-width: 100%; -} - -.mw-sign-version { - position: absolute; - bottom: 10px; - right: 0; - font-size: 11px; -} - -#admin_login { - padding: 25px; -} - -#admin_login .mw-ui-field-big { - width: 100%; - font-size: 16px; -} - -#admin_login .mw-ui-btn-big { - font-size: 16px; -} - -#login_foot { - padding: 20px; -} - -#lang_selector { - background: #fff; - border-color: #dadada; - top: 2px; - -} - -#admin_login .mw-ui-inline-list { - margin-top: 8px; -} - -/************************************ - Categories Trees -*************************************/ - -.mw-tree * { - margin: 0; - padding: 0; -} - -.mw-tree .module li { - list-style: none; - clear: both; - position: relative; -} - -.mw-tree .module li:before { - content: ''; - display: block; - padding-left: 15px; -} - -.mw-tree .module a { - color: #212121; - padding: 0; - display: block; - position: relative; - padding-top: 9px; - padding-bottom: 9px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - outline: none; - background-repeat: no-repeat; - height: 35px; -} - -.mw-tree .module a:before, .mw-tree label:before { - font-family: Microweber; - color: #999; - font-size: 19px; - display: inline-block; - position: absolute; - left: 35px; - top: 5px; - content: 'q'; - opacity: 0.777; -} - -.mw-tree .module a.active-bg:before { - color: #0086db; - opacity: 1; -} - -.mw-tree .module a:hover:before, .mw-tree .module a:focus:before, .mw-tree .module a.active:before { - opacity: 1; -} - -.mw-tree a.pages_trash_link:before { - content: 'r'; -} - -.mw-tree label { - color: #212121; - padding: 0; - display: block; - position: relative; - padding-top: 7px; - padding-bottom: 7px; - padding: 9px 2px 6px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - outline: none; -} - -.mw-tree label.highlighted, .mw-tree label.active { - background-color: #F5F5F5; -} - -.mw-tree .category_element > a:before, .mw-tree .category_element > label:before { - content: 'c'; - text-shadow: 0 0 1px #000; -} - -.mw-tree .pages_tree_item > a:before, .mw-tree .pages_tree_item > label:before { - font-family: admin; - content: '\0057'; - font-size: 17px; -} - -.mw-tree .is_blog > a:before, .mw-tree .is_blog > label:before { - content: 'B'; - font-family: inherit; - font-size: 20px; - top: 3px; - color: #2b2b2b; - font-weight: 600; - z-index: 1; -} - -.mw-tree .category_element.active-bg > a:before, .mw-tree .category_element.active-bg > label:before { - color: #0e80e5; - text-shadow: none; -} - -.mw-tree .is_shop > a:before, .mw-tree .is_shop > label:before { - content: '\0053'; - font-family: admin; -} - -#mw_edit_page_left .is_home > a:before, .mw-tree .is_home > a:before, .mw-tree .is_home > label:before { - content: "\0070"; -} - -#mw_edit_page_left .is_home > a:hover:before { - visibility: hidden; -} - -.mw-tree .module a:after, .mw-tree .module label:after { - content: "."; - display: block; - clear: both; - visibility: hidden; - line-height: 0; - height: 0; -} - -.mw-tree li > ul { - display: none; -} - -.mw-tree li.active > ul { - display: block; -} - -.pages_tree_link_text { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - margin-left: 3px; - resize: none; - display: inline-block; - max-width: -webkit-calc(100% - 40px); - max-width: calc(100% - 40px); -} - -.mw-tree label .pages_tree_link_text { - overflow: visible; - max-width: none; -} - -.pages-nav a:hover > .pages_tree_link_text, .pages-nav a:focus > .pages_tree_link_text { - max-width: 68%; -} - -#mw_edit_page_left .mw-tree .module a { - height: 18px; -} - -#mw_edit_page_left .mw_ed_tree_show_posts, #mw_edit_page_left .mw_ed_tree_content, #mw_edit_page_left .mw_tree_sub_page, #mw_edit_page_left .mw_del_tree_content { - display: none; -} - -#mw_edit_page_left a:hover .mw_ed_tree_show_posts, #mw_edit_page_left a:hover .mw_ed_tree_content, #mw_edit_page_left a:hover .mw_tree_sub_page, #mw_edit_page_left a:hover .mw_del_tree_content { - display: block; -} - -.mw-tree a.content-unpublished { - opacity: 0.5; -} - -.manage-post-item.content-unpublished, .manage-post-item.content-unpublished * { - color: #C6C6C6; -} - -.manage-post-item.content-unpublished .manage-post-image { - opacity: 0.5; -} - -.publish-btn { - visibility: hidden; -} - -.post-un-publish, .post-un-publish .mw-ui-btn { - position: absolute; - bottom: 3px; - right: 3px; - width: 100px; - color: white; - background-color: #ef924d; -} - -.post-un-publish:hover .publish-btn { - visibility: visible; -} - -html.mw_pages, html.mw_pages body { - overflow: hidden; -} - -.mw_del_tree_content { - background: url(../img/admin_tree_icons.png) no-repeat -45px 6px; -} - -.mw_ed_tree_content { - background: url(../img/admin_tree_icons.png) no-repeat -26px 6px; -} - -.mw_toggle_tree { - left: -30px; - position: absolute; - top: 10px; - display: block; - width: 14px; - height: 14px; - border-radius: 30px; - background: #999; -} - -.mw_toggle_tree:before, -.mw_toggle_tree:after { - content: ''; - width: 6px; - height: 2px; - display: block; - background: white; - position: absolute; - top: 50%; - left: 50%; - margin: -1px 0 0 -3px; - transition: all .3s; -} - -.mw_toggle_tree:before { - transform: rotate(90deg); -} - -label .mw_toggle_tree { - left: 55px; - top: 9px; -} - -.mw-tree .mw-ui-check span span + span, -.mw-tree .mw-ui-check label span + span { - margin-left: 30px; - position: relative; -} - -.mw-tree li li .mw-ui-check span span + span, -.mw-tree li li .mw-ui-check label span + span { - margin-left: 17px; -} - -.has-children > .mw-ui-check .pages_tree_link_text span + span { - margin-left: 47px; -} - -.mw-tree .mw-ui-check input:checked + span + span { - font-weight: bold; -} - -.mw_toggle_tree:hover, .mw-tree li.active > a > .mw_toggle_tree, .mw-tree li.active > label > .mw_toggle_tree { - opacity: 1; -} - -a.depth-1 .mw_toggle_tree { - left: 13px; -} - -.mw-tree li.active > a .mw_toggle_tree:before, .mw-tree li.active > label .mw_toggle_tree:before { - transform: rotate(0); -} - -.mw-tree li.active > a .mw_toggle_tree, .mw-tree li.active > label .mw_toggle_tree { - background: rgba(0, 134, 219, 1); - -} - -.mw_ed_tree_show_posts { - background: url(../img/admin_tree_icons.png) no-repeat 2px 6px; -} - -.mw_ed_tree_show_posts, .mw_ed_tree_content, .mw_tree_sub_page, .mw_del_tree_content { - opacity: 0.3; - display: block; - cursor: pointer; - float: right; - width: 19px; - height: 19px; - text-indent: -9999px; - visibility: hidden; - margin: 0 1px; -} - -.mw_ed_tree_show_posts:hover, .mw_tree_sub_page:hover, .mw_ed_tree_content:hover, .mw_del_tree_content:hover { - opacity: 1 -} - -.mw_ed_tree_publish { - display: block; - float: right; - width: 16px; - height: 16px; - text-indent: -9999px; - background: url(../img/sidebar_published_status.png) no-repeat; - margin: 2px 2px 0; -} - -.mw_ed_tree_publish:hover { - background-position: bottom; -} - -a:hover .mw_del_tree_content, a:hover .mw_ed_tree_show_posts, a:hover .mw_tree_sub_page, a:hover .mw_ed_tree_content { - visibility: visible; -} - -.mw_tree_sub_page { - background-position: -1143px -1px; -} - -#mw_edit_pages .mw_tree_sub_page { - float: right; -} - -/************************************ - Scrollbar styles -*************************************/ - -.slimScrollBar { - max-height: 80px; -} - -.slimScrollRail { - display: block !important; - background: none !important; -} - -.slimScrollBar:hover, .slimScrollRail .slimScrollBar, .slimScrollBar:active, .scrollMouseDown { - width: 8px !important; - opacity: 0.4 !important; -} - -/************************************ - Main Menu -*************************************/ - -.main-bar-column{ - background: #2b2b2b; -} - -#main-bar { - width: 230px; - height: 100%; - background: #2b2b2b; - color: white; - position: fixed; - top: 0; - left: 0; - z-index: 100; -} - -#main-bar-mw-icon { - display: block; - overflow: hidden; - text-align: center; - padding-top: 16px; - height: 66px; - color: #0091EB; - text-decoration: none -} - -#main-bar-mw-icon .mw-icon-microweber { - font-size: 170px; - line-height: 0; - position: relative; - top: -8px; -} - -#main-bar-mw-icon .mai-logo { - font-size: 30px; -} - -#main-bar-mw-icon .admin-logo { - max-width: 165px; -} - -#main-bar-mw-icon .mw-icon-mw { - font-size: 38px; - color: #999999; -} - -#main-bar-mw-icon:hover strong, #main-bar-mw-icon:hover .mw-icon-mw, #main-bar-mw-icon:focus .mw-icon-mw, #main-bar-mw-icon.active .mw-icon-mw { - color: white; -} - -#main-bar-mw-icon:hover strong, #main-bar-mw-icon:focus strong, #main-bar-mw-icon.active strong { - visibility: visible; -} - -#main-bar-mw-icon svg { - height: 20px; - width: 75px; - display: block; - margin: auto; - position: relative; - top: 0; - visibility: hidden; - display: none; -} - -#main-bar-mw-icon:hover svg { - visibility: visible; -} - -#main-bar-mw-icon .mwpolycolor { - fill: #999999; - fill: #ffffff; -} - -#mw-admin-main-menu li { - list-style: none; -} - -#mw-admin-main-menu li a { - list-style: none; - position: relative; - display: block; -} - -#mw-admin-main-menu li a { - color: #999; - font-size: 13px; - display: block; - -} - -#mw-admin-main-menu > li > a { - height: 64px; - line-height: 64px; - padding: 0 0 0 28px; -} - -#mw-admin-main-menu > li > a:after { - position: absolute; - display: block; - content: '\006a'; - font-family: admin; - top: 0px; - right: 10px; - font-size: 9px; - transition: all .3s; - transform: rotate(-90deg); -} - -#mw-admin-main-menu > li.active > a:after { - transform: rotate(0); -} - -#mw-admin-main-menu li li a { - height: 50px; - line-height: 50px; - padding-top: 0; - padding-bottom: 0; - padding-left: 50px; - background: #333; -} - -#mw-admin-main-menu > li > ul > li > a { - color: #999; - display: block; - -} - -#mw-admin-main-menu li li .relative .mw-notification-count { - /*right: auto;*/ - top: 18px; - /*left: -22px;*/ -} - -#mw-admin-main-menu > li #main-nav-live { - margin-top: 10px; - padding-top: 0; -} - -#main-nav-live:hover, #main-nav-live:focus { - background: #0086db; -} - -#mw-admin-main-menu a strong, #main-bar-mw-icon strong { - display: inline-block; - position: relative; - padding-left: 5px; - font-weight: normal; -} - -#main-bar-mw-icon strong { - color: #fff; -} - -#mw-admin-main-menu li ul { - display: none; -} - -#mw-admin-main-menu > li.active:first-child > a { - border-top-width: 0; -} - -#mw-admin-main-menu > li:first-child > a { - /*border-top: 1px solid #2f2f2f;*/ - border-top: 0; -} - -#mw-admin-main-menu a { - border-bottom: 1px solid #383838 -} - -#mw-admin-main-menu .active a:hover, -#mw-admin-main-menu .active a:active, -#mw-admin-main-menu .active a:focus, -#mw-admin-main-menu .active a { - border-bottom: 1px solid #555555; - color: #0086db -} - -#mw-admin-main-menu .active li a:hover, -#mw-admin-main-menu .active-parent > a:hover, -#mw-admin-main-menu .active-parent a:hover, -#mw-admin-main-menu .active-parent a { - color: #0086db; - border-bottom: 1px solid #555555; - /*background: white;*/ - background: #f5f5f5; - -} - -#mw-admin-main-menu a [class*='mai-'], -#mw-admin-main-menu a [class*='mw-icon-'] { - font-size: 17px; - width: 35px; - top: -1px; - position: relative; - -} - -#mw-admin-main-menu li strong { - top: -5px; - -} - -#mw-admin-main-menu li li a strong { - top: 0px; - -} - -#mw-admin-main-menu li li a [class*='mai-'], -#mw-admin-main-menu li li a [class*='mw-icon-'] { - font-size: 14px; - width: 25px; - top: 0px; - float: left; -} - -#mw-admin-main-menu a .mw-icon-menu { - font-size: 30px; -} - -#mw-admin-main-menu > li > a:hover { - background-color: #555; - color: white; -} - -#mw-admin-main-menu li.active-parent a, -#mw-admin-main-menu li.active a { - background: #555555; - color: white; - - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -#mw-admin-main-menu li a:hover { - /*background: white;*/ - background: #f5f5f5; - color: #3B3B3B -} - -#mw-admin-main-menu li.active > a, -#mw-admin-main-menu li.active:hover > a { - - border-left: solid 10px #0086db; - background: #f5f5f5; - color: #3B3B3B -} - -#mw-admin-main-menu li.active > a { - padding-left: 18px; - /*border-bottom: 1px solid #ebebeb;*/ - font-weight: bold; - color: #0086db -} - -#mw-admin-main-menu li.active > a strong { - font-weight: bold; - color: #0086db -} - -#mw-admin-main-menu li li.active > a { - padding-left: 40px; -} - -#mw-admin-main-menu li.active:hover > a span, -#mw-admin-main-menu li.active > a span { - color: #0086db -} - -#mw-admin-main-menu li.active ul, #mw-admin-main-menu li.active-parent ul, #mw-admin-main-menu li#mw-admin-main-menu-bottom ul { - display: block; -} - -#mw-admin-main-menu > li > a:hover, #mw-admin-main-menu > li > a:focus { - color: #0086db; -} - -#mw-admin-main-menu > li.active a:hover, #mw-admin-main-menu > li.active a:focus { - color: #2C82DD; -} - -#mw-admin-main-menu > li > a:active { - box-shadow: inset 0 0 6px -3px #000; -} - -#mw-admin-main-menu > li > a#main-nav-live:active { - box-shadow: inset 0 0 6px -2px #000; -} - -#mw-admin-main-menu-back, #mw-admin-main-menu-toggle { - display: none; -} - -#mw-admin-main-menu li li.active > a:after { - display: block; - position: absolute; - right: -5px; - top: 8px; - overflow: hidden; - width: 10px; - height: 10px; - background: #F5F5F5; - content: ""; - transform: rotate(45deg); - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -o-transform: rotate(45deg); - -ms-transform: rotate(45deg); -} - -#mw-admin-main-menu li#mw-admin-main-menu-bottom li.active > a:after { - display: none; -} - -#mw-admin-main-menu li.active strong:after { - margin-top: -1px; -} - -.mw-admin-main-menu-active { - display: block; - width: 10px; - height: 10px; - position: absolute; - right: -5px; -} - -.mw-admin-main-menu-active:after { - display: block; - overflow: hidden; - width: 10px; - height: 10px; - background: white; - content: ""; - transform: rotate(45deg); - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -o-transform: rotate(45deg); - -ms-transform: rotate(45deg); -} - -.mw-admin-main-menu-mini { - position: absolute; - overflow: hidden; /* Chrome 'jumping' bug on rtl */ - right: 17px; - top: 17px; - height: 16px; - min-width: 16px; - line-height: 16px; - border-radius: 2px; - padding: 0 5px; - background: #f5f5f5; - background: -moz-linear-gradient(top, #f5f5f5 0%, #e6e6e6 100%); - background: -webkit-linear-gradient(top, #f5f5f5 0%, #e6e6e6 100%); - background: linear-gradient(to bottom, #f5f5f5 0%, #e6e6e6 100%); - font-size: 11px; - color: #2b2b2b; -} - -#mw-admin-main-menu .mw-admin-main-menu-mini { - font-size: 0; - border-radius: 20px; - transition: all .2s; - background: #999; - line-height: 16px; - height: 16px; -} - -#mw-admin-main-menu .active-parent li.active .mw-admin-main-menu-mini { - /*border: 1px solid #0086db;*/ - background: #0086db; - color: #fff; - -} - -#mw-admin-main-menu .mw-admin-main-menu-mini:after { - - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - - transition: all .2s; - display: block; - text-align: center; - color: #555555; - /* - font-size: 16px; - font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; - content: '+'; - - */ - font-style: normal; - font-variant: normal; - font-weight: 600; - line-height: 17px; - font-size: 12px; - content: '\002b'; - font-family: Microweber !important; -} - -#mw-admin-main-menu li.active .mw-admin-main-menu-mini:after { - color: #f5f5f5; -} - -#mw-admin-main-menu a:hover .mw-admin-main-menu-mini:after { - width: 0px; - opacity: 0; - transform: translateX(-20px); -} - -#mw-admin-main-menu a:hover .mw-admin-main-menu-mini { - font-size: 11px; - border-radius: 2px; - background: #f5f5f5; - background: -moz-linear-gradient(top, #f5f5f5 0%, #e6e6e6 100%); - background: -webkit-linear-gradient(top, #f5f5f5 0%, #e6e6e6 100%); - background: linear-gradient(to bottom, #f5f5f5 0%, #e6e6e6 100%); -} - -#mw-admin-main-menu a:hover .mw-admin-main-menu-mini:after { - font-size: 0; -} - -.mw-admin-main-menu-mini:hover, #mw-admin-main-menu a:hover .mw-admin-main-menu-mini:hover { - background: #0086db; - background: -moz-linear-gradient(top, #0086db 0%, #007ac7 100%); - background: -webkit-linear-gradient(top, #0086db 0%, #007ac7 100%); - background: linear-gradient(to bottom, #0086db 0%, #007ac7 100%); - color: white !important; -} - -.main-bar-profile-img { - display: inline-block; - width: 30px; - height: 30px; - background-repeat: no-repeat; - background-position: center top; - background-size: cover; - margin-top: 5px; -} - -#main-bar-profile-icon { - font-size: 42px; -} - -#main-bar-user-menu-link { - display: block; - position: relative; - padding: 10px 0; - color: #999; -} - -#main-bar-user-menu-link:hover, #main-bar-user-menu-link:focus { - color: white; -} - -#main-bar-user-menu-tooltip .mw-ui-btn-vertical-nav { - display: block; - border-radius: 3px; -} - -#main-bar-user-menu-tooltip .mw-ui-btn-vertical-nav a { - text-align: left; - border-width: 0 0 1px 0; -} - -#main-bar-user-menu-tooltip .mw-ui-btn-vertical-nav a:last-child { - border-bottom-width: 0; -} - -#main-bar-user-menu-tooltip .mw-tooltip-content { - padding: 0; - width: 115px; - display: block; -} - -.bottom-user-menu { - background: black; -} - -.bottom-user-menu li { - list-style: none; -} - -.bottom-user-menu li a { - color: #999; - display: block; - font-size: 13px; - padding: 10px 0; - text-align: center; -} - -.bottom-user-menu li a:hover { - color: white; -} - -.bottom-user-menu a [class*="mw-icon-"] { - font-size: 24px; -} - -.bottom-user-menu a span { - display: block; -} - -.bottom-user-menu a span + span { - visibility: hidden; -} - -.bottom-user-menu a:hover span + span { - visibility: visible; -} - -/**/ -#create-content-menu { - display: none; -} - -.create-content-menu { - width: 175px; -} - -#create-content-btn { - border-color: transparent; -} - -#create-content-btn .mai-cd { - font-size: 8px; - margin-left: 5px; -} - -#create-content-btn .mai-plus { - color: #0082d5; - font-size: 14px; - margin-right: 12px; - position: relative; -} - -.mw-tooltip-action.mw-tooltip-dark .mw-tooltip-content .create-content-menu a { - background-color: rgba(0, 134, 219, 1); -} - -.mw-tooltip-action.mw-tooltip-dark .mw-tooltip-arrow:after { - background-color: rgba(0, 134, 219, 1); -} - -.mw-tooltip-action.mw-tooltip-dark .mw-tooltip-content { - background-color: rgba(0, 145, 235, 1); -} - -#pin-sidebar { - position: absolute; - color: #CCCCCC; - font-size: 19px; - right: 8px; - top: 2px; - cursor: pointer; -} - -#pin-sidebar.active { - color: #4D4D4D; -} - -.create-content-menu a { - display: block; - float: left; - text-align: center; - width: 47%; - width: calc(50% - 4px); - width: -webkit-calc(50% - 4px); - border-radius: 2px; - color: #B3B3B3; - background-color: #191919; - margin: 7px 7px 0 0; -} - -.create-content-menu a:nth-child(2), .create-content-menu a:first-child { - margin-top: 0; -} - -.create-content-menu a:nth-child(2n) { - margin-right: 0; -} - -.create-content-menu a:hover { - background-color: #3F3F3F; -} - -.create-content-menu a [class*='mw-icon-'] { - font-size: 39px; - line-height: 50px; - height: 40px; - display: block; - color: #F5F5F5; -} - -.create-content-menu a [class*='mai-'] { - font-size: 29px; - line-height: 58px; - height: 40px; - display: block; - color: #F5F5F5; -} - -.create-content-menu a:hover [class*='mw-icon-'] { - color: white; -} - -.create-content-menu a .product-icon { - margin: 10px auto 0px; -} - -.create-content-menu a strong { - font-weight: normal; - font-size: 11px; - display: block; - padding-top: 6px; - padding-bottom: 12px; - color: white; -} - -/************************************ - Posts and content -*************************************/ - -.manage-post-item-links a { - margin-right: 7px; -} - -.manage-post-item-link-small { - display: inline-block; - max-width: 100%; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - color: #B3B3B3; - font-size: 11px; -} - -.manage-post-item-links a:hover { - text-decoration: underline -} - -.manage-post-item:hover .manage-post-item-links a, .manage-post-item:hover .manage-post-item-title a { - color: #2C82DD; -} - -.manage-post-item:hover .manage-post-item-title a [class*='mw-icon-'] { - color: #3b3b3b; -} - -.manage-post-item-col-1 { - width: 40px; -} - -.manage-post-item-col-2 { - width: 120px; -} - -.manage-post-item-col-3 { - width: auto; -} - -.manage-posts-holder { - width: 90%; -} - -.manage-posts-holder .manage-post-item-col-4 { - width: 110px; - text-align: center; - vertical-align: middle; -} - -.manage-post-item-author { - max-width: 70px; - text-align: center; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - display: inline-block; - vertical-align: middle; -} - -.manage-item-main-top { - min-height: 60px; -} - -.manage-posts-holder .manage-post-item-col-5 { - width: 40px; - vertical-align: middle; -} - -.manage-post-item .manage-post-item-title [class*='mw-icon-'] { - font-size: 24px; - top: 0px; -} - -.manage-post-item .mw-icon-drag { - cursor: move; - cursor: grab; - cursor: -moz-grab; - cursor: -webkit-grab; - z-index: 1; - visibility: hidden; - left: 0; - top: 15px; - color: #ccc; - display: block; - font-size: 20px; -} - -.manage-post-item .mw-icon-drag:hover { - color: black; -} - -.manage-post-item:hover .mw-icon-drag { - visibility: visible; -} - -.manage-post-item .product-icon { - width: 25px; - height: 25px; -} - -.manage-post-item-title { - margin-top: 0; -} - -.comments-bubble { - position: relative; - display: inline-block; -} - -.comments-bubble .mai-comment, -.comments-bubble .mw-icon-comment { - font-size: 11px; - color: #c4c4c4; - top: 2px; - margin-right: 6px; -} - -.mw-ui-row-nodrop:hover .comments-bubble .mai-comment, -.mw-ui-row-nodrop:hover .comments-bubble .mw-icon-comment { - color: #959595; -} - -.comments-bubble .comment-number { - font-size: 11px; - color: #959595; - -} - -#quick-add-post-options-item-advanced input.mw-ui-field, #quick-add-post-options-item-advanced textarea.mw-ui-field { - width: 500px; -} - -#quick-add-post-options { - width: 100%; - margin-top: 10px; - height: 37px; - position: relative; -} - -#quick-add-post-options .mw-ui-btn-nav:first-child { - margin-right: 20px; -} - -#quick-add-post-options .mw-ui-btn.active { - background-color: #3b3b3b; - color: white; - border-color: transparent -} - -#quick-add-post-options .mw-ui-btn.active [class*="mw-icon-"] { - color: white; -} - -#content-edit-settings-tabs-holder { - height: 37px; - margin-bottom: 20px; -} - -#quick-add-post-options-holder .mw-ui-btn { - padding: 9px 22px; - /*border-color: transparent; */ - background-color: #F7F7F7; -} - -#quick-add-post-options-holder .mw-ui-btn:hover, #quick-add-post-options-holder .mw-ui-btn:focus { - /* background-color: #F7F7F7; - border-color: #e5e5e5;*/ -} - -.quick-parent-selector select { - width: 215px; -} - -#quick-add-post-options-items-holder { - position: absolute; - min-width: 100%; - left: 0; - z-index: 90; - background: white; - display: none; - margin-top: 0; -} - -#quick-add-post-options .mw-ui-btn { - font-size: 11px; -} - -#quick-add-post-options [class*='mai-'] { - font-size: 22px; - color: #999; - float: left; - margin: 3px 5px 0 0; -} - -#quick-add-post-options :hover > [class*='mai-'] { - color: #0086db; -} - -#quick-add-post-options [class*='mw-icon-'] { - font-size: 29px; - color: #999; - float: left; - margin: 2px 5px 0 0; -} - -#quick-add-post-options :hover > [class*='mw-icon-'] { - color: #0086db; -} - -#quick-add-post-options-items-holder-container { - overflow-y: auto; - overflow-x: hidden; - width: 100%; - position: relative; - z-index: 1; - background: white; - padding: 0; -} - -#custom-fields-post-table { - table-layout: fixed; -} - -#custom-fields-post-table .mw-liveedit-field { - width: 100%; - min-width: 55px; - font-size: 13px; - height: auto; -} - -#custom-fields-post-table tbody tr:hover > td, #custom-fields-post-table tbody tr.active > td { - background-color: #FAFAFA; -} - - - -#custom-fields-post-table .mw-icon-gear { - font-size: 20px; -} - -#custom-fields-post-table .mw-icon-bin, -#custom-fields-post-table .mw-icon-close { - font-size: 15px; -} - -#custom-fields-post-table .custom-fields-cell-delete .mw-icon-gear, #custom-fields-post-table .custom-fields-cell-delete .mw-icon-close { - color: #C6C6C6; -} - -#custom-fields-post-table .custom-fields-cell-delete a:hover .mw-icon-gear, #custom-fields-post-table .custom-fields-cell-delete a:focus .mw-icon-gear { - color: #3F3F3F; -} - -#custom-fields-post-table .custom-fields-cell-delete a:hover .mw-icon-close, #custom-fields-post-table .custom-fields-cell-delete a:focus .mw-icon-close { - color: #DC0D17; -} - -#custom-fields-post-table .mw-ui-btn { - white-space: nowrap; -} - -#custom-fields-post-table .mobile-th { - display: none; - font-weight: bold; -} - -@media (max-width: 600px) { - #custom-fields-post-table thead { - display: none; - } - - #custom-fields-post-table .mobile-th { - display: block; - text-align: left; - } - - #custom-fields-post-table tr { - padding-bottom: 20px; - border-bottom: 1px solid; - overflow: hidden; - } - - #custom-fields-post-table tr, - #custom-fields-post-table td { - display: block !important; - text-align: left; - } - - #custom-fields-post-table td { - - border: none - } - - #custom-fields-post-table td.custom-fields-cell-settings, - #custom-fields-post-table td.custom-fields-cell-delete { - float: left; - width: 20%; - } - - #custom-fields-post-table td + td { - border-top: none - } - -} - -.custom-fields-cell-settings, .custom-fields-cell-delete { - text-align: center; -} - -.btn-create-custom-field-value { - margin-left: 26px; -} - -.btn-create-custom-field-value .mw-icon-plus { - font-size: 13px; - margin-right: 3px; -} - -.mw-admin-custom-field-value-edit-inline, .mw-admin-custom-field-name-edit-inline { - border-radius: 3px; - display: inline-block; - min-height: 14px; - min-width: 40px; - padding: 0 20px 0 3px; - position: relative; - white-space: pre-line; -} -.mw-admin-custom-field-value-edit-inline-holder .mw-admin-custom-field-name-edit-inline{ - padding-right: 15px; -} -.mw-admin-custom-field-value-edit-inline{ - background-color: #eee; -} -.custom-field-comma{ - display: none; -} - -.mw-admin-custom-field-value-edit-inline:before, .mw-admin-custom-field-name-edit-inline:before { - content: '\f2bf'; - font-family: Microweber; - position: absolute; - right: 2px; - cursor: pointer; - color: #B3B3B3; - visibility: hidden; -} - -tr .mw-admin-custom-field-value-edit-inline:hover:before, tr .mw-admin-custom-field-name-edit-inline:hover:before { - visibility: visible; -} - -.mw-admin-custom-field-value-edit-inline:empty:after { - content: "Click to edit"; - color: #B3B3B3; -} - -.mw-custom-field-form-controls { - margin-bottom: 10px; - white-space: nowrap; - width: 80%; - width: -webkit-calc(100% - 70px); - width: calc(100% - 70px); -} - -.mw-custom-field-group, .custom-field-settings-name { - margin-bottom: 10px; -} - -.custom-field-settings-name { -} - -.mw-custom-fields-list-preview { - position: relative; -} - -.mw-custom-field-form-controls [class*='mw-icon-'] { - font-size: 18px; - margin: 0 4px; - cursor: pointer; - width: 3%; -} - -.mw-custom-field-form-controls:hover [class*='mw-icon-'] { - opacity: 0.3; - visibility: visible; -} - -.mw-custom-field-form-controls [class*='mw-icon-']:hover { - opacity: 1; -} - -.mw-custom-field-form-controls .custom-fields-handle-field { - cursor: move; - cursor: grab; - cursor: -moz-grab; - cursor: -webkit-grab; -} - -.mw-custom-field-form-controls.ui-sortable-helper .custom-fields-handle-field { - cursor: grabbing; - cursor: -moz-grabbing; - cursor: -webkit-grabbing; -} - -#quick-add-post-options-item-template, #quick-add-post-options-item-advanced { - width: 805px; - max-width: 100%; -} - -.mw-custom-field-form-controls .mw-icon-close { - font-size: 11px; - color: #DC0D17; -} - -.mw-admin-custom-field-name-edit-inline { - white-space: normal; -} - -.delete-custom-fields { - position: absolute; - display: block; - top: 0; - right: 0; - width: 16px; - height: 100%; - vertical-align: middle; - text-align: center; - font-size: 10px; - visibility: hidden; - background: #D9D9D9; - cursor: pointer; - border-radius: 0 3px 3px 0 -} - -.delete-custom-fields:hover { - background: #3F3F3F; - color: white; -} - -#custom-fields-post-table > tbody > tr.scale-out { - -webkit-transition: all 300ms ease-out; - -moz-transition: all 300ms ease-out; - -o-transition: all 300ms ease-out; - transition: all 300ms ease-out; - -webkit-transform: scale(0.01); - -moz-transform: scale(0.01); - -ms-transform: scale(0.01); - -o-transform: scale(0.01); - transform: scale(0.01); - opacity: 0; -} - -.mw-admin-custom-field-value-edit-inline-holder { - position: relative; - display: inline-block; - vertical-align: middle; - margin:3px; -} - -.custom-fields-values-holder .mw-admin-custom-field-value-edit-inline-holder:last-child .custom-field-comma { - display: none; -} - -.mw-admin-custom-field-value-edit-inline-holder:hover .delete-custom-fields, .mw-admin-custom-field-value-edit-inline-holder.active .delete-custom-fields { - visibility: visible; -} - -.delete-custom-fields:after { - font-family: Microweber; - content: '\0111'; - vertical-align: middle; - display: inline-block; - height: 7px; - line-height: 7px; - top: 50%; - left: 0; - width: 100%; - text-align: center; - position: absolute; - margin-top: -3px; -} - -.mw-admin-custom-field-value-edit-inline-holder:hover { - background: #EDEDED; - z-index: 2; -} - -.tip-box { - box-shadow: 0 0 4px rgba(0, 0, 0, 0.2); - background: white; -} - -.tip-box .mw-tooltip-arrow:after { - background: none repeat scroll 0 0 #FFFFFF; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.2); - content: ""; - display: block; - height: 10px; - overflow: hidden; - width: 10px; - transform: rotate(45deg); - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -o-transform: rotate(45deg); - -ms-transform: rotate(45deg); -} - -.tip-box .mw-tooltip-arrow { - left: 20px; - top: -5px; -} - -#dropdown-custom-fields.active { - display: block; -} - -#dropdown-custom-fields .mw-dropdown-content { - width: 550px; - max-height: 180px; - position: relative; - box-shadow: 0 0 6px -4px #000; - -webkit-box-shadow: 0 0 6px -3px #000; -} - -#dropdown-custom-fields.active > .mw-dropdown-value { - border-bottom-left-radius: 0px; - border-bottom-right-radius: 0px; -} - -#dropdown-custom-fields li { - float: left; - border: none; - display: block; - text-align: center; - width: 90px; - padding: 14px; -} - -#dropdown-custom-fields li:hover { - background-color: #eee; -} - -#dropdown-custom-fields li [class*="mw-custom-field-icon-"] { - float: none; - display: block; - font-size: 32px; - position: relative; - width: auto; -} - -#dropdown-custom-fields .mw-dropdown-val { - text-align: left; -} - -#dropdown-custom-fields .mw-dropdown-val:before { - content: "+"; - float: left; - margin-right: 10px; - font-size: 17px; - font-family: Microweber; -} - -#dropdown-custom-fields .mw-dropdown-val:after { - display: none; -} - -td.custom-field-icon, td.custom-field-icon > * { - text-align: center; - cursor: move; - cursor: grab; - cursor: -moz-grab; - cursor: -webkit-grab; -} - -.preview_frame_container, .preview_frame_wrapper, .preview_frame_container iframe { - background-color: white; -} - -.preview_frame_wrapper.loading:after { - display: block; - position: absolute; - top: 50%; - left: 50%; - width: 20px; - height: 20px; - content: ""; - background: url(../images/img_check_loading.gif) no-repeat center; -} - -.preview_frame_wrapper .mw-overlay { - z-index: 1; - cursor: pointer; - cursor: zoom-in; - cursor: -webkit-zoom-in; - cursor: -moz-zoom-in; -} - -.preview_frame_wrapper.zoom .mw-overlay { - cursor: zoom-out; - cursor: -webkit-zoom-out; - cursor: -moz-zoom-out; -} - -.previewctrl { - display: none !important; - position: absolute; - top: 50%; - margin-top: -25px; - height: 50px; - width: 50px; - background: #fff; - z-index: 5; - font-family: Microweber; - text-align: center; - font-size: 22px; - cursor: pointer; - padding-top: 11px; -} - -.previewctrl.prev:after { - content: "\0137" -} - -.previewctrl.next:after { - content: "\0138" -} - -.previewctrl.prev { - left: 0; -} - -.previewctrl.next { - right: 0; -} - -.mw-overlay { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 9; -} - -.preview_frame_wrapper { - position: relative; - overflow: hidden; - box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.41); -} - -.live-block-btn { - display: block; - width: 109px; - height: 84px; - text-align: center; - font-size: 12px; - color: white; - padding-top: 57px; - background: #000 url(../img/livepen.png) no-repeat center 17px; - border-radius: 5px; - position: absolute; - top: 50%; - left: 50%; - z-index: 2; - margin: -42px 0 0 -55px; - opacity: 0; - -webkit-transition: all 0.3s; - -moz-transition: all 0.3s; - transition: all 0.3s; -} - -.mw-overlay-quick-link { - background-color: rgba(97, 97, 97, 0); - -webkit-transition: all 0.3s; - -moz-transition: all 0.3s; - transition: all 0.3s; -} - -.mw-overlay-quick-link:hover .live-block-btn { - opacity: 1; -} - -.mw-overlay-quick-link:hover { - background-color: rgba(97, 97, 97, .5); -} - -#mw-admin-container .preview_frame_small, .preview_frame_small { - /*width: 200%; - -moz-transform: scale(0.5, 0.5); - -moz-transform-origin: 0 0; - -o-transform: scale(0.5, 0.5); - -o-transform-origin: 0 0; - -webkit-transform: scale(0.5, 0.5); - -webkit-transform-origin: 0 0; - -ms-transform: scale(0.5, 0.5); - -ms-transform-origin: 0 0; - transform: scale(0.5, 0.5); - transform-origin: 0 0;*/ - width: 100%; - overflow: hidden; - display: block; -} - -#mw-admin-container .zoom.preview_frame_wrapper, .zoom.preview_frame_wrapper { - height: 80%; - left: 0; - position: fixed; - top: 0; - width: 80%; - z-index: 999; - top: 10%; - left: 10%; - box-shadow: 0 0 9px -5px #000; -} - -.preview_frame_wrapper.zoom:after { - content: "\0111"; - font-family: Microweber; - display: block; - position: absolute; - font-size: 15px; - top: 0; - right: 0; - width: 30px; - height: 30px; - padding: 5px; - text-align: center; - background: white; -} - -#mw-admin-container .zoom .preview_frame_small, .zoom .preview_frame_small { - position: absolute; - width: 100%; - height: 100%; - left: 0; - top: 0; - overflow: hidden; - -moz-transform: scale(1, 1); - -o-transform: scale(1, 1); - -webkit-transform: scale(1, 1); - -ms-transform: scale(1, 1); - transform: scale(1, 1); -} - -.mw-no-posts-foot { - text-align: center; - padding: 60px 0; -} - -.mw-no-posts-foot-label { - font-size: 20px; - padding-right: 12px; -} - -body.editorediting #content-title-field-row, body.editorediting #quick-add-post-options, body.editorediting .mw-admin-edit-page-primary-settings { - opacity: 0.22; -} - -.mw-admin-edit-page-primary-settings.parent-selector { - float: right; -} - -.mw-admin-edit-content-holder { - float: left; -} - -.mw-admin-edit-page-primary-settings.content-category-selector { - clear: both; - width: 100%; -} - -.mw-tag-selector .mw-ui-btn .mw-icon-close { - font-size: 10px; - position: absolute; - top: 0; - right: -1px; - cursor: pointer; - margin: 0; - height: 100%; - line-height: 100%; - width: 15px; - color: #999; - border-radius: 0 2px 2px 0; -} - -.mw-tag-selector .mw-ui-btn .mw-icon-close:before { - position: absolute; - top: 50%; - left: 50%; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); -} - -.mw-tag-selector .mw-ui-btn:hover .mw-icon-close { - color: white; -} - -.mw-tag-selector .mw-ui-btn .mw-icon-close:hover { - background-color: #DC0D17; - -} - -.mw_admin_edit_content_form { - position: relative; -} - -#pages_edit_container .mw-ui-category-selector { - height: 300px; -} - -#pages_edit_container #mw-ui-category-selector-manage { - margin-top: 30px; -} - -#pages_edit_container #mw-ui-category-selector-manage li li { - background: url(../img/treelisub.gif) no-repeat 26px -3px, url(../img/treelisub_single.gif) repeat-y 26px 0; -} - -#pages_edit_container #mw-ui-category-selector-manage li li:last-child { - background: url(../img/treelisub_last.gif) no-repeat 16px -3px; -} - -#mw-ui-category-selector-manage .mw-icon-category { - font-size: 20px; - margin-right: 5px; -} - -#mw-ui-category-selector-manage li li .mw-icon-category { - color: white; - text-shadow: 0 0 1px #000; -} - -#pages_edit_container > .mw-module-category-manager { - /*padding: 30px;*/ -} - -#mw_edit_category_admin_holder { - padding: 10px 30px; -} - -#pages_edit_container:-webkit-full-screen { - background: white; - padding: 30px; - overflow: auto; - width: 100%; - height: 100%; -} - -#pages_edit_container:-moz-full-screen { - background: white; - padding: 30px; - overflow: auto; - width: 100%; - height: 100%; -} - -#pages_edit_container:-ms-fullscreen { - background: white; - padding: 30px; - overflow: auto; - width: 100%; - height: 100%; -} - -#pages_edit_container:fullscreen { - background: white; - padding: 30px; - overflow: auto; - width: 100%; - height: 100%; -} - -#pages_edit_container:-webkit-full-screen .mw-admin-edit-page-primary-settings { - display: none; -} - -#pages_edit_container:-moz-full-screen .mw-admin-edit-page-primary-settings { - display: none; -} - -#pages_edit_container:-ms-fullscreen .mw-admin-edit-page-primary-settings { - display: none; -} - -#pages_edit_container:fullscreen .mw-admin-edit-page-primary-settings { - display: none; -} - -#pages_edit_container:-webkit-full-screen .admin-manage-toolbar-holder, #pages_edit_container:-webkit-full-screen .mw_admin_edit_content_form { - max-width: 1200px; - margin: auto; -} - -#pages_edit_container:-moz-full-screen .admin-manage-toolbar-holder, #pages_edit_container:-moz-full-screen .mw_admin_edit_content_form { - max-width: 1200px; - margin: auto; -} - -#pages_edit_container:-ms-fullscreen .admin-manage-toolbar-holder, #pages_edit_container:-ms-fullscreen .mw_admin_edit_content_form { - max-width: 1200px; - margin: auto; -} - -#pages_edit_container:fullscreen .admin-manage-toolbar-holder, #pages_edit_container:fullscreen .mw_admin_edit_content_form { - max-width: 1200px; - margin: auto; -} - -#pages_edit_container:-webkit-full-screen #quick-add-post-options.fixed { - position: static; -} - -#pages_edit_container:-moz-full-screen #quick-add-post-options.fixed { - position: static; -} - -#pages_edit_container:-ms-fullscreen #quick-add-post-options.fixed { - position: static; -} - -#pages_edit_container:fullscreen #quick-add-post-options.fixed { - position: static; -} - -#pages_edit_container:-webkit-full-screen .admin-manage-toolbar-content { - height: auto !important; -} - -#pages_edit_container:-moz-full-screen .admin-manage-toolbar-content { - height: auto !important; -} - -#pages_edit_container:-ms-fullscreen .admin-manage-toolbar-content { - height: auto !important; -} - -#pages_edit_container:fullscreen .admin-manage-toolbar-content { - height: auto !important; -} - -.manage-toolbar-bottom { - padding-top: 20px; -} - -.page-template-config { - font-size: 13px; - color: rgba(170, 170, 170, 1); - text-transform: capitalize; - cursor: default; -} - -.page-template-config .mw-icon-gear select { - opacity: 0; - position: absolute; - top: 0; - left: 0; - cursor: pointer; -} - -.page-template-config .mw-icon-gear { - font-size: 19px; - cursor: pointer; - top: -1px; - left: 10px; - position: relative; - overflow: hidden; -} - -#category-tree-not-found-message { - text-align: center; - padding: 30px; - display: none; -} - -#category-tree-not-found-message h3 { - padding: 10px; -} - -#category-tree-not-found-message .mw-ui-btn { - padding: 9px 12px; -} - -#category-not-found-name { - font-weight: bold; -} - -#parent-category-selector-holder { - text-align: left; - margin: 0 auto 20px; -} - -#parent-category-selector-block { - display: none; -} - -#parent-category-selector-block h3 { - padding: 25px; -} - -/* Content title */ - -#content-title-field-row { - width: 100%; - padding-top: 5px; -} - -#titlepricecolumn, .titlepricecolumn { - width: 160px; - padding-left: 20px; - vertical-align: bottom; -} - -.mw-admin-content-edit-title-column { - padding-left: 20px; - vertical-align: middle; - padding-top: 16px; -} - -.mw-admin-content-edit-title-column-end { - vertical-align: middle; - padding-top: 16px; - padding-left: 10px; -} - -#content-title-field-row .mw-ui-dropdown-content, #content-title-field-row .mw-ui-dropdown-content * { - vertical-align: middle; -} - -#content-title-field, .admin-imp-field { - font-size: 26px; - height: auto; - width: 100%; - - padding: 10px; -} - -#content-title-field-row { - border: 1px solid #eaeaea; - border-bottom: 1px solid #DADADA; - background: white; -} - -#product-price-field { - height: auto; - width: 100px; -} - -#pricedropdown { - width: 100%; - margin-top: 7px; -} - -#pricedropdown .mw-ui-btn { - border-color: transparent; -} - -#pricedropdown .mw-ui-dropdown-content { - left: auto; - right: 0; - top: -17px; - box-shadow: 0 0 6px -4px #000; - background-color: white; - padding: 12px; -} - -#pricedropdown .mw-ui-dropdown-content .mw-ui-field { - width: 85px; - text-align: center; -} - -#pricedropdown .mw-ui-dropdown-content .mw-ui-label { - float: right; - padding-right: 12px; - padding-bottom: 0; -} - -.pricedropdown-currency { - font-size: 16px; - color: #B3B3B3; -} - -#pricedropdown .mw-ui-dropdown-content .mw-ui-col { - padding-top: 5px; - padding-bottom: 5px; -} - -#product-price-field-label { - float: left; - font-size: 19px; - margin: 0 10px 0 0; - color: #8F8F8F; - margin: 13px 10px 0 0; -} - -#content-title-field-buttons { - text-align: right; - vertical-align: bottom; - float: right; -} - -.content-title-field-buttons { - width: auto; - white-space: nowrap; - display: inline-block; - vertical-align: bottom; -} - -/*#content-title-field-buttons .mw-ui-btn-nav {*/ -/*vertical-align: bottom;*/ -/*}*/ - -/*#content-title-field-buttons .mw-ui-btn > [class*=mw-icon-] {*/ -/*font-size: 17px;*/ -/*top: 0;*/ -/*}*/ - -/*#content-title-field-buttons .mw-ui-btn {*/ -/*line-height: 14px;*/ -/*}*/ - -#tabsnav .mw-ui-btn > [class*=mw-icon-] { - top: -1px; -} - -.post-states-tip-nav .mw-ui-btn { - border: none; - background-color: transparent; - padding-left: 14px; - padding-right: 14px; - justify-content: left; -} - -.post-states-tip-nav .mw-ui-btn:hover { - background-color: #fafafa; -} - -.post-states-tip-nav .btn-publish-unpublish.active { - display: none; -} - -.btn-posts-state { - width: 45px; -} - -.btn-publish > *, .btn-posts-state .mw-icon-check { - color: #48AD79; -} - -.btn-unpublish > *, .btn-posts-state .mw-icon-unpublish { - color: #EF924D; -} - -.post-move-to-trash > *, .btn-posts-state .mw-icon-trash { - color: #888888; -} - -.post-move-to-trash { - font-size: 11px; -} - -.post-states-tip-nav { - min-width: 147px; - float: left; -} - -.post-states-tip-nav hr { - margin: 11px 0; -} - -.posts-states-tooltip .mw-tooltip-content { - padding-left: 0; - padding-right: 0; -} - -.posts-states-tooltip, .posts-states-tooltip .mw-tooltip-content, .posts-states-tooltip .mw-tooltip-arrow:after { -} - -.bottom-left.mw-tooltip-default.posts-states-tooltip .mw-tooltip-arrow { - margin-left: 3px; -} - -#content-title-field::-webkit-input-placeholder { - color: inherit; - opacity: 1; -} - -#content-title-field::-moz-placeholder { - color: inherit; - opacity: 1; -} - -#content-title-field:-ms-input-placeholder { - color: inherit; - opacity: 1; -} - -#content-title-field:-moz-placeholder { - color: inherit; - opacity: 1; -} - -#content-title-field:focus::-webkit-input-placeholder { - opacity: 0.3; -} - -#content-title-field:focus::-moz-placeholder { - opacity: 0.3; -} - -#content-title-field:focus:-ms-input-placeholder { - opacity: 0.3; -} - -#content-title-field:focus:-moz-placeholder { - opacity: 0.3; -} - -#un-or-published { - width: auto; - position: absolute; - bottom: 42px; - right: 0; -} - -.pulished-state-column { - width: 220px; - width: 0; -} - -input#edit-content-url { - display: none; -} - -input#edit-content-url:focus, input#edit-content-url.active { - display: block; -} - -.view-post-slug { - display: none; -} - -#slug-field-holder { - padding-top: 0; -} - -.view-post-slug.active { - display: inline-block; - overflow: hidden; - text-overflow: ellipsis; - min-width: 20px; - min-height: 11px; - top: -4px; - position: relative; - line-height: 12px; -} - -#edit-content-url { - color: #888; -} - -.edit-post-url .mw-ui-invisible-field { - font-size: 12px; - line-height: 12px; - color: #CCCCCC; - top: 0; - left: -1px; - height: 16px; - padding: 0px; - top: -5px; -} - -.edit-post-url, -.edit-post-url * { - direction: ltr; - text-align: left; -} - -.edit-post-url { - clear: both; - padding-top: 0; - top: 3px; - position: relative; -} - -@media (max-width: 768px) { - .edit-post-url { - display: none; - } - -} - -.edit-post-url .mw-ui-row { - table-layout: auto; -} - -#slug-base-url-column { - white-space: nowrap; -} - -#slug-base-url-column + .mw-ui-col { - width: 100%; -} - -.view-post-site-url:before { - display: inline-block; - content: '\006e'; - font-family: 'admin'; - position: relative; - top: 2px; - margin-right: 7px; -} - -.section-title { - padding-top: 20px; -} - -/* Toolbar */ - -.manage-toobar { - clear: both; - position: relative; - z-index: 10; - /*height: 45px;*/ - border: 1px solid #eaeaea; - background: #fafafa; - padding: 12px 14px; - margin: 10px 0; - width: 90%; -} - -#bulk-actions { - width: 100px; -} - -.admin-manage-toolbar h2 { - margin: 0; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.admin-manage-toolbar-title-icon { - font-size: 28px; -} - -.admin-manage-toolbar-title-icon[class*="mai-"] { - font-size: 21px; - top: 7px; -} - -.mw-icon-category.admin-manage-toolbar-title-icon { - margin-top: 5px; -} - -.admin-manage-toolbar .mw-ui-row, .admin-manage-toolbar .mw-ui-row .mw-ui-col, .admin-manage-toolbar .mw-ui-row .mw-ui-col > * { - vertical-align: middle; -} - -.admin-manage-toolbar-holder { - min-height: 85px; -} - -.admin-manage-toolbar { - position: relative; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - width: 100%; - z-index: 101; - top: 0; -} - -.toolbar-live-edit { - float: right; - margin-left: 8px; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.toolbar-live-edit span { - margin-right: 10px; -} - -.pages_tree { - /*padding: 15px 20px;*/ - padding: 15px 0; -} - -.pages_tree li { - list-style: none -} - -.toolbar-live-edit .mai-edit { - color: rgba(0, 145, 235, 1); - -} - -.admin-manage-toolbar-content { - position: relative; - padding: 0; -} - -.admin-manage-toolbar-content .mw-ui-row-nodrop { - table-layout: auto; -} - -#mw-search-field { - position: absolute; - right: 100%; - margin-right: 10px; - max-width: 145px; - width: 190px; -} - -#mw-quick-add-choose-layout-middle-pos { - clear: both; -} - -.manage-post-item { - padding: 12px 15px; - border: 1px solid #ececec; - border-bottom: 0; - position: relative; - background: #fafafa; -} - -.manage-post-item:hover { - background: white; - box-shadow: 0px 2px 2px rgba(0, 0, 0, .26); - z-index: 2; -} - -.mw-ui-box-content .manage-post-item:first-child { - border-top: none -} - -.manage-post-image { - display: block; - float: left; - position: relative; - width: 100px; - /*height: 75px;*/ - height: 85px; - background-repeat: no-repeat; - background-position: center; - /*background-size: contain;*/ - background-size: cover; - background-color: #f5f5f5; -} - -.manage-post-image-no-image:after { - color: #CCCCCC; - content: "\0109"; - display: block; - font-family: admin, Microweber; - font-size: 36px; - line-height: 31px; - margin-top: -18px; - position: absolute; - text-align: center; - top: 50%; - width: 100%; -} - -.manage-post-image-page:after { - content: '\0057'; -} - -.manage-post-image-post:after { - content: '\0058'; -} - -.manage-post-image-shop:after { - content: '\0053'; -} - -.manage-post-image-product:after { - content: '\0071'; -} - -.manage-post-item.ui-sortable-helper { - border-color: transparent; - background: #FBF9D0; - padding-left: 10px; - padding-bottom: 10px; -} - -.quick-add-post-options-item { - display: none; - padding: 20px; - min-width: 310px; -} - -#quick-add-gallery-items.quick-add-post-options-item { - padding: 0; -} - -.module-product-options-settings > .mw-ui-row, .module-product-options-settings > .mw-ui-row * { - vertical-align: bottom; -} - -.module-product-options-settings .mw-ui-col:last-child .mw-ui-btn .mw-icon-dropdown { - position: absolute; - right: 3px; - top: 20px; -} - -.module-product-options-settings .mw-ui-col:last-child .mw-ui-btn { - width: 125px; - text-align: left; -} - -#mw-admin-product-shipping-options { - padding-top: 15px; -} - -#pages_edit_container .mw-paging { - margin: 40px 0; -} - -/************************************ - Notification Count bubble -*************************************/ - -.mw-notification-count { - display: inline-block; - background: #ff0000; - color: #FFFFFF; - min-height: 13px; - padding: 0 2px; - font-size: 11px; - line-height: 20px; - border-radius: 20px; - height: 20px; - min-width: 20px; - text-align: center; - position: relative; - float: right; - top: 22px; - right: 28px; -} - -.mw-ui-navigation a .relative .mw-notification-count { - top: -2px; - left: 103%; - right: auto; -} - -/************************************ - Miscellaneous -*************************************/ - -.mw-menu-selector-list li { - list-style: none -} - -.mw-notif-bubble { - display: inline-block; - padding: 1px 2px; - color: white; - font-size: 9px; - font-weight: bold; - position: relative; - top: -1px; - background: #EF3D25; - box-shadow: 0px 1px 2px #363636; - border-radius: 2px; -} - -.ico > .mw-notif-bubble { - position: absolute; - left: 75%; - top: -7px; -} - -.mw-ui-label-help { - font-size: 10px; - line-height: 12px; - display: block; - color: #8F8F8F; -} - -body.grabbing, body.grabbing * { - cursor: move; - cursor: grabbing; - cursor: -moz-grabbing; - cursor: -webkit-grabbing; -} - -.admin-side-box { - padding: 14px; -} - -.mw-side-main-title > [class*='mw-icon-'] { - font-size: 30px; - margin: 0; -} - -.nested-dropdown li a { - display: block; - padding: 12px; -} - -.nested-dropdown li a:hover, .nested-dropdown li a:focus { - background-color: #EDEDED; -} - -.valign .mw-ui-col, .valign, .valign * { - vertical-align: middle; -} - -.valign-bottom, .valign-bottom * { - vertical-align: bottom; -} - -.nowrap { - white-space: nowrap; -} - -.alert { - display: block; - clear: both; -} - -.alert-error { - color: #DC0D17; -} - -.ol { - list-style-type: decimal; - padding-left: 16px; - padding-bottom: 10px; -} - -.ol li { - padding-bottom: 5px; -} - -.ol li:last-child { - padding-bottom: 0; -} - -.module-live-edit-settings { - padding: 0px; -} - -.mw-accordion .mw-accordion-content .module-live-edit-settings { - padding: 0px; -} - -.module-live-edit-settings:after { - content: "."; - display: block; - clear: both; - visibility: hidden; - line-height: 0; - height: 0; -} - -.module-live-edit-settings .module-live-edit-settings { - padding: 0; -} - -.info-box { - background-color: whitesmoke; - border: none; -} - -.mwahi { - font-size: 18px !important; - margin-left: 5px; - top: -2px; - cursor: help; - color: #888888; -} - -.mwahi:hover { - color: #111; -} - -.bgimg, .bgimage { - position: relative; - display: inline-block; - background-repeat: no-repeat; - background-position: center top; - background-size: cover; - vertical-align: middle; -} - -.ipicon { - display: inline-block; - width: 20px; - height: 20px; - font-size: 11px; - text-align: center; - padding-top: 1px; - border-radius: 3px; - border: 2px solid #555555; - cursor: default; - margin-right: 5px; -} - -/************************************ - Admin tooltip -*************************************/ - -.admin-universal-tooltip { - max-width: 350px; -} - -.admin-universal-tooltip .mw-tooltip-content { - color: white; -} - -.admin-universal-tooltip .mw-tooltip-content > ol, .admin-universal-tooltip .mw-tooltip-content > ul { - padding-left: 16px; -} - -.admin-universal-tooltip .mw-tooltip-content > ol li, .admin-universal-tooltip .mw-tooltip-content > ul li { - padding: 2px 0; -} - -.admin-universal-tooltip .mw-tooltip-content > p { - padding-bottom: 10px; -} - -.admin-universal-tooltip .mw-tooltip-content > p:last-child { - padding-bottom: 0; -} - -/* Edit link tooltip */ - -.mw-link-tip-link, .mw-link-tip-edit, .mw-link-tip .mw-tooltip-content span { - display: inline-block; - overflow: hidden; -} - -.mw-link-tip-link { - max-width: 300px; - text-overflow: ellipsis; - white-space: nowrap; -} - -.mw-link-tip-link, .mw-link-tip-edit { - color: #f2f2f2; -} - -.mw-link-tip-edit { - text-decoration: underline; -} - -.mw-link-tip .mw-tooltip-content span { - margin: 0 3px; -} - -#images-manager { - white-space: nowrap; -} - -#images-manager, #images-manager * { - vertical-align: top; -} - -#insert-image-uploader { - display: inline-block; -} - -#manage-galleries-holder { - display: inline-block; - max-width: 440px; - min-width: 420px; -} - -#manage-galleries-holder .bgimg + span { - display: block; -} - -#manage-galleries-holder .bgimg { - margin-right: 5px; - width: 44px; - height: 35px; -} - -#manage-galleries-holder .mw-icon-image { - display: inline-block; - color: #EAEAEA; - width: 44px; - height: 35px; - border: 1px solid #EAEAEA; - font-size: 23px; - padding-top: 4px; - margin-right: 5px; - background-color: white; -} - -#manage-galleries-holder .bgimg:last-child, #manage-galleries-holder .mw-icon-image:last-child { - margin-right: 0; -} - -.image-manage-item { - width: 190px; - display: inline-block; - text-align: center; - cursor: pointer; - position: relative; - margin: 0 10px 0 0; - padding: 20px; -} - -.image-manage-item:hover { - background-color: #fafafa; -} - -.image-manage-item [class*='mw-icon-'] { - font-size: 32px; - display: block; - text-align: center; - padding-bottom: 20px; - height: 50px; -} - -.manage-gallery-btn-holder { - display: block; - height: 50px; -} - -/************************************ - Custom Fields Icons -*************************************/ - -[class*='mw-custom-field-icon-'], [class*='mw-admin-icon-'] { - display: inline-block; - position: relative; - font-family: mwadmin; - font-size: 26px; - text-align: center; -} - -.mw-custom-field-icon-phone:before { - content: '\0101'; -} - -.mw-custom-field-icon-breakline:before { - content: '\f2f4'; -} - -.mw-custom-field-icon-hidden:before { - font-family: 'Microweber'; - content: "\f306"; -} - -.mw-custom-field-icon-text:before { - content: '\0102'; -} - -.mw-custom-field-icon-address:before { - content: '\0103'; -} - -.mw-custom-field-icon-site:before { - content: '\0104'; -} - -.mw-custom-field-icon-date:before { - content: '\0105'; -} - -.mw-custom-field-icon-time:before { - font-family: 'Microweber'; - content: '\f2d6'; -} - -.mw-custom-field-icon-email:before { - content: '\0106'; -} - -.mw-custom-field-icon-upload:before { - content: '\0107'; -} - -.mw-custom-field-icon-price:before { - content: '\0108'; -} - -.mw-custom-field-icon-number:before { - content: '\0110'; -} - -.mw-custom-field-icon-radio:before { - content: '\0111'; -} - -.mw-custom-field-icon-checkbox:before { - content: '\0112'; -} - -.mw-custom-field-icon-dropdown:before { - content: '\0113'; -} - -.mw-custom-field-icon-property:before { - font-family: 'Microweber'; - content: "\f14a"; -} - -.mw-custom-field-icon-breakline:before { - font-family: 'Microweber'; - content: "\f2f4"; -} - -.mw-custom-field-icon-button:before { - font-family: 'Microweber'; - content: "\f340"; -} - -.mw-custom-field-icon-captcha:before { - font-family: 'Microweber'; - content: "l"; -} - -.mw-ui-btn > [class*="mw-custom-field-icon-"] { - font-size: 132%; - margin: -2px 7px 0 0; - text-align: center; - float: left; -} - -.mw-dropdown-content li [class*="mw-custom-field-icon-"] { - margin: -3px 5px 0 0; - position: relative; - width: 17px; - float: left; -} - -/************************************ - Settings Components -*************************************/ - -.layouts_box_holder li { - list-style: none; - display: block; - cursor: pointer; - padding: 5px 10px; -} - -.layouts_box_holder li:hover { - background-color: #EDEDED; -} - -.layouts_box_holder ul li:first-child { - border-radius: 2px 2px 0 0; -} - -.layouts_box_holder ul li:last-child { - border-radius: 0 0 2px 2px; -} - -.layouts_box_holder li.active, .layouts_box_holder li.active:hover { - background-color: #4D4D4D; - color: white; -} - -/************************************ - Settings: Template -*************************************/ - -.mw-site-theme-selector { - position: relative; -} - -.module-settings-group-template .layout_selector_wrap { - padding-bottom: 20px; - margin-bottom: 20px; - box-shadow: 0 2px 4px -5px #000; - width: auto; - max-width: 100%; -} - -.module-settings-group-template:after, .mw-site-theme-selector:after { - content: "."; - display: block; - clear: both; - visibility: hidden; - line-height: 0; - height: 0; -} - -.mw-site-theme-selector .layout_selector_custom_css_clear_custom_style { - position: absolute; - bottom: 20px; - left: 0; -} - -/************************************ - Settings: Email section -*************************************/ - -.module-settings-group-email .mw-ui-field { - width: 100%; -} - -/************************************ - Settings: Backup section -*************************************/ - -.mw-backup-download, .mw-backup-restore, .mw-backup-delete { - text-align: center; - color: #AAAAAA; -} - -.mw-backup-download > [class*='mw-icon-'], .mw-backup-restore > [class*='mw-icon-'], .mw-backup-delete > [class*='mw-icon-'] { - color: #AAAAAA; - cursor: pointer; -} - -.mw-backup-download > [class*='mw-icon-']:hover, .mw-backup-restore > [class*='mw-icon-']:hover { - color: #444444; -} - -.mw-backup-delete > [class*='mw-icon-']:hover { - color: #DC0D17; -} - -#mw_uploader_loading { - position: fixed; - top: 0; - z-index: 999; - left: 50%; - opacity: 1; - transform: translateX(-50%); - margin: 0; -} - -/************************************ - Modules section -*************************************/ - -#modules_admin_mw_modules_admin_wrapper { - clear: both; - padding-top: 20px; -} - -#modules_admin_categories_mw_modules_admin_wrapper { - max-height: 250px; -} - -.mw-modules-admin li.mw-admin-module-list-item { - list-style: none; - float: left; - width: 25%; -} - -.mw-modules-admin li.mw-admin-module-list-item > div { - background: #FFFFFF; - border-radius: 2px; - margin: -1px; - border: 1px solid #e4e7f0; - text-align: center; - height: auto; - cursor: pointer; - padding: 20px; - /*padding: 5px;*/ - margin: 15px 20px 10px 0; -} - -@media screen and (min-width: 441px) { - .mw-modules-admin li.mw-admin-module-list-item:nth-child(4n) > div { - margin: 15px 0px 10px 0; - } -} - -@media screen and (max-width: 440px) { - .mw-modules-admin li.mw-admin-module-list-item:nth-child(2n) > div { - margin: 15px 0px 10px 0; - } -} - -.module-uninstall-btn.new-close.mw-icon-close { - right: -10px; - top: -10px; -} - -.mw-modules-admin-holder { - padding: 0; - background: transparent; - border: 1px; -} - -.module-uninstalled { - cursor: default; - opacity: 0.5; -} - -.module-uninstalled:hover { - opacity: 1; -} - -.module-ctrl-btn { - visibility: hidden; - margin-bottom: 10px; -} - -.admin-modules-list-form:hover .module-ctrl-btn { - visibility: visible -} - -.admin-modules-list-form, .admin-modules-list-form * { - vertical-align: middle; -} - -.admin-modules-list-image { - height: 60px; - text-align: center; - padding: 12px; - width: 100%; - max-width: 70px; - background-position: center; - background-size: contain; -} - -.admin-modules-list-image img { - vertical-align: middle; -} - -.admin-modules-list-form-content { - padding-top: 15px; -} - -.admin-modules-list-form-content, .admin-modules-list-form { - position: relative; -} - -.module-uninstall-btn { - position: absolute; - top: 0; - right: 0; - font-family: Microweber; - visibility: hidden; - border: none -} - -.admin-modules-list-form:hover .module-uninstall-btn { - visibility: visible; -} - -.mw-modules-admin li.mw-admin-module-list-item h2 { - font-size: 15px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.modules-index-bar .mw-dropdown { - width: 150px; -} - -.modules-index-bar .mw-ui-inline-list { - float: left; - margin-right: 20px; -} - -.modules-index-bar { - width: 100%; - padding: 0 14px; - background: white; - height: 66px; -} - -.modules-index-bar-transparent { - background: transparent; -} - -.modules-index-bar h2 { - font-size: 13px; - color: #0e80e5; - font-weight: bold; -} - -.modules-index-bar:after { - content: "."; - display: block; - clear: both; - visibility: hidden; - line-height: 0; - height: 0; -} - -.modules-index-bar .mw-dropdown li a { - text-transform: capitalize; -} - -#modules-title-and-search { - padding: 17px 0; -} - -#modules-title-and-search .mw-ui-searchfield { - margin-top: 12px; -} - -.admin-modules-list-form .mw-icon-drag { - font-size: 17px; - color: #C6C6C6; - cursor: move; - cursor: grab; - cursor: -moz-grab; - cursor: -webkit-grab; -} - -.admin-modules-list-image { - vertical-align: middle; -} - -#mw-modules-toolbar { - background: white; - padding: 0 15px; - -} - -.module-toolbar-info-description { - font-size: 13px; - font-weight: bold; - color: #0e80e5; -} - -#mw-modules-toolbar, -#mw-modules-toolbar .mw-ui-col { - height: 66px; -} - -#mw-modules-toolbar * { - vertical-align: middle; -} - -#mw-modules-toolbar .mw-ui-row-nodrop { - width: 100%; -} - -.mw-modules-toolbar-back-icon .mw-icon-back { - font-size: 28px; - line-height: 10px; -} - -.mw-modules-toolbar-back-button { - text-align: right; -} - -#mw-modules-toolbar .mw-ui-row-nodrop img { - margin-right: 10px; -} - -/* Menu module */ - -.manage-menus { - margin-bottom: 20px; -} - -.manage-menus li { - list-style: none; -} - -.manage-menus li .mw-icon-close { - cursor: pointer; - position: absolute; - right: 5px; - top: 4px; -} - -.manage-menus li > div.module_item { - position: relative; - background-color: white; - overflow: hidden; - padding: 8px; - margin: 8px 0; - border: 1px solid #D4D4D4; - border-radius: 3px; - background: #F2F2F2; -} - -.manage-menus li > div.module_item + div.module { - border: 1px solid #D4D4D4; - border-radius: 0 0 3px 3px; - padding: 8px; - display: none; -} - -.manage-menus li > div.module_item.active + div.module { - display: block; - position: relative; - background: white; - -webkit-box-shadow: 0 -2px 7px rgba(0, 134, 219, 0.5); - -moz-box-shadow: 0 -2px 7px rgba(0, 134, 219, 0.5); - box-shadow: 0 -2px 7px rgba(0, 134, 219, 0.5); -} - -.manage-menus li > div.module_item.active + div.module:after { - content: "."; - display: block; - clear: both; - visibility: hidden; - line-height: 0; - height: 0; -} - -.manage-menus li > div.module_item.active { - border-radius: 3px 3px 0 0; - margin-bottom: 0; - border-bottom: 0; - z-index: 9; - margin-top: 0; -} - -.manage-menus ul { -} - -.menu_element_link { - cursor: pointer; -} - -.manage-menus li ul li { - margin-left: 25px; -} - -.manage-menus .mw-ui-link { - color: #999999; - font-size: 14px; -} - -.manage-menus .mw-ui-link:hover { - color: #0086db; -} - -.manage-menus .mw-ui-link i { - margin: 0 !important; -} - -.manage-menus li.opened { - /*border: 1px solid #cfcfcf;*/ - /*-webkit-box-shadow: 0 0 7px rgba(0, 134, 219, 0.5);*/ - /*-moz-box-shadow: 0 0 7px rgba(0, 134, 219, 0.5);*/ - /*box-shadow: 0 0 7px rgba(0, 134, 219, 0.5);*/ -} - -.manage-menus li > div.module_item.active { - border: 1px solid #0086db; - background-color: #fff; - -webkit-box-shadow: 0 -2px 7px rgba(0, 134, 219, 0.5); - -moz-box-shadow: 0 -2px 7px rgba(0, 134, 219, 0.5); - box-shadow: 0 -2px 7px rgba(0, 134, 219, 0.5); - -} - -.manage-menus li > div.module_item .menu_element_link { - font-size: 15px; -} - -.manage-menus li.depth-0 > div.module_item .menu_element_link { - font-weight: bold; -} - -.manage-menus li > div.module_item.active .menu_element_link { - color: #0086db; - font-weight: bold; -} - -.mw_admin_modules_sortable_handle { - cursor: move; - cursor: grab; - cursor: -moz-grab; - cursor: -webkit-grab; - font-size: 19px; - color: #CCCCCC; - margin-right: 8px; -} - -.mw_admin_modules_sortable_handle { - visibility: hidden; -} - -.module_item:hover .mw_admin_modules_sortable_handle { - visibility: visible; -} - -#custom_link_controller { - width: auto; - display: none; - padding-bottom: 20px; - overflow: hidden; -} - -.order-has-link .module_item .menu_element_link:hover { - text-decoration: underline -} - -.menu_element_link { -} - -#add_new_menu_tab { - display: none; -} - -.custom-field-main-table-placeholder { - background: #FAFAFA; - border: 1px dashed #EDEDED; - border-radius: 3px; -} - -/* users */ - -#mw-users-manage-edit-rotattor { - position: relative; -} - -#users_admin_panel { - float: none; - margin-right: 20px; -} - -#user_edit_admin_panel { - float: none; -} - -#change_avatar { - position: relative; - overflow: hidden; - display: inline-block; - float: left; - white-space: nowrap; - margin-top: 15px; -} - -#avatar_holder { - width: 65px; - height: 65px; - float: left; - margin-right: 12px; - position: relative; - background-repeat: no-repeat; - background-position: center top; - background-size: cover; - text-align: center; -} - -#avatar_holder .mw-icon-user { - font-size: 50px; - color: #999999; -} - -#avatar_holder .mw-icon-user + .mw-icon-close { - display: none; -} - -#avatar_holder .mw-icon-close { - position: absolute; - z-index: 1; - top: 3px; - right: 5px; - visibility: hidden; - font-size: 11px; - cursor: pointer; -} - -#avatar_holder:hover .mw-icon-close { - visibility: visible; -} - -#reset_password { - margin-right: 12px; -} - -.mw-edit-user-table .mw-ui-btn.pull-right { - margin-left: 12px; -} - -.mw-user-thumb-small { - display: inline-block; - width: 35px; - height: 35px; - background-repeat: no-repeat; - background-color: white; - background-size: cover; - text-align: center; - font-size: 25px; -} - -#users_admin_panel .mw-user-thumb-small { - margin-right: 10px; - font-size: 35px; - color: #B3B3B3; -} - -#users_admin_panel, #users_admin_panel * { - vertical-align: middle; -} - -/************************************ - Dashboard -*************************************/ - -#stats { - padding: 20px 0; -} - -.mw-admin-stat-item { - position: relative; -} - -.sbf-item { - float: left; - width: 25%; - height: 88px; - text-align: center; - background: #fafafa; - cursor: pointer; - border: 1px solid transparent; - border-bottom: none; - position: relative; - padding: 22px 0 0; - font-size: 12px; - text-transform: uppercase; - color: #c8c8c8; -} - -.sbf-item:first-child { - border-left: none -} - -.sbf-item:last-child { - border-right: none -} - -.sbf-item:hover, -.sbf-item.active { - background: white; - border-color: #e5e5e5; - z-index: 1; - color: #0086db; - font-weight: bold; -} - -.sbf-item:hover .sbf-item-n, -.sbf-item.active .sbf-item-n { - color: #f59526; -} - -.sbf-item-n { - display: block; - color: #0086db; - font-size: 14px; - font-weight: bold; - padding-top: 5px; -} - -.sbf-item [class*='mai-'] { - font-size: 17px; - position: relative; - top: 4px; - text-transform: none; -} - -.mw-admin-stat-item-date { - position: absolute; - display: block; - text-align: center; - top: 100%; - font-size: 12px; - color: #0086db; - left: 2px; - margin-top: 7px; -} - -#admin-user-nav { - position: absolute; - top: 28px; - right: 10px; -} - -#admin-user-nav .mw-ui-dropdown-content { - width: 100px; - min-width: 100%; -} - -.statwrapper { - display: inline-block; - max-width: 100%; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.stat-time { - font-size: 12px; -} - -#visits_info_table > table { - margin-bottom: 20px; -} - -.request-stats-btn { - position: relative; - top: -2px; - left: 10px; -} - -.stat-views { - text-align: right; -} - -#quick-links-row .mw-ui-col .mw-ui-navigation { - display: inline-block; -} - -#quick-links-row .mw-ui-col { - width: 33.333%; -} - -#quick-links-row .mw-ui-col:last-child .mw-ui-navigation { - float: right; -} - -#quick-links-row .mw-ui-col:nth-child(2n) { - text-align: center; -} - -#quick-links-row .mw-ui-col:nth-child(2n) .mw-ui-navigation { - text-align: left; -} - -.quick-lists .mw-ui-box-content { - background: #fafafa; - border-top: 1px solid #e5e5e5 -} - -.quick-lists .mw-ui-navigation a { - margin-top: 5px; - color: #c8c8c8; - height: auto; - padding-top: 0; - padding-bottom: 0; - line-height: 36px; -} - -.dr-head { - height: 45px; - border: 1px solid #eaeaea; - background: #fafafa; - padding: 6px 10px; -} - -.dashboard-recent { - margin-bottom: 55px; -} - -.dr-item { - transition: box-shadow .4s; -} - -.dr-item.active { - box-shadow: 0 0 7px 1px rgba(0, 0, 0, .28) -} - -.dr-item + .dr-item { - padding-top: 2px; -} - -.dr-item-table { - border: 1px solid #ebebeb; - background: #fafafa; -} - -.dr-item table { - border-left: 3px solid transparent; - width: 100%; -} - -.dr-item-data { - display: none; - -} - -.dr-item-data-head a span { - color: rgba(44, 130, 221, 1); - font-size: 13px; - position: relative; - top: 2px; -} - -.dr-item-data-head { - height: 40px; - padding: 2px; - background: #f5f5f5; -} - -.dr-item-data-content { - padding: 20px; -} - -.dr-item:hover table, -.dr-item.active table { - border-left: 3px solid #f6a555; -} - -.dr-item td [class*='mai-'] { - color: #c8c8c8; -} - -.dr-item td { - padding: 12px; - vertical-align: middle; -} - -.dr-item-image span { - display: inline-block; - width: 60px; - height: 60px; - background-color: white; - background-position: center; - background-size: contain; - border-radius: 60px; -} - -.dr-item-status-completed { - color: rgba(72, 173, 121, 1); -} - -.drh-activity-name { - float: left; - margin: 4px 8px; - color: #0086db; -} - -.drh-activity-name:after { - font-family: 'admin'; - display: inline-block; - width: 23px; - height: 23px; - line-height: 22px; - border-radius: 23px; - content: '\0049'; - background: white; - color: rgba(44, 130, 221, 1); - border: 1px solid #eaeaea; - text-align: center; - font-size: 9px; - font-weight: bolder; - margin-left: 12px; -} - -.dr-head .mw-ui-btn [class*='mai-'] { - color: rgba(200, 200, 200, 1); - margin-right: 5px; -} - -.dr-head .mw-ui-btn { - float: right; - margin-left: 10px; -} - -.dr-item-data-content-list { - display: inline-block; - vertical-align: top; -} - -.dr-item-data-content-list dd, -.dr-item-data-content-list dt { - font-size: 11px; - float: left; -} - -.dr-item-data-content-list dd { - margin: 0 50px 10px 10px -} - -.dr-item-data-content-list dd:last-child { - margin-bottom: 0; -} - -.dr-item-data-content-list dt { - clear: both; -} - -.dr-item-data-content-list h3 { - font-size: 15px; - color: #0086db; -} - -.dr-item-data-content-list dd:after { - content: ''; - display: block; -} - -.quick-lists .mw-ui-navigation a span .mw-notification-count { - -} - -.quick-lists .mw-ui-navigation a span .mw-notification-count { - top: 5px; - margin-left: 10px; - left: auto; - right: auto; - float: none; - display: inline-block; -} - -.quick-lists .mw-ui-navigation a span { - position: relative; -} - -.quick-lists .mw-ui-navigation a [class*="mai-"] { - top: 5px; - font-size: 19px; -} - -.quick-lists .mw-ui-navigation a [class*="mw-icon-"] { - font-size: 27px; - text-align: center; - -} - -.quick-lists .mw-ui-navigation a [class*="mai-"], -.quick-lists .mw-ui-navigation a [class*="mw-icon-"] { - margin: -2px 8px 0 0; - width: 22px; -} - -.quick-lists .mw-ui-navigation a:hover [class*="mai-"], -.quick-lists .mw-ui-navigation a:hover [class*="mw-icon-"] { - color: rgba(44, 130, 221, 1); -} - -#stats_nav { - display: inline-block; - margin-left: 50px; -} - -#stats_nav .mw-ui-btn { - border: none; - text-transform: uppercase; -} - -#stats_nav .mw-ui-btn.active { - background: white; - color: #0086db; - font-weight: bold; -} - -.stats-legend { - float: right; - margin: 7px 0 0 0; -} - -.stats-legend > span { - font-size: 14px; - text-transform: uppercase; - color: #999 -} - -.stats-legend > span + span { - margin-left: 10px; -} - -.stats-legend > span:before { - display: inline-block; - width: 10px; - height: 10px; - margin-right: 10px; - content: '' -} - -.stats-legend > span.stats-legend-views:before { - background: #0086db -} - -.stats-legend > span.stats-legend-visitors:before { - background: #005C97 -} - -#stats_dashboard_last .mw-ui-row .mw-ui-col:first-child { - height: 220px; - padding-top: 45px; - vertical-align: top; -} - -.users-online { - float: left; - display: block; - width: 190px; - height: 180px; - font-size: 44px; - text-align: center; - padding-top: 46px; - font-weight: bold; - color: rgba(44, 130, 221, 1); - background: white; - z-index: 5; - position: relative; - text-transform: uppercase; -} - -.users-online span { - font-size: 15px; - font-weight: 300; - display: block; -} - -.users-online-label { - display: block; - vertical-align: top; - position: absolute; - color: #a1a1a1; - margin-top: -33px; -} - -/************************************ - Richtext editor -*************************************/ -#mw-richtext-content { - overflow: auto; - padding: 15px; -} - -/************************************ - Content Rotator -*************************************/ - -.mw-simple-rotator-item { - width: 100%; -} - -.mw-simple-rotator-container { - position: relative; -} - -/************************************ - Shop Section -*************************************/ - -#mw-order-table-holder td > .mw-icon-close, #shop-orders td > .mw-icon-close { - float: right; - font-size: 13px; - margin: 2px 0 0; - cursor: pointer; -} - -#mw-order-table-holder ul { - list-style-position: inside; -} - -#shop-orders td, #shop-orders th { - text-align: center; -} - -#manage-orders-menus .mw-ui-btn-nav .mw-ui-btn { - background-color: #f7f7f7; - font-size: 12px; -} - -#manage-orders-menus .mw-ui-btn-nav .mw-ui-btn.active { - background-color: #fff; -} - -#manage-orders-menus { - clear: both; - position: relative; - border-top: 1px solid #e5e5e5; -} - -.ordersnum { - display: inline-block; - width: 100px; - height: 100px; - border-radius: 200px; - color: white; - background-color: black; - text-align: center; - font-size: 35px; - padding: 25px 10px; - position: relative; -} - -.section-header .ordersnum { - width: 30px; - height: 30px; - background: #0e80e5; - font-size: 12px; - padding: 0; - line-height: 30px; - margin-top: 5px; -} - -.product-thumbnail-tooltip { - display: block; - width: 70px; - height: 70px; - background-position: center top; - background-repeat: no-repeat; - background-size: cover; - border-radius: 333px; -} - -.order-details-box > .mw-ui-box-content > .mw-ui-table.mw-ui-table-basic > tbody > tr:first-child > td { - border-top: none; -} - -.order-details-box > .mw-ui-box-content > .mw-ui-table.mw-ui-table-basic > tbody > tr:first-child > td:first-child { - border-right: 1px solid #e5e5e5; -} - -.mw-ord-id { - color: #2C82DD; - font-size: 16px; -} - -.mw-ord-id:hover { - text-decoration: underline; -} - -#manage-orders-menus:after { - content: "."; - display: block; - clear: both; - visibility: hidden; - line-height: 0; - height: 0; -} - -#mw-order-table-holder th, #mw-order-table-holder tfoot td { - white-space: nowrap; -} - -.mw-custom-fields-cart-item { - font-size: 11px; - padding-left: 10px; -} - -.mw-custom-fields-cart-item li li { - list-style: none -} - -.mw-custom-fields-cart-item-array { - padding-left: 8px; - padding-top: 2px; -} - -.abandoned-cart .stat-views { - width: 70px; -} - -.abandoned-cart { - margin-bottom: 30px; - table-layout: fixed; -} - -.abandoned-cart > tbody > tr > td { - width: 50%; - font-size: 12px; - vertical-align: top; -} - -@media (max-width: 950px) { - .abandoned-cart > tbody > tr > td { - display: block; - } -} - -.mw-order-item-status-completed { - color: #48ad79 -} - -.mw-order-item-status-pending { - color: #ef924d -} - -.mw-custom-fields-cart-item-key, .mw-custom-fields-cart-item-key-array-key { - font-weight: bold; - display: block; - padding-top: 3px; -} - -#mw-admin-edit-order .mw-ui-table { - margin: 15px 0; - max-width: 100%; - width: 100%; - table-layout: fixed; -} - -tr.mw-order-item.hovered, tr.mw-order-item:hover, -tr.mw-order-item.hovered, tr.mw-order-item { - background-color: #FAFAFA; -} - -#order-information-table { - font-size: 12px; -} - -#order-information-table tr.mw-order-item.hovered td, #order-information-table tr.mw-order-item:hover td { - background-color: #0086db; - color: white; -} - -#order-information-table tr.mw-order-item.hovered td a, #order-information-table tr.mw-order-item:hover td a { - color: white; -} - -#order-information-table ul { - list-style: inside; -} - -.mw-order-item-image { - border: 1px solid transparent; - margin: 0 9px 9px 0; -} - -.mw-order-item-image:hover, .mw-order-item-image.hovered { - border: 1px solid #0086db -} - -.order-table-info-list li { - list-style: none; - margin-bottom: 10px; -} - -#order-status { - margin-bottom: 15px; -} - -#mw_order_status { - margin-top: 15px; -} - -.map-shipping-address { - display: block; - margin: 0 auto 15px; - max-width: 100%; -} - -.admin-shipping-table.mw-ui-table > tbody:first-child > tr:first-child > td { - border-top: none -} - -@media (max-width: 991px) { - .admin-shipping-table select { - width: 120px; - } - - .admin-shipping-table .mw-ui-inline-list li { - display: block !important; - } - - .admin-shipping-table { - display: block; - overflow: hidden; - } - - .shipping-country-row + .shipping-country-row { - margin-top: 20px; - } - - .shipping-country-row { - padding: 10px; - border-radius: 5px; - - } - - .admin-shipping-table tbody, - .shipping-country-row, - .shipping-country-row td { - display: block; - border-bottom: 0; - width: 100%; - } - - .shipping-country-row select { - max-width: 100%; - } - - /*.shipping-country-row:nth-child(2n+1){*/ - /*background: #F2F2F2*/ - /*}*/ - -} - -.shipping-country-holder .shipping-handle-field { - cursor: move; - cursor: grab; - cursor: -moz-grab; - cursor: -webkit-grab; - visibility: hidden; -} - -.shipping-country-holder:hover .shipping-handle-field { - visibility: visible; -} - -.mw-ui-btn.DESC:after, .mw-ui-btn.ASC:after { - content: "\0118"; - font-size: 12px; - color: #C6C6C6; - font-family: Microweber; - display: inline-block; - position: relative; -} - -.mw-ui-btn.ASC:after { - -webkit-transform: rotate(180deg); - -moz-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); - top: 2px; -} - -.client-order-table thead th { - text-align: left; -} - -.mw-client-information.nonactive .mw-ui-field { - display: none; -} - -.mw-client-information .val { - display: none; -} - -.mw-client-information.nonactive .val { - display: inline; - word-wrap: break-word; - word-break: break-all; -} - -.mw-client-image-holder { - padding-bottom: 12px; -} - -#orders-info-row > .mw-ui-col:first-child { - padding-right: 10px; -} - -#orders-info-row > .mw-ui-col:last-child { - padding-left: 10px; -} - -.order-status-selector > span { - margin-right: 10px; -} - -.section-header { - background: white; - padding: 15px; - height: 60px; - margin-bottom: 15px !important; -} - -.section-header-fixer { - height: 66px; - position: relative; - z-index: 12; -} - -.section-header-fixer .section-header { - position: fixed; - box-shadow: 0 2px 22px rgba(0, 0, 0, .05); -} - -.section-header [src*=".svg"] { - max-height: 24px; - max-width: 24px; - margin-top: 6px; -} - -.section-header [src*=".png"] { - max-height: 24px; - max-width: 24px; -} - -@media screen and (max-width: 767px) { - .section-header { - height: auto; - } -} - -.section-header h2 { - font-size: 13px; - color: #0e80e5; - font-weight: bold; -} - -.section-header h2 span { - font-size: 22px; - vertical-align: middle; - margin-right: 10px; -} - -.section-header:after { - content: "."; - display: block; - clear: both; - visibility: hidden; - line-height: 0; - height: 0; -} - -.section-header h2, .section-header h3 { - margin-top: 3px; - margin-right: 10px; -} - -/* Shipping */ - -/*.shipping-country-holder {*/ -/*padding: 15px;*/ -/*background: white;*/ -/*}*/ - -/*.save_shipping_btn {*/ -/*visibility: hidden;*/ -/*}*/ - -/*.shipping-country-holder:hover .save_shipping_btn {*/ -/*visibility: visible;*/ -/*}*/ - -.shipping-country-holder .mw-icon-close { - - visibility: hidden; - cursor: pointer; -} - -.shipping-country-holder:hover .mw-icon-close { - - visibility: visible; - -} - -.price-field { - width: 65px; - text-align: center; -} - -/*.shipping_per_item, .shipping_dimensions {*/ -/*margin-top: 15px;*/ -/*padding-top: 2px;*/ -/*border-top: 1px solid #EDEDED;*/ -/*}*/ - -.shipping-country-row .mw-ui-inline-list { - padding-top: 10px; -} - -#admin-user-nav .mw-icon-off { - font-size: 22px; - margin: 6px 6px 0 15px; -} - -body.is_admin .mw-admin-container { - min-width: 840px; -} - -.admin-content-column { - max-width: 1100px; -} - -/*.admin-content-column.modules { - padding: 66px 20px 20px; -}*/ - -.the-icoimage { - width: 36px; - float: right; - background-color: white; - background-position: center; - background-repeat: no-repeat; - background-size: 70%; - border: solid 1px #e5e5e5; - border-radius: 3px 0 0 3px; -} - -html[dir="rtl"] .the-icoimage { - border-radius: 0 3px 3px 0; -} - -#upload-icoimage { - border-radius: 0 3px 3px 0; - border-left-width: 0; -} - -html[dir="rtl"] #upload-icoimage { - border-radius: 3px 0 0 3px; - border-left-width: 1px; - border-right-width: 0px; -} - - - - -.golive-button { - - background: url(../img/golive.png) no-repeat 10px center; - padding-left: 35px; -} - -.editbtn { - display: inline-block; - height: 36px; - border: 1px solid #a8a8a8; - height: 36px; - background: #f5f5f5 url(../img/editpage.png) no-repeat 13px center; - border-radius: 2px; - cursor: pointer; - padding: 10px 10px 10px 48px; - margin-left: 24px; -} - -@media (max-width: 1140px) { - - .editbtn { - background-position: center; - } - - .editbtn span { - display: none; - } - -} - -.top-form-submit { - display: block; - width: 32px; - height: 32px; - background: white; - text-align: center; - cursor: pointer; - float: right; - position: relative; - top: 1px; - right: 1px; - font-size: 21px; -} - -.top-form-submit span { - top: 0px; -} - -.mw-admin-user-tab-content tbody tr:last-child .mw-ui-btn { - margin-left: 10px; - width: 80px; -} - -.mw-action-change-template { - line-height: 14px; -} - -.mw-set-shipping-options .mw-ui-btn .mw-icon-plus, -.mw-set-shipping-options .mw-ui-btn .mw-icon-gear { - float: left; -} - -.mw-set-shipping-options .mw-ui-btn.mw-ui-btn-invert.save_shipping_btn { - line-height: 14px; -} - -.top-form-submit { - line-height: 24px; -} - -#create-menu-holder .mw-ui-btn-invert { - float: right; - line-height: 13px; -} - -#custom_link_controller .mw-ui-btn-info{ - line-height: 14px; -} - -.menu-module-wrapper .menu_element_link { - line-height: 22px; -} - -#mw_shop_set_tax_settings .mw-ui-btn.mw-ui-btn-notification .mw-icon-cart-outline { - float: left; -} - -.table-responsive { - overflow-x: auto; - padding-bottom: 20px; -} - -.table-responsive table { - table-layout: fixed; -} - -.table-scroll-visible { -} - -@media screen and (max-width: 991px) { - #mw-update-frame { - width: 100% !important; - overflow-x: hidden; - } -} - -@media screen and (max-width: 768px) { - - .show-on-hover { - visibility: visible; - } - - .main-admin-row > .admin-content-column > .mw-ui-col-container { - padding-left: 0 !important; - } - - .admin-manage-toolbar-content > .mw-ui-row-nodrop > .mw-ui-col .mw-ui-row-nodrop { - margin-bottom: 20px; - } - - .admin-manage-toolbar-content > .mw-ui-row-nodrop > .mw-ui-col { - display: block !important; - width: 100%; - } - - .manage-post-item > .mw-ui-col { - display: inline-block; - float: left; - margin-bottom: 10px; - } - - .manage-post-item .manage-post-item-col-3 { - display: block !important; - width: 58%; - } - - .manage-post-item .manage-post-item-col-4 { - display: block !important; - float: left; - margin-top: 6px; - text-align: left - } - - .manage-post-item .manage-post-item-col-4 .manage-post-item-author { - max-width: none; - } - - .manage-post-item .manage-post-item-col-5 { - display: block !important; - width: 50px; - float: right; - margin-top: 6px; - } - - .layouts_box_holder > .mw-ui-row > .mw-ui-col > .mw-ui-col-container { - padding-left: 0; - padding-right: 0; - margin-bottom: 10px; - } - - .mw-admin-edit-content-holder { - width: 100%; - } - - .mw_edit_page_right { - max-width: 100%; - } - - #content-title-field-buttons { - max-width: none !important; - } - - #slug-field-holder { - width: 50%; - float: left; - } - - #slug-field-holder .edit-post-url > .mw-ui-row > .mw-ui-col { - display: inline-block !important; - } - - .mw-admin-edit-page-primary-settings.parent-selector { - width: 50%; - float: left; - text-align: right; - } - - .top-search { - width: 150px; - } - - .top-search input { - display: block !important; - } - - .col-bar-live-edit a { - margin-top: 10px; - } - - #mw-order-table-holder { - overflow-x: auto; - padding-bottom: 20px; - width: 100%; - } - - #mw-order-table-holder .table-responsive table { - table-layout: auto; - } - - #manage-orders-menus h3, - #manage-orders-menus .mw-table-sorting, - #manage-orders-menus .mw-ui-btn-nav { - margin-bottom: 10px !important; - display: block; - } - - .main-content-column > .mw-ui-col-container, .admin-section-container { - padding-left: 0; - } - - #orders-info-row > .mw-ui-col { - padding-left: 0 !important; - padding-right: 0 !important; - margin-bottom: 10px; - } - - .quick-lists { - width: 100%; - } - - .quick-lists #quick-links-row > .mw-ui-col { - width: 50% !important; - float: left; - clear: none; - } - - .quick-lists #quick-links-row > .mw-ui-col .mw-ui-col-container, - .mw-module-admin-wrap { - padding-left: 0; - padding-right: 0; - } - - #mw-modules-toolbar { - margin-left: 0; - padding: 36px 0; - } - - .quick-lists #quick-links-row > .mw-ui-col .mw-ui-navigation { - width: 100%; - } - - .browser-ctrl-bar .mw-ui-searchfield { - display: block; - width: 200px; - } - - .module-newsletter-subscribers-list table { - table-layout: auto; - } - - #modules-list-title-and-search > .mw-ui-col { - width: 100% !important; - display: block !important; - } - - .modules-index-bar ul.mw-ui-inline-list { - margin-right: 10px; - } - - #quick-add-post-options-holder .mw-ui-btn { - padding: 9px 10px; - } - - #clients-rotator .table-responsive { - width: 100%; - } - - .gateway-icon-title > .mw-ui-row .mw-ui-col { - padding: 10px 0 !important; - text-align: center; - } - -} - -@media screen and (max-width: 440px) { - .manage-post-item .manage-post-item-col-3 { - display: block !important; - width: 100%; - } - - .mw-modules-admin li.mw-admin-module-list-item { - width: 50%; - } - - #stats_nav { - margin-left: 0; - width: 100%; - margin-top: 10px; - } - - #stats .sbf-item { - width: 50%; - } - - #homepage-add-new-order-btn { - display: none; - } -} - -.th-in-td { - font-weight: bold; - color: #3B3B3B; - letter-spacing: .5px; - text-transform: uppercase; - font-size: 10px; - padding-bottom: 5px; -} - -.mw-order-table .mw-icon-bin { - margin: 0; - top: 0; - float: none; -} - -.mw-searchbox { - display: -ms-flexbox; - display: -webkit-flex; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-flex-wrap: nowrap; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-align-content: stretch; - -ms-flex-line-pack: stretch; - align-content: stretch; - -webkit-align-items: flex-start; - -ms-flex-align: start; - align-items: flex-start; -} - -.mw-sb-item { - -webkit-order: 0; - -ms-flex-order: 0; - order: 0; - -webkit-flex: 1 1 auto; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - -webkit-align-self: auto; - -ms-flex-item-align: auto; - align-self: auto; -} - -.mw-sb-item + .mw-sb-item { - -webkit-order: 0; - -ms-flex-order: 0; - order: 0; - -webkit-flex: 0 1 auto; - -ms-flex: 0 1 auto; - flex: 0 1 auto; - -webkit-align-self: auto; - -ms-flex-item-align: auto; - align-self: auto; - padding-left: 20px; -} - -.mw-sb-item input { - width: 100%; - padding-left: 55px; -} - -.mw-sb-item-input { - width: 100%; - display: inline-block; - position: relative; -} - -.mw-sb-item-input:before { - position: absolute; - content: "\f1d9"; - display: inline-block; - top: 0; - left: 0; - font-family: Microweber; - font-size: 19px; - line-height: 36px; - text-align: center; - width: 55px; - pointer-events: none; -} - -.mw-box-pad { - padding: 20px; - background: #f5f5f5; - margin-top: 20px; - position: relative; - clear: both; -} - -.mw-box-pad:after { - visibility: hidden; - display: block; - font-size: 0; - content: " "; - clear: both; - height: 0; -} - -/*.category-advanced-seetings-button span {*/ -/*cursor: pointer;*/ -/*}*/ - -/*.category-advanced-seetings-button {*/ -/*text-align: center;*/ -/*font-size: 32px;*/ -/*}*/ - -.create-root { - overflow: hidden; - padding: 10px 0 15px; -} - -.post-type-action-label { - font-size: 18px; - color: rgba(44, 130, 221, 1); - margin-top: 6px; -} - -.post-type-action-label-text { - position: relative; - top: 2px; - font-size: 13px; - font-weight: bold; -} - -.mw-ui-abtn { - display: inline-block; - padding: 0 12px; - height: 36px; - cursor: pointer; - background-color: transparent; - border: 1px solid transparent; - text-align: center; - position: relative; - border-radius: 3px; - text-decoration: none; - font-size: 11px; - color: #212121; - line-height: 36px; - transition: border-color .3s, box-shadow .3s, background-color .3s; -} - -.mw-ui-abtn:hover, -.mw-ui-abtn.active { - background: white; - border-color: #eaeaea; -} - -.mw-ui-abtn:active, -.mw-ui-abtn.active { - border-color: #ccc; - box-shadow: inset 0 0 5px 1px rgba(0, 0, 0, 0.11); -} - -.postbtnmore:after { - content: "\0118"; - font-family: Microweber; - color: #999; -} - -.postbtnmore:hover:after { - color: #0086db; -} - -.postbtnmore ~ .mw-ui-abtn { - display: none; -} - -.stat-box-content { - overflow: hidden; - position: relative; -} - -.stat-box-content .graph-holder { - /*position: relative;*/ - height: 125px; -} - -.stat-box-content .lines { - display: block; - position: absolute; - height: 125px; - width: -webkit-calc(100% - 230px); - width: calc(100% - 230px); - bottom: 40px; - left: 190px; - max-width: -webkit-calc(100% - 190px); - max-width: calc(100% - 190px); - z-index: 1; -} - -.stat-box-content .lines .line { - display: block; - border-bottom: 2px solid #f7f7f7; - margin-bottom: 60px; -} - -.dashboard_stats { - height: 0; - vertical-align: bottom; - margin-bottom: 20px; - white-space: nowrap; - position: absolute; - left: 190px; - text-align: right; - max-width: -webkit-calc(100% - 190px); - max-width: calc(100% - 190px); - bottom: 20px; - -webkit-transition: height .5s; - transition: height .5s; - direction: rtl; -} - -.dashboard_stats.no-transition { - -webkit-transition: none; - transition: none; - z-index: 2; -} - -.mw-admin-stat-item { - display: inline-block; - width: 30px; - cursor: default; - margin: 0 12px; - transition: all .4s; - transform: scaleY(0); - opacity: .5; - transform-origin: center bottom; - direction: ltr; -} - -.mw-admin-stat-item-views { - background: #0086db; - /*transition: all .4s; - transform: scaleY(0); - transform-origin: center bottom;*/ -} - -.mw-admin-stat-item-uniques { - background: #005C97; - /*transition: all .4s; - transform: scaleY(0); - transform-origin: center bottom;*/ -} - -.active.mw-admin-stat-item { - transform: scaleY(1); - opacity: 1; -} - -.mw-admin-stat-item:first-child .mw-admin-stat-item-views { - background: #ff9c00 -} - -.mw-admin-stat-item:first-child .mw-admin-stat-item-uniques { - background: #df642b -} - -.mw-edit-content-item-admin, -.add-edit-category-form { - padding: 0 20px 20px; - background: white; - box-shadow: 0 0 6px rgba(0, 0, 0, .2); - border-radius: 0 0 2px 2px; -} - -/* -#users-admin { - padding: 30px 15px 15px 15px; -} -*/ - -.admin-section-bar { - width: 100%; - padding: 14px 14px; - background: white; - min-height: 50px; -} - -.admin-section-bar:after { - content: ''; - clear: both; - display: block; - width: 100%; -} - -.admin-section-bar * { - vertical-align: middle; -} - -.admin-section-bar h2 { - font-size: 13px; - color: #0e80e5; - font-weight: bold; - margin: 0; -} - -.admin-section-bar h2 span { - font-size: 22px; -} - -.admin-section-bar h2 span[class*='mai-'] { - font-size: 15px; - margin-right: 10px; -} - -.post-has-image-false .manage-post-item-title span { - display: none; -} - -#mw_index_contact_form .mw-ui-btn-nav { - -} - -.mw-ui-btn-medium > [class*="mai-"] { - font-size: 15px; - top: 0px; -} - -.admin-side-content { - /*max-width: 965px;*/ - width: 90%; - margin: auto; - padding: 50px 0; -} -.browser-liveedit .admin-side-content{ - padding-bottom: 0; -} - -.admin-side-content .mw-ui-table{ - table-layout: fixed; -} - -.mw-module-live-edit-settings .admin-side-content { - max-width: 100%; - width: 100%; - margin: 0; - padding: 0; -} - -.mw-module-live-edit-settings .mw-accordion-item.active .mw-ui-box-header.mw-accordion-title { - border-color: #d6d6d6; -} - -.mw-module-live-edit-settings .mw-accordion-item.active .mw-ui-box-header.mw-accordion-title, -.mw-module-live-edit-settings .mw-accordion-item.active .mw-ui-box-header.mw-accordion-content { - border-radius: 0; -} - -/* Typography */ -.right { - text-align: right !important; -} - -.left { - text-align: left !important; -} - -.center { - text-align: center !important; -} - -.justify { - text-align: justify !important; -} - -.bold { - font-weight: bold !important; -} - -.underline { - text-decoration: underline !important; -} - -.italic { - font-style: italic !important; -} - -.red { - color: #dd2229 !important; -} - -.darkred { - color: #BA0519 !important; -} - -.green { - color: green !important; -} - -.silver { - color: #666666 !important; -} - -.m-a { - margin: auto !important; -} - -.m-0 { - margin: 0px !important; -} - -.m-10 { - margin: 10px !important; -} - -.m-20 { - margin: 20px !important; -} - -.m-30 { - margin: 30px !important; -} - -.m-40 { - margin: 40px !important; -} - -.m-t-0 { - margin-top: 0px !important; -} - -.m-t-5 { - margin-top: 5px !important; -} - -.m-t-10 { - margin-top: 10px !important; -} - -.m-t-20 { - margin-top: 20px !important; -} - -.m-t-30 { - margin-top: 30px !important; -} - -.m-t-40 { - margin-top: 40px !important; -} - -.m-t-50 { - margin-top: 50px !important; -} - -.m-t-60 { - margin-top: 60px !important; -} - -.m-t-70 { - margin-top: 70px !important; -} - -.m-l-10 { - margin-left: 10px !important; -} - -.m-b-0 { - margin-bottom: 0px !important; -} - -.m-b-10 { - margin-bottom: 10px !important; -} - -.m-b-20 { - margin-bottom: 20px !important; -} - -.m-b-30 { - margin-bottom: 30px !important; -} - -.m-b-40 { - margin-bottom: 40px !important; -} - -.m-b-50 { - margin-bottom: 50px !important; -} - -.m-b-60 { - margin-bottom: 60px !important; -} - -.m-b-70 { - margin-bottom: 70px !important; -} - -.p-0 { - padding: 0px !important; -} - -.p-10 { - padding: 10px !important; -} - -.p-20 { - padding: 20px !important; -} - -.p-30 { - padding: 30px !important; -} - -.p-40 { - padding: 40px !important; -} - -.p-t-0 { - padding-top: 0px !important; -} - -.p-t-5 { - padding-top: 5px !important; -} - -.p-t-10 { - padding-top: 10px !important; -} - -.p-t-20 { - padding-top: 20px !important; -} - -.p-t-30 { - padding-top: 30px !important; -} - -.p-t-40 { - padding-top: 40px !important; -} - -.p-t-50 { - padding-top: 50px !important; -} - -.p-t-60 { - padding-top: 60px !important; -} - -.p-t-70 { - padding-top: 70px !important; -} - -.p-b-0 { - padding-bottom: 0px !important; -} - -.p-b-10 { - padding-bottom: 10px !important; -} - -.p-b-20 { - padding-bottom: 20px !important; -} - -.p-b-30 { - padding-bottom: 30px !important; -} - -.p-b-40 { - padding-bottom: 40px !important; -} - -.p-b-50 { - padding-bottom: 50px !important; -} - -.p-b-60 { - padding-bottom: 60px !important; -} - -.p-b-70 { - padding-bottom: 70px !important; -} - -.r-15 { - border-radius: 15px; -} - -.m-r-10 { - margin-right: 10px; -} - -.m-r-5 { - margin-right: 5px; -} - -/****************************** ***************************** -***************************** Petko ***************************** -***************************** ***************************** */ - -/* Tables */ -.table-style-2.layout-auto, -.table-style-3.layout-auto { - table-layout: auto; -} - -.table-style-2 tr { - border: 1px solid #ebebeb; - background: #fafafa; -} - -.table-style-2 tr:hover { - background: #fff; -} - -.table-style-2 a { - color: #0086db; -} - -.table-style-2 thead tr th { - font-size: 11px; - text-transform: uppercase; - font-weight: bold; -} - -.table-style-2 tr:hover { - border-left: 1px solid #0086db; -} - -.table-style-2 tr td, -.table-style-2 tr th { - border-right: 0 !important; - border-left: 0 !important; -} - -.table-style-2 tr td:last-of-type, -.table-style-2 tr th:last-of-type { - border-right: 1px solid #ebebeb !important; -} - -.table-style-2 tr td:first-of-type { - border-left: 1px solid #ebebeb; -} - -.table-style-2 tr td { - padding: 12px; -} - -.table-style-2 thead { - margin-bottom: 10px; -} - -.table-style-3 tr { - border: 1px solid #ebebeb; - background: #fff; -} - -.table-style-3 tr th { - border-right: 0 !important; - border-left: 0 !important; -} - -.table-style-3 tr th:last-of-type { - border-right: 1px solid #ebebeb !important; -} - -.table-style-3 tr td:first-of-type { - border-left: 1px solid #ebebeb; -} - -.table-style-3 tr td { - padding: 12px 25px; -} - -.table-style-3 tr th { - padding: 15px 25px; -} - -.table-style-3 thead { - margin-bottom: 10px; -} - -.table-style-3 thead tr th { - background: #fff !important; - color: #909090; - -} - -.table-style-3 tr:nth-child(odd) { - background: #fafafa; -} - -.table-style-3 tr:nth-child(even) { - background: #fff; -} - -.table-style-3 .text-center { - text-align: center; -} - -.table-style-3 th h3 { - font-size: 18px; - color: #2b2b2b; -} - -/* Forms */ -.element-block { - display: block; - width: 100%; -} - -/*.form-new-style input, .form-new-style textarea, .form-new-style select {*/ -/*border-color: #c2c2c2;*/ -/*padding: 8px;*/ -/*height: 36px !important;*/ -/*}*/ - -.form-new-style label { - font-size: 13px; - color: #2b2b2b; - font-weight: bold; -} - -/* UI Box */ -.mw-ui-settings-box { - background: #fafafa; - padding: 0px 25px; - margin-bottom: 10px; -} - -.mw-ui-settings-box.box-white { - background: #fff; -} - -.mw-ui-settings-box.box-enabled { - background: rgba(170, 237, 154, 0.18); -} - -.mw-ui-settings-box.box-disabled { - background: rgba(255, 192, 210, 0.18); -} - -.clearfix { - clear: both; -} - -.inline-switch { - margin-top: 9px; - margin-left: 20px; -} - -.disabled-and-enabled-label { - padding: 10px 0; - font-weight: bold; -} - -/* Modals */ -.mw_modal.mw_modal_default { - background: #fafafa; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - box-shadow: 0 0 27px -20px #111; -} - -.mw_modal.mw_modal_default .mw_modal_container { - box-shadow: 0 0 27px -20px #111; -} - -.mw_modal.mw_modal_default .mw_modal_title { - margin: 4px 0 0px 14px; -} - -.mw_modal.mw_modal_default .mw_modal_toolbar { - background: #2b2b2b; - padding: 8px 10px; - height: 38px; - background-image: none !important; -} - -.mw_modal.mw_modal_default .mw_modal_toolbar .mw_modal_title { - font-size: 13px; -} - -.mw_modal.mw_modal_default .mw_modal_toolbar .mw-modal-close { - top: 7px; - right: 8px; - border: 0; -} - -.mw_modal.mw_modal_default .mw_modal_container { - padding: 30px 50px; - background: #fafafa; -} - -.action-buttons { - text-align: center; -} - -.action-buttons .act { - color: #666666; - font-weight: bold; - padding: 0 3px; - cursor: pointer; -} - -.action-buttons .act.act-edit { - -} - -.action-buttons .act.act-remove { - background: none; - border: 0; -} - -.action-buttons .act.act-remove:hover { - color: #df332b; -} - -@media screen and (max-width: 767px) { - .action-buttons a, - .action-buttons button { - margin: 5px 0; - } -} - -/* Shipping */ -.mw-shipping-items .shipping-country-label { - color: #2b2b2b; - font-size: 13px; - font-weight: 500; -} - -.mw-shipping-items input, -.mw-shipping-items select, -.mw-shipping-items textarea { - background-color: #f8f8f8; - border-color: #c2c2c2; -} - -.mw-shipping-items .input-with-currency input, -.mw-shipping-items .input-with-currency input:focus { - border-left: 0; - margin-left: -6px; - z-index: 1; - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; - padding-left: 5px; - outline: none !important; - outline-color: transparent; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - white-space: nowrap; -} - -.mw-shipping-items .input-with-currency span { - background-color: #f8f8f8; - border: 1px solid #c2c2c2; - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - padding: 8px 2px 8px 10px; - z-index: 2; -} - -.mw-shipping-items .mw-ui-label-help { - font-size: 12px; - color: #2b2b2b; - font-style: italic; - margin-top: 10px; -} - -.mw-shipping-items .toggle-item .hide-item.hidden { - display: none; -} - -.mw-shipping-items .toggle-item { - cursor: pointer; -} - -.mw-shipping-items .mw-ui-table td, -.mw-shipping-items .mw-ui-table tfoot td, -.mw-shipping-items .mw-ui-table thead th { - padding: 20px 10px; -} - -.mw-shipping-items .closed-fields .mw-ui-table td, -.mw-shipping-items .closed-fields .mw-ui-table tfoot td, -.mw-shipping-items .closed-fields .mw-ui-table thead th { - border: 0; -} - -.mw-shipping-items .mw-ui-table tr:nth-child(even) td { - /*background: #f5f5f5;*/ -} - -.mw-shipping-items .mw-ui-table > tbody > tr > td:first-child, -.mw-shipping-items .mw-ui-table > tfoot > tr > td:first-child { - width: 220px; -} - -.mw-shipping-items.add-new-country { - display: none; -} - -.mw-shipping-items.add-new-country .mw-ui-table tr:nth-child(even) td { - background: none; -} - -.new-close.mw-icon-close { - visibility: hidden; - color: #0086db; - background: #fff; - padding: 6px 5px; - -webkit-border-radius: 52px; - -moz-border-radius: 52px; - border-radius: 52px; - font-size: 10px !important; - border: 1px solid #0086db; - position: absolute; - right: 20px; - top: 20px; - cursor: pointer; - font-weight: bold; - width: 21px; - height: 21px; -} - -.new-close.mw-icon-close:not(.module-uninstall-btn) { - padding-top: 4px; - top: 21px; - -} - -.comment-item-holder-inner .new-close.mw-icon-close { - padding: 4px 5px; - -} - -.new-close.mw-icon-close:not(.module-uninstall-btn):before { - content: "\0139"; -} - -.admin-shipping-table .new-close.mw-icon-close:not(.module-uninstall-btn):before { - content: "\0111" !important; -} - -.active .new-close.mw-icon-close { - visibility: visible; -} - -.new-close.mw-icon-close:hover { - color: #fff; - background: #0086db; - border: 1px solid #0086db; -} - -.switcher-label-left { - font-weight: bold; - padding: 10px; - display: inline-block; -} - -.save_shipping_btn { - position: absolute; - right: 0; - top: 0; - float: right; - margin-top: 23px; - margin-right: 50px; - /*border-radius: 30px;*/ -} - -.mw-shipping-items .new-close { - margin-top: 10px; -} - -@media screen and (max-width: 1600px ) { - - .mw-shipping-items select { - max-width: 200px; - } - - /* .mw-shipping-items .shipping-country-setting .mw-ui-col, - .mw-shipping-items .shipping-cost{ - display: block !important; - margin-bottom: 10px; - - } - - .mw-shipping-items .shipping-country-setting .mw-ui-col .mw-ui-col-container{ - padding-left: 0; - }*/ - -} - -@media screen and (max-width: 1100px ) { - - .mw-shipping-items .mw-ui-table > tbody > tr > td:first-child, .mw-shipping-items .mw-ui-table > tfoot > tr > td:first-child { - width: 160px; - } -} - -/*@media screen and (max-width: 1199px ) {*/ -@media screen and (max-width: 991px ) { - - .mw-shipping-items .shipping_dimensions .pull-left { - display: block; - width: 100%; - margin-bottom: 0px; - padding: 0 !important; - } - - .mw-shipping-items td { - border: 0; - } - - .shipping-country-row + .shipping-country-row, - .shipping-country-row { - padding: 0 0 15px 0; - } - - .switcher-label-left { - padding: 0; - } - - .save_shipping_btn { - margin-top: 20px; - } - - .mw-shipping-items .shipping-country-holder .mw-icon-close { - margin-top: 0; - } - - .shipping-discount-row { - margin-top: 20px; - padding: 0 0 15px 0; - display: block; - } -} - -@media screen and (max-width: 768px ) { - .mw-shipping-items .shipping_dimensions .pull-left { - display: block; - width: 100%; - margin-bottom: 0px; - padding: 0 !important; - } - - .mw-shipping-items .shipping_dimensions .pull-left .mw-ui-label { - padding: 0; - } - - .mw-shipping-items .shipping_dimensions .pull-left:nth-child(2) { - margin-bottom: 10px; - } - - .mw-shipping-items select { - max-width: 100%; - width: 100%; - } - - .mw-shipping-items td { - border: 0; - } - - .shipping-country-row + .shipping-country-row, - .shipping-country-row { - margin-top: 0; - padding: 0 0 15px 0; - } - -} - -/* Orders */ -.orders-holder { -} - -.orders-holder .order-holder:hover:before { - display: block; - left: 0; - top: 0; - bottom: 0; - border-left: 3px solid #0086db; - content: ''; - min-height: 100px; - position: absolute; -} - -.orders-holder .order-holder { - clear: both; - position: relative; - min-height: 85px; - background-color: #fafafa; - width: 100%; - border: 1px solid #ededed; - -webkit-transform: scale(1, 1); - -moz-transform: scale(1, 1); - -ms-transform: scale(1, 1); - -o-transform: scale(1, 1); - transform: scale(1, 1); - -webkit-transition: transform 0.5s ease-in-out; - -moz-transition: transform 0.5s ease-in-out; - -ms-transition: transform 0.5s ease-in-out; - -o-transition: transform 0.5s ease-in-out; - transition: transform 0.5s ease-in-out; - padding: 5px 0; -} - -.orders-holder .order-holder.active { - -webkit-transform: scale(1.03, 1); - -moz-transform: scale(1.03, 1); - -ms-transform: scale(1.03, 1); - -o-transform: scale(1.03, 1); - transform: scale(1.03, 1); - -webkit-transition: transform 0.5s ease-in-out; - -moz-transition: transform 0.5s ease-in-out; - -ms-transition: transform 0.5s ease-in-out; - -o-transition: transform 0.5s ease-in-out; - transition: transform 0.5s ease-in-out; - background: #fff; - border-color: #0086db; -} - -.orders-holder .order-holder.active:hover:before { - border-left: 0; -} - -.orders-holder .order-holder .order-data { - display: table; - -} - -.orders-holder .order-holder .order-data > div { - display: inline-block; - width: auto; - padding: 10px 35px; - vertical-align: middle; -} - -.orders-holder .order-holder .order-data .order-number a { - color: #0086db; - font-size: 14px; -} - -.orders-holder .order-holder.active .order-data .product-name { - font-weight: bold; -} - -.orders-holder .order-holder .order-data .product-name, -.orders-holder .order-holder .order-data .product-name a { - color: #0086db; - font-size: 13px; - min-width: 300px; -} - -.orders-holder .order-holder .order-data-more { - display: none; - padding: 0 35px; - padding-bottom: 20px; -} - -.orders-holder .order-holder .order-data-more .title { - color: #0086db; - font-size: 13px; - font-weight: bold; - margin-bottom: 25px; -} - -.orders-holder .order-holder .order-data-more .pull-left { - padding-right: 50px; - min-width: 320px; -} - -.orders-holder .order-holder .order-data-more .box { - border-bottom: 1px solid #ebebeb; - margin-bottom: 15px; -} - -.orders-holder .order-holder .order-data-more .box p { - margin-bottom: 10px; -} - -.orders-holder .order-holder .order-data-more .box .label { - color: #929292; - font-size: 13px; -} - -.orders-holder .order-holder .order-data-more .box .content { - color: #2b2b2b; - font-size: 13px; -} - -.orders-holder .order-holder .new-close { - margin-top: 0; - top: 15px; - right: 15px; - text-align: center; -} - -.orders-holder .order-holder .view-order-button { - margin-top: 10px; - font-size: 13px; -} - -.orders-holder .order-holder.active .is_paid { - font-weight: bold; -} - -.orders-holder .order-holder .not_paid { - /*color: red;*/ -} - -.orders-holder .order-holder .product-image .product-thumbnail-tooltip { - border: 1px solid #fff; -} - -.orders-holder .order-holder.active .product-image .product-thumbnail-tooltip { - border-color: #0086db; -} - -.orders-holder .order-holder .product-image { - position: relative; -} - -.orders-holder .order-holder .product-image .cnt-products { - width: 33px; - height: 33px; - padding: 9px 0; - text-align: center; - -webkit-border-radius: 40px; - -moz-border-radius: 40px; - border-radius: 40px; - background: #0086db; - color: #fff; - position: absolute; - font-size: 13px; - right: 26px; - bottom: 10px; - /*display: none;*/ -} - -.orders-holder .order-holder.active .product-image .cnt-products { - display: block; -} - -/* Comments */ -.comments-holder { -} - -.comments-holder .comment-holder:after { - display: block; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - content: ''; - cursor: pointer; -} - -.comments-holder .comment-holder.active:after { - display: none; -} - -.comments-holder .comment-holder:hover:before { - display: block; - left: 0; - top: 0; - bottom: 0; - border-left: 3px solid #0086db; - content: ''; - min-height: 100px; - position: absolute; -} - -.comments-holder .comment-holder { - clear: both; - position: relative; - min-height: 85px; - background-color: #fafafa; - width: 100%; - border: 1px solid #ededed; - -webkit-transform: scale(1, 1); - -moz-transform: scale(1, 1); - -ms-transform: scale(1, 1); - -o-transform: scale(1, 1); - transform: scale(1, 1); - -webkit-transition: transform 0.5s ease-in-out; - -moz-transition: transform 0.5s ease-in-out; - -ms-transition: transform 0.5s ease-in-out; - -o-transition: transform 0.5s ease-in-out; - transition: transform 0.5s ease-in-out; -} - -.comments-holder .comment-holder.active { - -webkit-transform: scale(1.03, 1); - -moz-transform: scale(1.03, 1); - -ms-transform: scale(1.03, 1); - -o-transform: scale(1.03, 1); - transform: scale(1.03, 1); - -webkit-transition: transform 0.5s ease-in-out; - -moz-transition: transform 0.5s ease-in-out; - -ms-transition: transform 0.5s ease-in-out; - -o-transition: transform 0.5s ease-in-out; - transition: transform 0.5s ease-in-out; - background: #fff; - border-color: #0086db; -} - -.comments-holder .comment-holder.active .mw-accordion-content { - display: block !important; -} - -.comments-holder .comment-holder.active:hover:before { - border-left: 0; -} - -.comments-holder .comment-holder .order-data { - width: 100%; -} - -.comments-holder .comment-holder .order-data > div { - display: inline-block; - width: auto; - padding: 10px 35px; - vertical-align: middle; -} - -.comments-holder .comment-holder .order-data .post-name, -.comments-holder .comment-holder .order-data .post-name a { - font-size: 16px; - color: #0086db; - min-width: 300px; - -} - -.comments-holder .comment-holder .order-data .post-name { - padding: 40px 0px; - min-width: 60%; - -} - -/*.comments-holder .comment-holder .order-data .post-name a {*/ -/*white-space: nowrap;*/ -/*overflow: hidden;*/ -/*text-overflow: ellipsis;*/ -/*}*/ - -.comments-holder .comment-holder .order-data .last-comment-date { - padding: 40px 100px 40px 20px; - -} - -.comments-holder .comment-holder .order-data-more { - display: none; - padding: 0 35px; -} - -.comments-holder .comment-holder .order-data-more .title { - color: #0086db; - font-size: 13px; - font-weight: bold; - margin-bottom: 25px; -} - -.comments-holder .comment-holder .order-data-more .pull-left { - padding-right: 50px; - min-width: 320px; -} - -.comments-holder .comment-holder .order-data-more .box { - border-bottom: 1px solid #ebebeb; - margin-bottom: 15px; -} - -.comments-holder .comment-holder .order-data-more .box p { - margin-bottom: 10px; -} - -.comments-holder .comment-holder .order-data-more .box .label { - color: #929292; - font-size: 13px; -} - -.comments-holder .comment-holder .order-data-more .box .content { - color: #2b2b2b; - font-size: 13px; -} - -/*.comments-holder .comment-holder .view-order-button {*/ -/*margin-top: 10px;*/ -/*font-size: 13px;*/ -/*}*/ - -.comments-holder .comment-holder.active .is_paid { - font-weight: bold; -} - -.comments-holder .comment-holder .not_paid { - /*color: red;*/ -} - -.comments-holder .comment-holder .article-image .comment-thumbnail-tooltip { - border: 1px solid #fff; - display: block; - width: 70px; - height: 70px; - background-position: center top; - background-repeat: no-repeat; - background-size: cover; -} - -.comments-holder .comment-holder.active .article-image .comment-thumbnail-tooltip { - border-color: #0086db; -} - -.comments-holder .comment-holder .article-image { - position: relative; - float: left; - width: 120px; - margin-bottom: 10px; -} - -.comments-holder .comment-holder .comment-image { - position: relative; - float: left; - width: 60px; - margin-bottom: 10px; -} - -.comments-holder .comment-holder .comment-image .comment-thumbnail-tooltip { - border: 1px solid #fff; - display: block; - width: 40px; - height: 40px; - background-position: center top; - background-repeat: no-repeat; - background-size: cover; - border-radius: 333px; -} - -.comments-holder .comment-holder .comment-image .comment-thumbnail-tooltip.mw-user-thumb { - padding: 6px; - color: #ffffff; - background-color: #c8c8c8; -} - -.comments-holder .comment-holder.active .comment-image .comment-thumbnail-tooltip { - border-color: #0086db; -} - -.comments-holder .comment-holder .comment_heading { - width: 100%; -} - -.comments-holder .comment-holder .comment_body { - width: 100%; -} - -.comments-holder .comment-holder .actions-holder { - float: left; - width: calc(100% - 60px); - width: -webkit-calc(100% - 60px); - margin-bottom: 10px; -} - -.comments-holder .comment-holder .actions-holder .date { - margin-top: 10px; - float: right; -} - -.comments-holder .comment-holder .actions-holder .mw-ui-link { - text-decoration: none; - font-size: 13px !important; - color: #0086db; -} - -.comments-holder .comment-holder .actions-holder .mw-ui-link.mw-btn-spam i { - color: #cfcfcf; -} - -.comments-holder .comment-holder .actions-holder .mw-ui-link.mw-btn-remove i { - color: #cfcfcf; -} - -.comments-holder .comment-holder .actions-holder i { - float: left; -} - -.comments-holder .comment-holder .author-name { - display: block; - font-size: 13px; - color: #2b2b2b; - margin-bottom: 10px; - margin-top: 2px; - margin-right: 7px; - -} - -.comments-holder .comment-holder .comment-wrapper { - margin: 0 -35px 20px -35px; - padding: 15px 35px 0 35px; -} - -.comments-holder .comment-holder .comment-wrapper:nth-of-type(odd) { - /*background: #f5f5f5;*/ -} - -.comments-holder .comment-holder .comment-wrapper .reply-form { - display: none; -} - -.comments-holder .comment-holder .author-name > span { - color: #0086db; - font-weight: bold; - -} - -.comments-holder .comment-holder .reply-holder { - border-top: 1px solid #eaeaea; - border-bottom: 1px solid #eaeaea; - margin: 30px -35px 0 -35px; - padding: 10px 35px; -} - -.comments-holder .comment-holder .reply-holder .comment-image .comment-thumbnail-tooltip { - width: 30px; - height: 30px; -} - -.comments-holder .comment-holder .reply-holder .comment-image .comment-thumbnail-tooltip.mw-user-thumb { - padding: 4px; - font-size: 19px; -} - -.comments-holder .comment-holder .comment_body textarea { - width: 100%; - max-width: 100%; - outline: 0; - background: rgba(0, 134, 219, 0.07); - padding: 10px; - border: 0; - min-height: 100px; - margin-bottom: 10px; -} - -.comments-holder .comment-holder input { - width: 100%; - max-width: 100%; - outline: 0; - background: rgba(0, 134, 219, 0.07); - padding: 10px; - border: 0; -} - -.comments-holder .comment-holder .reply-holder textarea { - color: #2b2b2b; - border: 0; - background: transparent; - height: 30px; - width: calc(100% - 180px); - outline: 0; - padding: 8px 0; -} - -@media screen and (max-width: 767px) { - .comments-holder .comment-holder .order-data .article-image { - display: none; - } - - .comments-holder .comment-holder .order-data .post-name { - padding: 10px 35px; - width: 100%; - } - - .comments-holder .comment-holder .order-data > div { - width: 100%; - } - - .comments-holder .comment-holder .order-data .last-comment-date { - padding: 10px 35px 10px 35px; - } -} - -/* Form messages */ -.messages-holder { -} - -.messages-holder .message-holder:hover:before { - display: block; - left: 0; - top: 0; - bottom: 0; - border-left: 3px solid #0086db; - content: ''; - min-height: 82px; - position: absolute; -} - -.messages-holder .message-holder { - clear: both; - position: relative; - min-height: 85px; - background-color: #fafafa; - width: 100%; - border: 1px solid #ededed; - -webkit-transform: scale(1, 1); - -moz-transform: scale(1, 1); - -ms-transform: scale(1, 1); - -o-transform: scale(1, 1); - transform: scale(1, 1); - -webkit-transition: transform 0.5s ease-in-out; - -moz-transition: transform 0.5s ease-in-out; - -ms-transition: transform 0.5s ease-in-out; - -o-transition: transform 0.5s ease-in-out; - transition: transform 0.5s ease-in-out; - padding: 5px 0; -} - -.messages-holder .message-holder.active { - -webkit-transform: scale(1.03, 1); - -moz-transform: scale(1.03, 1); - -ms-transform: scale(1.03, 1); - -o-transform: scale(1.03, 1); - transform: scale(1.03, 1); - -webkit-transition: transform 0.5s ease-in-out; - -moz-transition: transform 0.5s ease-in-out; - -ms-transition: transform 0.5s ease-in-out; - -o-transition: transform 0.5s ease-in-out; - transition: transform 0.5s ease-in-out; - background: #fff; - border-color: #0086db; -} - -.messages-holder .message-holder.active:hover:before { - border-left: 0; -} - -.messages-holder .message-holder .message-data { - display: table; - -} - -.messages-holder .message-holder .message-data > div { - display: inline-block; - width: auto; - padding: 0px 35px; - vertical-align: middle; -} - -.messages-holder .message-holder.active .message-data .product-name { - font-weight: bold; -} - -.messages-holder .message-holder .message-data .product-name, -.messages-holder .message-holder .message-data .product-name a { - color: #0086db; - font-size: 13px; - min-width: 300px; -} - -.messages-holder .message-holder .message-data-more { - display: none; - padding: 0 35px; - padding-bottom: 20px; -} - -.messages-holder .message-holder .message-data-more .title { - color: #0086db; - font-size: 13px; - font-weight: bold; - margin-bottom: 25px; -} - -.messages-holder .message-holder .message-data-more .pull-left { - padding-right: 50px; - min-width: 320px; - max-width: 33%; -} - -.messages-holder .message-holder .message-data-more .box { - border-bottom: 1px solid #ebebeb; - margin-bottom: 15px; -} - -.messages-holder .message-holder .message-data-more .box p { - margin-bottom: 10px; -} - -.messages-holder .message-holder .message-data-more .box .label { - color: #929292; - font-size: 13px; -} - -.messages-holder .message-holder .message-data-more .box .content { - color: #2b2b2b; - font-size: 13px; -} - -.messages-holder .message-holder .new-close { - margin-top: 0; - top: 15px; - right: 15px; -} - -.messages-holder .message-holder .view-order-button { - margin-top: 10px; - font-size: 13px; -} - -.messages-holder .message-holder .product-image .product-thumbnail-tooltip { - border: 1px solid #fff; - text-align: center; - padding-top: 18px; -} - -.messages-holder .message-holder.active .product-image .product-thumbnail-tooltip { - /*border-color: #0086db;*/ -} - -.messages-holder .message-holder .product-image .product-thumbnail-tooltip i { - color: #c8c8c8; - font-size: 28px; -} - -.messages-holder .message-holder.active .product-image .product-thumbnail-tooltip i { - color: #0086db; -} - -.messages-holder .message-holder .product-image { - position: relative; -} - -.messages-holder .message-holder .product-image .cnt-products { - width: 33px; - height: 33px; - padding: 9px 0; - text-align: center; - -webkit-border-radius: 40px; - -moz-border-radius: 40px; - border-radius: 40px; - background: #0086db; - color: #fff; - position: absolute; - font-size: 13px; - right: 26px; - bottom: 10px; - /*display: none;*/ -} - -.messages-holder .message-holder.active .product-image .cnt-products { - display: block; -} - -/* Other */ -.admin-side-content { - max-width: 1100px; - margin: 0 50px; -} - -.shipping-cost { - min-width: 100px; -} - -#manage-orders-menus { - border: 0; -} - -#bulk-actions { - width: 150px; - margin-left: 15px; -} - -#bulk-actions li { - padding: 0; -} - -.mw-tree .pages_tree_item .pages_trash_link:before { - content: '\0045'; -} - -@media screen and (max-width: 991px) { - .manage-posts-holder, - .manage-toobar { - width: 98%; - } - - .admin-side-content { - width: 98%; - max-width: 98%; - margin: 0 auto; - padding-top: 0; - } - - .manage-posts-holder { - width: 100%; - } -} - -@media screen and (max-width: 767px) { - .manage-posts-holder, .manage-toobar { - width: 100%; - } - - .admin-manage-toolbar .mw-ui-row, - .admin-manage-toolbar .mw-ui-row > .mw-ui-col { - float: none; - width: 100%; - display: block; - text-align: center; - } - - .admin-manage-toolbar .pull-right { - float: none; - margin: 0 auto; - right: auto; - left: auto; - width: 100%; - } - - .admin-manage-toolbar .top-search { - float: none; - margin: 0 auto; - right: auto; - left: auto; - margin-top: 10px; - } -} - -input.silver-field, -textarea.silver-field, -select.silver-field { - background: #f8f8f8; - width: 100%; - color: #323232; - border-color: #c2c2c2; -} - -.block-field { - width: 100%; -} - -.mw-ui-box-silver-blue { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - background-color: #fafafa; -} - -.mw-ui-box-silver-blue .mw-ui-box-header { - color: #0086db; - font-size: 13px; - font-weight: bold; - cursor: pointer; - padding: 20px; -} - -/*.mw-ui-box-silver-blue:not(.active):hover {*/ -/*border-bottom: 1px solid #0086db;*/ -/*}*/ - -.mw-ui-box-silver-blue .mw-ui-box-header i { - font-size: 16px; - float: left; - display: block; - margin-right: 10px; -} - -.mw-ui-box-silver-blue .mw-ui-box-header .header-holder:after { - display: inline-block; - font-family: 'Microweber'; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - margin-left: 7px; -} - -.mw-ui-box-silver-blue.active .mw-ui-box-header .header-holder:after { - content: "\f104"; -} - -.mw-ui-box-silver-blue:not(.active) .mw-ui-box-header .header-holder:after { - content: "\f10a"; -} - -.mw-ui-box-silver-blue .mw-ui-box-content { - background-color: #fafafa; - padding: 20px 20px; - -} - -.mw-ui-box-silver-blue .header-holder { - padding-bottom: 0px; - line-height: 16px; -} - -.mw-ui-box-silver-blue.active .header-holder { - border-bottom: 1px solid #0086db; - width: 100%; - padding-bottom: 15px; -} - -.mw-blue { - color: #0086db; -} - -.mw-ui-link.mw-blue { - text-decoration: none; -} - -.mw-ui-link.mw-blue:hover { - text-decoration: underline; -} - -.mw-switch { - line-height: 26px; -} - -.mw-ui-category-selector { - margin-top: 10px; -} - -.mw-ui-category-selector li { - padding: 0; -} - -#mw-ui-category-selector-manage > ul > li > a { - background: white; - padding-left: 10px !important; -} - -#mw-ui-category-selector-manage > ul > li a { - padding: 5px 0 5px 32px; -} - -#mw-ui-category-selector-manage > ul > li > ul { - /*margin-left: 30px;*/ -} - -#mw-ui-category-selector-manage > ul > li > ul ul { - margin-left: 24px; -} - -#pages_edit_container .mw-ui-category-selector { - height: calc(100vh - 400px); - height: -webkit-calc(100vh - 400px); -} - -.stats-title { - color: #0086db; -} - -.stats-title span { - line-height: 14px; - font-size: 14px; - font-weight: bold; - float: left; - padding-top: 10px; -} - -.stats-title i { - padding-top: 10px; - font-size: 18px; - margin-right: 8px; - line-height: 14px; - float: left; - margin-left: 9px; -} - -.header-top-center-notifs .center { - width: 620px; -} - -.client-remove { - color: red; - cursor: pointer; - margin-left: 10px; - font-size: 16px; -} - -.table-clients tr:hover a.mw-ui-btn-info.mw-ui-btn-outline { - background-color: #0086db; - color: #fff; -} - -.table-clients .mw-user-thumb { - /*border: 1px solid #0086db;*/ - padding: 6px; - color: #ffffff; - background-color: #c8c8c8; - display: block; - width: 40px; - height: 40px; - background-position: center top; - background-repeat: no-repeat; - background-size: cover; - border-radius: 333px; - margin: 0 auto; - padding: 13px 12px; -} - -#orders-info-row .mw-ui-table-basic tr:first-of-type td { - border-top: 0; -} - -#orders-info-row .table-responsive { - padding-bottom: 0; -} - -#orders-info-row .table-responsive .mw-order-item-image { - margin: 0; -} - -#orders-info-row .table-responsive thead { - text-transform: uppercase; -} - -#orders-info-row .table-responsive thead th { - color: #0086db !important; -} - -.mw-order-product-custom-fields > ul { - padding-left: 25px; -} - -.mw-order-product-custom-fields ul li { - padding: 5px 0; - list-style-type: none; -} - -.mw-order-product-custom-fields ul li span { - font-weight: bold; -} - -#mw-admin-edit-order .mw-ui-table { - table-layout: auto; -} - -.admin-side-content-flat:after { - content: ' '; - display: block; - clear: both; - height: 1px; -} - -.layouts_box_holder { - margin-bottom: 20px; -} - -.layout-selector-footer { - position: fixed; - bottom: 0; - right: 50px; - left: 280px; - padding: 5px 10px; - background: #fff; - box-shadow: 0 -2px 10px rgba(0, 0, 0, .3); -} - -.hidden { - display: none !important; -} - -.mw-live-edit-top-bar-button i { - margin: 0 !important; -} - -.mw-live-edit-top-bar-button span { - margin-left: 7px; -} - -.mw-site-theme-selector { - background-color: #fff; -} - -.layouts_box_holder_big .admin-section-bar { - width: 100%; - padding: 0 5px; - background: white; - height: 40px; -} - -.mw-custom-field-title { - height: 30px; - display: block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - -} - -@media screen and (max-width: 991px) { - #set-shipping-to-country .enable-shipping-label, .set-shipping-to-country .enable-shipping-label { - display: none; - } - - .mw-set-payment-options .buttons-holder { - margin-top: 12px; - text-align: center; - width: 100%; - } - - .mw-set-payment-options .buttons-holder .pull-right, - .mw-set-payment-options .buttons-holder .pull-left { - float: none !important; - } -} - -.otab { - padding: 0 !important; -} - -.layout-selector-footer .mw-ui-link { - padding: 10px; -} - -@media screen and (max-width: 991px) { - .layout_selector_wrap { - padding-left: 10px; - padding-right: 10px; - } - - .layout-selector-footer { - width: 100%; - left: 0; - right: 0; - } -} - -.table-style-2.mw-mobile-table { - border: 0; -} - -.table-style-2.mw-mobile-table > tbody > tr:last-child > td:last-child, -.table-style-2.mw-mobile-table > tfoot > tr:last-child > td:last-child { - border-right: 0 !important; -} - -@media screen and (max-width: 400px) { - .table-style-2.mw-mobile-table input { - width: 100%; - } -} - -@media screen and (max-width: 480px) { - .module-settings-group-advanced .mw-ui-btn-nav-tabs .mw-ui-btn { - width: 50%; - } -} - -@media screen and (min-width: 481px) and (max-width: 991px) { - .module-settings-group-advanced .mw-ui-btn-nav-tabs .mw-ui-btn { - width: 25%; - } -} - -@media screen and (min-width: 992px) { - .module-settings-group-advanced .mw-ui-btn-nav-tabs .mw-ui-btn { - /*width: 20%;*/ - } -} - -.shipping-country-row .new-close.mw-icon-close { - visibility: visible; -} - -.mw-fields.mw-fields-upload-buttons input.mw-ui-field { - width: 66%; -} - -.mw-fields input.mw-ui-field, -.mw-fields textarea.mw-ui-field, -.mw-fields select.mw-ui-field { - background: #f8f8f8; - color: #323232; - border-color: #c2c2c2; -} - -.mw-fields textarea.mw-ui-field { - min-height: 70px; -} - -.mw-fields input.mw-ui-field:focus, -.mw-fields textarea.mw-ui-field:focus { - background: #fff; - border-color: #82c4ed; - -webkit-box-shadow: 0 0 10px #82c4ed; - box-shadow: 0 0 10px #82c4ed; -} - -.mw-fields .mw-ui-field-holder .mw-ui-label { - font-weight: bold; -} - -.mw-fields .mw-ui-btn { - margin: 0 10px; -} - -#white_label_settings_holder .mw-ui-box-content { - padding: 25px 45px; -} - -#white_label_settings_holder .mw-ui-field { - max-width: 90%; -} - -#white_label_settings_holder .mw-iframe-editor { - min-height: 150px; -} - -.mw-help-tip { - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; - background: #999999; - color: #f5f5f5; - width: 16px; - height: 16px; - display: inline-block; - text-align: center; - padding: 2px 0px; - font-size: 10px; - cursor: pointer; -} - -.mw-help-tip:hover { - background: #0086db; - color: #f5f5f5; -} - -@media screen and (max-width: 767px) { - #edit-content-btn { - margin-top: 10px; - margin-left: 0 !important; - } -} - -.module-updates .admin-section-bar h2 { - display: inline-block; -} - -.module-updates .admin-section-bar #number_of_updates { - top: 11px; - right: 0; -} - -.mobile-live-edit-btn { - padding: 4px 4px 3px 5px; - margin-top: 10px; - margin-right: 10px; -} - -.mobile-live-edit-btn i { - font-size: 16px; -} - -.mw-advanced-settings { - text-align: center; -} - -.mw-advanced-settings ul { - padding: 20px; -} - -.mw-advanced-settings ul li { - list-style-type: none; - margin-top: 15px; -} - -.mw-advanced-settings ul li a { - display: flex; -} - -.mw-advanced-settings .box-title i { - font-size: 24px; - height: 24px; - margin-bottom: 10px; - display: block; -} - -#mw-admin-edit-category-item-module-categories-selector .mw-ui-check:before { - - display: none; -} - -.layouts_box_holder_small .section-header { - padding: 0; - height: 38px; -} - -/*#settings-container .mw-ui-box.mw-ui-box-content { - border: 0; - padding: 0; -}*/ - -.logo-module-types .mw-ui-row-nodrop { - margin-bottom: 20px; -} - -.logo-module-types .mw-ui-row-nodrop .type-title { - font-size: 18px; -} - -.logo-module-types .mw-ui-row-nodrop .type-title small { - font-size: 12px; -} - -.mw-ui-btn-nav-tabs-new, -.mw-ui-btn-nav-tabs { - clear: both; - display: block; -} - -.module-layouts-viewer { - column-count: 2; - column-gap: 1em; - margin-top: 20px; -} - -.module-layouts-viewer .default-layout { - position: absolute; - background: #0086db; - color: #fff; - padding: 5px; - font-weight: bold; - font-size: 10px; -} - -.module-layouts-viewer .screenshot, -.current-template .screenshot { - display: inline-block; - margin: 0 0 1em; - width: 100%; - border: 1px solid #2a2a2a; -} - -.module-layouts-viewer .screenshot.active { - border: 1px solid #0086db; -} - -.module-layouts-viewer .screenshot .holder img, -.current-template-modules .screenshot .holder img { - display: block; -} - -.module-layouts-viewer .screenshot .holder .title, -.current-template .screenshot .holder .title { - background: #2a2a2a; - color: #fff; - padding: 5px 8px; - font-size: 12px; -} - -.module-layouts-viewer .screenshot.active .holder .title { - background: #0086db; -} - -.module-layouts-viewer .screenshot img, -.current-template .screenshot img { - max-width: 100%; - width: 100%; -} - -.current-template span.title, -.current-template-modules span.title { - color: #575757; - font-size: 15px; - display: block; - margin: 20px 0 10px 0; -} - -/*.current-template-modules { - padding: 0 10px -}*/ - -.mw-menu-selector-list li + li { - padding-top: 5px; -} - -.mw-module-live-edit-settings .mw-accordion-item .mw-ui-box-header.mw-accordion-title { - padding: 12px; - font-size: 14px; - font-weight: 600; - padding: 12px 12px 12px 22px; -} - -.mw-module-live-edit-settings .mw-accordion-item.active .mw-ui-box-header.mw-accordion-title { - background: #0086db; - color: #fff; -} - -.mw-module-live-edit-settings .mw-accordion-item .mw-ui-box-header.mw-accordion-title i { - font-size: 20px; - margin-right: 14px; -} - -.mw-module-live-edit-settings .mw-accordion-item.active .mw-ui-box-header.mw-accordion-title i { - color: #fff; -} - -.mw-module-live-edit-settings .mw-accordion-item.active .mw-ui-box-header.mw-accordion-title:after { - color: #fff; -} - -/*.mw-module-live-edit-settings .mw-accordion-item .mw-accordion-content {*/ -/*background: transparent;*/ -/*}*/ - -.mw-live-edit-module-manage-and-list-top { - padding: 10px 10px; - text-align: right; - box-sizing: border-box; -} - -.mw-live-edit-module-manage-and-list-top .mw-ui-btn { - margin: 5px 5px; -} - -#admin-main-tree .mw-tree-item-title { - width: 100%; -} - -.prop-ui-field-holder > .mw-ui-box-content { - padding-left: 0; - padding-right: 0; -} - -.mw-module-settings-box .upload-button-prop.mw-ui-box .mw-icon-upload { - text-shadow: 0 0 4px rgba(0, 0, 0, 0.52); - color: white; -} - -.mw-module-settings-box .upload-button-prop.mw-ui-box .mw-ui-btn { - border-color: transparent; -} - -.mw-module-settings-box .upload-button-prop.mw-ui-box .mw-ui-btn .mw-badge { - top: -12px; - right: -12px; -} - -.mw-module-settings-box .upload-button-prop.mw-ui-box { - display: inline-block; - margin: 5px; - width: 135px; - height: 100px; -} - -.mw-module-settings-box .upload-button-prop.mw-ui-box .mw-ui-btn { - position: absolute; - top: 0; - left: 0; - width:100%; - height: 100%; -} -.mw-module-settings-box .upload-button-prop.mw-ui-box .mw-ui-btn > span{ - top:50%; - transform: translateY(-50%); -} - -.mw-module-settings-box + .mw-module-settings-box { - margin-top: 20px; -} - -.gateway-icon-title img { - max-width: 100px; - max-height: 30px; -} - -#live_edit_side_holder .bootstrap-tagsinput, -#settings-container .bootstrap-tagsinput { - width: 100%; -} - -.mw-admin-menu-sidebar-logout-desktop a { - border-bottom: 0 !important; -} - -.mw-admin-menu-sidebar-logout-desktop a strong { - top: 0 !important; - margin-left: -14px; -} - -.mw-admin-menu-sidebar-logout-desktop a i { - font-size: 24px !important; -} - -.mw-admin-menu-sidebar-logout-desktop a:after { - display: none !important; -} - -.mw-admin-menu-sidebar-logout-mobile { - display: none; -} - -@media screen and (max-width: 767px) { - .mw-admin-menu-sidebar-logout-mobile { - display: block; - } - - .mw-admin-menu-sidebar-logout-desktop { - display: none; - } -} - -#select-post-author .mw-ui-field { - width: 100%; -} - -.mw-ui-box-silver-blue .mw-ui-box-header i.material-icons { - font-size: 22px; -} - -.mw-ui-box-silver-blue .mw-ui-box-header i[class*="mw-icon-"] { - font-size: 18px; -} - - -.fixed-side-column-container, -#mw-admin-main-menu{ - overflow: hidden; -} - -#mw-admin-main-menu:hover, -.fixed-side-column-container:hover{ - overflow-x: hidden; - overflow-y: auto; -} - -#mw-admin-main-menu::-webkit-scrollbar, -.fixed-side-column-container::-webkit-scrollbar { - width: 8px; -} - -#mw-admin-main-menu::-webkit-scrollbar-track, -.fixed-side-column-container::-webkit-scrollbar-track { - background: #f1f1f1; -} - -#mw-admin-main-menu::-webkit-scrollbar-thumb, -.fixed-side-column-container::-webkit-scrollbar-thumb { - background: #888; - border-radius: 5px; -} - -#mw-admin-main-menu::-webkit-scrollbar-thumb:hover, -.fixed-side-column-container::-webkit-scrollbar-thumb:hover { - background: #555; -} - -#module-saved-presets:empty{ - display: none; -} - -#create-presets-btn{ - float: right; -} -.mw-presets-list-holder{ - padding-top: 10px; - clear: both; -} - -.js-module-preset-item-form-holder > div:last-child{ - text-align: right; -} - -.mw-registered { - color:#469a36; -} -.mw-inactive { - color:#fa8e36; -} -.mw-approval-required { - color: #dc0d17; -} diff --git a/update/userfiles/modules/microweber/css/liveedit.css b/update/userfiles/modules/microweber/css/liveedit.css index 8a38ee3f..94f3a44c 100644 --- a/update/userfiles/modules/microweber/css/liveedit.css +++ b/update/userfiles/modules/microweber/css/liveedit.css @@ -120,6 +120,7 @@ body.mw-live-edit .plain-text { Plus *****************************/ + [class*='mw-plus-'] { position: absolute; visibility: visible; @@ -128,7 +129,11 @@ body.mw-live-edit .plain-text { width: 16px; height: 16px; border-radius: 30px; - background-color: #CCCCCC; + background-color: #e0e0e0; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='white' d='M24 10h-10v-10h-4v10h-10v4h10v10h4v-10h10z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: center; + background-size: 10px 10px; cursor: pointer; left: -9999px; top: -9999px; @@ -142,7 +147,11 @@ body.mw-live-edit .plain-text { transition: opacity 0.3s; } - +/*[class*='mw-plus-']:after { + content: '\002b'; + font-family: Microweber !important; + text-transform: none !important; +}*/ .mw-plus-top { margin-top: -10px; } @@ -151,28 +160,11 @@ body.mw-live-edit .plain-text { margin-top: -10px; } -[class*='mw-plus-']:after { - display: block; - position: absolute; - top: 50%; - margin-top: -5px; - right: -1px; - content: ''; - width: 10px; - height: 10px; - background-color: #CCCCCC; - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - z-index: -1; -} -[class*='mw-plus-'].active, [class*='mw-plus-'].active:after, -[class*='mw-plus-']:hover, -[class*='mw-plus-']:hover:after { - background-color: #434343; + +[class*='mw-plus-'].active, +[class*='mw-plus-']:hover{ + background-color: #0086db; } [class*='mw-plus-']:active { @@ -2308,7 +2300,7 @@ body.dragStart .empty-element { .mw-toolbar-right-content { float: right; - padding: 10px 3px 10px 0; + padding: 9px 3px 9px 0; } #toolbar-dropdown-actions { @@ -2756,8 +2748,6 @@ div[id*='SSDIVEL'] { } .mw-tooltip-insert-module .mw-ui-searchfield { - position: absolute; - right: 10px; border-radius: 3px 3px 0 0; border-bottom-width: 0; } @@ -3101,6 +3091,7 @@ div[id*='SSDIVEL'] { float: left; text-align: center; padding: 0px; + list-style: none; } .module-item-module .mw_module_hold { @@ -4568,3 +4559,18 @@ section.element{ min-height: 15px; } + +#mw-plus-tooltip-selector .mw-ui-searchfield{ + width: 100%; + height: auto; + border: 1px solid #E6E6E6; + -webkit-appearance: textfield; + appearance: textfield; +} +#mw-plus-tooltip-selector .mw-ui-searchfield:focus{ + border-color: #c6c6c6; +} +#mw-plus-tooltip-selector .mw-ui-btn-nav{ + display: none; +} + diff --git a/update/userfiles/modules/microweber/css/liveedit.rtl.css b/update/userfiles/modules/microweber/css/liveedit.rtl.css new file mode 100644 index 00000000..fcd390f7 --- /dev/null +++ b/update/userfiles/modules/microweber/css/liveedit.rtl.css @@ -0,0 +1,42 @@ +/* live edit */ + +#mw-text-editor, +.toolbar-sections-tabs{ + flex-direction: row-reverse; +} +.wysiwyg-cell-undo-redo .mw-ui-btn-nav, .toolbar-sections-tabs > ul{ + direction: ltr; +} + +.mw-handle-type-default .mw-handle-handler-title{ + border-radius: 30px 0 0 30px; +} + +#live_edit_toolbar_holder [class*='tst-']{ + border-right:0; + border-left:1px solid #EAEAEA; +} + +.mw-toolbar-add-new-content-ctrl { + margin: 9px 12px 0 0 !important; +} + +.mw-toolbar-add-new-content-ctrl{ + width: auto; + margin-left:10px !important; +} + +.mw-ui-navigation a>[class*=mw-icon-] { + margin-right:0; + margin-left:8px; +} + +.mw_edit_delete{ + left: 0px !important; + right: auto !important; +} + + +.ts_main_a{ + padding-right: 10px; +} diff --git a/update/userfiles/modules/microweber/css/modal.css b/update/userfiles/modules/microweber/css/modal.css deleted file mode 100644 index 0e42f225..00000000 --- a/update/userfiles/modules/microweber/css/modal.css +++ /dev/null @@ -1,384 +0,0 @@ -/**************************** - Variables -*****************************/ -@font-face { - font-family: 'Microweber'; - src: url('fonts/font.ttf?mwv=v06') format('truetype'); - font-weight: normal; - font-style: normal; -} -/**************************** - Icons -*****************************/ -[class*='mw-icon-'] { - /*vertical-align: middle;*/ - font-style: normal; - font-weight: 400; - line-height: 1; - position: relative; - display: inline-block; - font-size: 100%; -} - - -/********************************************* - Modal windows -*********************************************/ -.mw_modal { -font-family:Verdana, Geneva, sans-serif; - position: fixed; - z-index: 1102; - top: 0; - left: 0; - display: none; - background: white; - border: 1px solid black; - overflow: hidden; - box-shadow: 0 0 27px -20px #111111; - /* - transition: width 0.3s, height 0.3s, left 0.3s, top 0.3s; - -moz-transition:width 0.3s, height 0.3s, left 0.3s, top 0.3s; - -webkit-transition: width 0.3s, height 0.3s, left 0.3s, top 0.3s; - -o-transition: width 0.3s, height 0.3s, left 0.3s, top 0.3s; - */ -} -.mw_modal.ui-draggable-dragging { - transition: none; - -moz-transition: none; - -webkit-transition: none; - -o-transition: none; -} -.mw_modal_default .mw-modal-close { - cursor: pointer; - display: block; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - font-size: 11px; - position: absolute; - right: 0px; - text-indent: 0; - top: 0px; - padding-top: 2px; - width: 27px; - height: 22px; - border-left: 1px solid rgba(196, 196, 196, 0.3); - text-align: center; - color: rgba(245, 245, 245, 0.5); - border-bottom: 1px solid transparent; -} -.mw_modal_default .mw-modal-close:hover, -.mw_modal_default .mw-modal-close:focus { - background-color: white; - color: black; - border-bottom-color: black; -} -.mw_modal_default .mw-modal-close:after, -.mw_modal_default .mw-modal-close:after, -.mw_modal_basic .mw-modal-close:after { - content: "X"; - xxxfont-family: Microweber; - font-size: 12px; -} -.mw_modal_default .mw-modal-close:active { - box-shadow: inset 0 0 4px #CCCCCC; -} -.mw_modal_simple .mw-modal-close, -.mw_modal_basic .mw-modal-close { - position: absolute; - display: block; - width: 14px; - height: 14px; - right: 8px; - top: 8px; - cursor: pointer; - font-size: 15px; - color: #444; -} -.mw_modal_basic .mw-modal-close { - top: 0px; - right: 0px; - height: 100%; - padding: 0px; - text-align: center; - width: 25px; -} -.mw_modal_simple .mw-modal-close:hover, -.mw_modal_basic .mw-modal-close:hover { - color: black; -} -.mw_modal_title { - display: inline-block; - float: left; - font-size: 11px; - height: 15px; - white-space: nowrap; - margin-left: 6px; - margin-top: 3px; - overflow: hidden; - color: white; - text-overflow: ellipsis; - text-shadow: 0 1px 0 #255F85; - text-shadow: none; -} -.mw_modal_simple .mw_modal_title { - margin-top: 2px; -} -.mw_modal_default .mw_modal_title { - color: white; -} -.mw_modal_minimize { - position: absolute; - top: 1px; - right: 30px; - text-indent: -9999px; - display: block; - background: url(../../img/popup_ctrls.png) no-repeat 0 -20px; - cursor: pointer; - width: 27px; - height: 20px; -} -.mw_modal.is_minimized .mw_modal_minimize { - background-position: 0 -40px; -} -.mw_modal_container { - padding: 15px; - position: relative; - overflow-y: auto; - overflow-x: hidden; -} -.iframe_fix { - position: absolute; - top: 0; - left: 0; - z-index: 995; - width: 100%; - height: 100%; - background: transparent; - display: none; -} -.mw_overlay { - position: fixed; - top: 0; - left: 0; - z-index: 1101; - width: 100%; - height: 100%; - background: black; - opacity: .7; -} -.mw_modal_type_iframe .mw_modal_container { - padding: 0; - width: 100%; - /* TODO */ -} -.mw_modal_maximized { - overflow: hidden; -} -.mw_modal_default .mw_modal_toolbar { - height: 22px; - width: 100%; - cursor: move; - position: relative; - background-repeat: no-repeat; - background-position: center center; - background-color: black; -} -.mw-modal-draggable.mw_modal_default .mw_modal_toolbar { - background-image: url(../../img/popup_settings_bar.png); -} -.mw_modal_simple .mw_modal_toolbar { - height: 30px; - width: 100%; - top: 0px; - left: 0px; - position: relative; - background: #EEEEEE; - cursor: move; -} -.mw_modal_basic .mw_modal_toolbar { - height: 25px; - width: 100%; - top: 0px; - left: 0px; - position: relative; - background: white; - cursor: move; -} -.mw_modal_gallery .mw_modal_toolbar { - height: 0; -} -.mw_modal_gallery { - background: transparent; - border: none; -} -.mw_modal_gallery .mw-modal-close { - position: absolute; - top: 20px; - right: 20px; - display: block; - width: 20px; - height: 20px; - background: white url(../../img/galleryclose.png) no-repeat right top; - text-indent: -9999px; - overflow: hidden; - cursor: pointer; - box-shadow: 1px 1px 2px #000; -} -.mw_modal_gallery .mw-modal-close:hover { - background-color: #CCCCCC; -} -.mw_modal_gallery .mw-modal-close:active { - box-shadow: inset 0px 0px 3px #707070; -} -.mw_modal_gallery .mw_modal_container { - padding: 0; -} -.mw_modal_gallery .mw_modal_toolbar { - position: absolute; - z-index: 12; - top: 0; - right: 0; -} -.mw-modal-frame { - position: absolute; - width: 100%; - min-width: 100%; - max-width: 100%; - height: 100%; - min-height: 100%; - max-height: 100%; - left: 0; - bottom: 0; -} - -/********************************************* - Gallery -*********************************************/ -.mw_modal_gallery, -.mw_modal_gallery > * { - -moz-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - -khtml-user-select: none; - user-select: none; -} -.mw_modal_gallery .mwf-gallery-description { - position: absolute; - z-index: 9; - bottom: 0; - left: 0; - width: 100%; - font-size: 13px; - color: white; - background: black; - background: rgba(10, 0, 0, 0.8); -} -.mwf-gallery-description-holder { - padding: 20px; - max-height: 75px; - overflow: auto; -} -.mwf-gallery { - height: 100%; - width: 100%; - text-align: center; -} -.mw_modal_gallery .mwf-gallery-modeHTML { - display: inline-block; - box-shadow: 0 0 6px #111; - position: absolute; - overflow: auto; - background: #111; - color: white; -} -.mwf-single-holder { - position: absolute; - margin: auto; - display: inline-block; -} -.mwf-single { - box-shadow: 0 0 6px #111; - position: relative; - display: block; - background-color: #E0E0E0; - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #f2f2f2), color-stop(1, #e0e0e0)); - background-image: -o-linear-gradient(bottom, #f2f2f2 0%, #e0e0e0 100%); - background-image: -moz-linear-gradient(bottom, #f2f2f2 0%, #e0e0e0 100%); - background-image: -webkit-linear-gradient(bottom, #f2f2f2 0%, #e0e0e0 100%); - background-image: -ms-linear-gradient(bottom, #f2f2f2 0%, #e0e0e0 100%); - background-image: linear-gradient(to bottom, #f2f2f2 0%, #e0e0e0 100%); - margin: auto; - max-height: 100%; - max-width: 100%; - min-height: 200px; - min-width: 200px; - width: auto; - height: auto; - cursor: pointer; -} -.mw_gallery_loading .mwf-single-holder * { - visibility: hidden !important; -} -.semi_hidden { - position: absolute; - left: -9999px; - top: -9999px; -} -.mw_modal_gallery .mwf-next, -.mw_modal_gallery .mwf-prev { - font-size: 60px; - color: #ccc; - text-align: center; - position: absolute; - top: 50%; - margin-top: -27px; - right: 20px; - cursor: pointer; - height: 55px; - width: 50px; - text-shadow: 0 0 1px #777; - line-height: 40px; - font-family: Microweber; - border-radius: 1px; -} -.mw_modal_gallery .mwf-next:focus, -.mw_modal_gallery .mwf-next:hover, -.mw_modal_gallery .mwf-prev:focus, -.mw_modal_gallery .mwf-prev:hover { - background: white; - background: rgba(255, 255, 255, 0.5); - color: #111; -} -.mw_modal_gallery .mwf-next:active, -.mw_modal_gallery .mwf-prev:active { - box-shadow: inset 2px 2px 2px -2px #333333, inset -2px -2px 2px -2px #333333; -} -.mw_modal_gallery .mwf-prev { - left: 20px; - right: auto; -} -.mwf-gallery-container { - overflow: hidden; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} -.mwf-fullscreen { - display: block; - width: 20px; - height: 20px; - overflow: hidden; - text-indent: -9999px; - position: absolute; - background: white url(../../img/enter_fullscreen.png) no-repeat; - box-shadow: 1px 1px 2px #000; - top: 20px; - right: 41px; - cursor: pointer; -} -.fullscreen-mode .mwf-fullscreen { - background: white url(../../img/cancel_fullscreen.png) no-repeat; -} diff --git a/update/userfiles/modules/microweber/css/sass/style.css b/update/userfiles/modules/microweber/css/sass/style.css deleted file mode 100644 index 23f85a9f..00000000 --- a/update/userfiles/modules/microweber/css/sass/style.css +++ /dev/null @@ -1,1210 +0,0 @@ -/* -------------------------------- - -Primary style - --------------------------------- */ -.microweber { - /* http://meyerweb.com/eric/tools/css/reset/ - v2.0 | 20110126 - License: none (public domain) - */ - /* HTML5 display-role reset for older browsers */ - /* -------------------------------- - - options-nav navigation style - - -------------------------------- */ -} -.microweber html, .microweber body, .microweber div, .microweber span, .microweber applet, .microweber object, .microweber iframe, -.microweber h1, .microweber h2, .microweber h3, .microweber h4, .microweber h5, .microweber h6, .microweber p, .microweber blockquote, .microweber pre, -.microweber a, .microweber abbr, .microweber acronym, .microweber address, .microweber big, .microweber cite, .microweber code, -.microweber del, .microweber dfn, .microweber em, .microweber img, .microweber ins, .microweber kbd, .microweber q, .microweber s, .microweber samp, -.microweber small, .microweber strike, .microweber strong, .microweber sub, .microweber sup, .microweber tt, .microweber var, -.microweber b, .microweber u, .microweber i, .microweber center, -.microweber dl, .microweber dt, .microweber dd, .microweber ol, .microweber ul, .microweber li, -.microweber fieldset, .microweber form, .microweber label, .microweber legend, -.microweber table, .microweber caption, .microweber tbody, .microweber tfoot, .microweber thead, .microweber tr, .microweber th, .microweber td, -.microweber article, .microweber aside, .microweber canvas, .microweber details, .microweber embed, -.microweber figure, .microweber figcaption, .microweber footer, .microweber header, .microweber hgroup, -.microweber menu, .microweber nav, .microweber output, .microweber ruby, .microweber section, .microweber summary, -.microweber time, .microweber mark, .microweber audio, .microweber video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; -} -.microweber article, .microweber aside, .microweber details, .microweber figcaption, .microweber figure, -.microweber footer, .microweber header, .microweber hgroup, .microweber menu, .microweber nav, .microweber section, .microweber main { - display: block; -} -.microweber body { - line-height: 1; -} -.microweber ol, .microweber ul { - list-style: none; -} -.microweber blockquote, .microweber q { - quotes: none; -} -.microweber blockquote:before, .microweber blockquote:after, -.microweber q:before, .microweber q:after { - content: ''; - content: none; -} -.microweber table { - border-collapse: collapse; - border-spacing: 0; -} -.microweber html { - font-size: 62.5%; - width: 100%; - height: 100%; -} -.microweber body { - width: 100%; - height: 100%; - font-size: 1.6rem; - font-family: "avenir next", sans-serif; -} -.microweber *, -.microweber *::after, -.microweber *::before { - box-sizing: border-box; -} -.microweber menu { - position: fixed; - width: 50px; - left: 0; - height: 100%; - -webkit-transition: width 0.1s; - transition: width 0.1s; - top: 0; - z-index: 99999; - display: inline-block; - box-shadow: 0 0 10px 0 #332234; -} -.light .microweber menu { - background-color: rgba(204, 221, 203, 0.97); - color: #332234; - -webkit-backdrop-filter: blur(5px); - backdrop-filter: blur(5px); -} -.light .microweber menu p { - color: color-offset-dark; -} -.dark .microweber menu { - background-color: rgba(51, 34, 52, 0.97); - color: #ccddcb; - -webkit-backdrop-filter: blur(5px); - backdrop-filter: blur(5px); -} -.dark .microweber menu p { - color: color-offset-light; -} -.microweber menu panel { - opacity: 0; - -webkit-transition: opacity width 0.2s; - transition: opacity width 0.2s; -} -.microweber menu:hover { - width: 300px; - -webkit-transition: width opacity 0.2s; - transition: width opacity 0.2s; -} -.microweber menu:hover panel { - overflow-y: scroll; - position: relative; - width: 100%; - height: 100%; - display: block; - padding: 15px; - opacity: 1; - -webkit-transition: opacity width 0.2s; - transition: opacity width 0.2s; -} -.microweber menu:hover panel img { - box-sizing: content-box; - max-width: 300px; - width: 100%; - opacity: .6; - margin-bottom: 14px; - -webkit-transition: opacity 0.2s; - transition: opacity 0.2s; -} -.microweber menu:hover panel img:hover { - box-sizing: content-box; - max-width: 300px; - width: 100%; - opacity: 1; - -webkit-transform: scale(1.01); - -ms-transform: scale(1.01); - transform: scale(1.01); - -webkit-transition: opacity 0.2s; - transition: opacity 0.2s; - -webkit-transition: -webkit-transform 0.2s; - transition: transform 0.2s; - cursor: -webkit-grab; - cursor: grab; -} -.microweber .ui-draggable { - max-width: 300px; -} -.microweber h2 { - font-size: 20px; - text-align: center; - margin-top: 25px; - margin-bottom: 10px; -} -.microweber label { - font-size: 22px; - line-height: 30px; -} -.microweber a { - position: relative; - color: #332234; - text-decoration: none; -} -.microweber img { - max-width: 100%; -} -.microweber droppableArea { - height: 100px; - width: 100%; - display: block; - position: relative; - background-color: rgba(21, 14, 21, 0.9); - -webkit-transition: height 0.4s, color 0.3s; - transition: height 0.4s, color 0.3s; -} -.microweber droppableArea.hover { - background-color: #1ACC2F; - height: 300px; - -webkit-transition: height 0.4s, color 0.3s; - transition: height 0.4s, color 0.3s; -} -.microweber options { - display: block; - width: 100%; - height: 100%; - position: relative; -} -.microweber options:hover nav { - opacity: 1; -} -.microweber options nav, -.microweber options nav:hover { - -webkit-transition: all 0.2s; - transition: all 0.2s; -} -.microweber options nav.toggled { - opacity: 1; -} -.microweber options.options1 { - background: URL("../img/1.png"); - background-size: cover; - background-repeat: no-repeat; - width: 100%; - background-position: center center; - height: 100%; - position: relative; -} -.microweber options.options2 { - background: URL("../img/bg.jpg"); - background-size: cover; - background-repeat: no-repeat; - background-position: center center; - width: 100%; - height: 100%; - position: relative; -} -.microweber options.options3 { - background: URL("../img/3.png"); - background-size: cover; - background-repeat: no-repeat; - background-position: center center; - width: 100%; - height: 60%; - position: relative; -} -.microweber nav { - position: absolute; - z-index: 2; - right: 5%; - opacity: 0; -} -.microweber div:hover + nav { - opacity: 1; -} -.microweber .trigger { - position: absolute; - z-index: 3; - top: 0; - right: 0; - height: 60px; - width: 60px; - border-radius: 50%; - /* replace text with image */ - overflow: hidden; - white-space: nowrap; - color: transparent; - -webkit-transition: all 0.2s; - transition: all 0.2s; -} -.microweber .trigger span, -.microweber .trigger span::after, -.microweber .trigger span::before { - /* this is the hamburger icon */ - position: absolute; - width: 16px; - height: 2px; - border-radius: 1px; - background-color: #ccddcb; -} -.microweber .trigger span { - /* middle line of the hamburger icon */ - left: 50%; - top: 50%; - bottom: auto; - right: auto; - -webkit-transform: translateX(-50%) translateY(-50%); - -ms-transform: translateX(-50%) translateY(-50%); - transform: translateX(-50%) translateY(-50%); - -webkit-transition: background-color 0.2s; - transition: background-color 0.2s; -} -.microweber .trigger span::after, -.microweber .trigger span::before { - /* top and bottom lines of the hamburger icon */ - content: ''; - top: 0; - left: 0; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transition: -webkit-transform 0.2s; - transition: transform 0.2s; -} -.microweber .trigger span::before { - -webkit-transform: translateY(-6px); - -ms-transform: translateY(-6px); - transform: translateY(-6px); -} -.microweber .trigger span::after { - -webkit-transform: translateY(6px); - -ms-transform: translateY(6px); - transform: translateY(6px); -} -.no-touch .microweber .trigger:hover ~ nav-bg { - box-shadow: 0 6px 10px rgba(0, 0, 0, 0.2); -} -.toggled .microweber .trigger { - -webkit-transition: all 0.2s; - transition: all 0.2s; - -webkit-animation-name: scaleIn; - animation-name: scaleIn; - -webkit-transform: scale(1.3); - -ms-transform: scale(1.3); - transform: scale(1.3); -} -.toggled .microweber .trigger span { - background-color: transparent; -} -.toggled .microweber .trigger span, -.toggled .microweber .trigger span::after, -.toggled .microweber .trigger span::before { - /* this is the hamburger icon */ - background-color: #ccddcb; -} -.toggled .microweber .trigger span::before { - -webkit-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - transform: rotate(-45deg); -} -.toggled .microweber .trigger span::after { - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); -} -.microweber nav ul { - position: relative; - z-index: 2; - padding: 60px 0 0; - visibility: hidden; - -webkit-transition: visibility 0.3s; - transition: visibility 0.3s; - text-align: right; -} -.microweber nav ul a { - position: relative; - display: block; - height: 50px; - line-height: 50px; - padding: 0 calc(1em + 60px) 0 1em; - color: rgba(204, 221, 203, 0.7); - font-size: 1.4rem; - color: #ccddcb; - -webkit-animation: slideIn 0.2s reverse; - animation: slideIn 0.2s reverse; - -webkit-transition: opacity 0.2s; - transition: opacity 0.2s; - opacity: 0; -} -.microweber nav.toggled ul { - visibility: visible; -} -.microweber nav.toggled ul a::after { - /* navigation item icons */ -} -.microweber nav.toggled ul a { - color: #ccddcb; - -webkit-transition: opacity 0.2s; - transition: opacity 0.2s; - opacity: 1; -} -.microweber nav.toggled ul span { - opacity: 1; - -webkit-animation: scaleIn 0.15s backwards; - animation: scaleIn 0.15s backwards; - -webkit-transition: -webkit-transform 0.2s; - transition: transform 0.2s; -} -.no-touch .microweber nav.toggled ul a:hover { - color: #ccddcb; -} -.no-touch .microweber nav.toggled ul a:hover::after { - opacity: 1; -} -.microweber nav.toggled ul li:first-of-type a::after, -.microweber nav.toggled ul li:first-of-type span { - -webkit-animation-delay: 0.05s; - animation-delay: 0.05s; -} -.microweber nav.toggled ul li:nth-of-type(2) a::after, -.microweber nav.toggled ul li:nth-of-type(2) span { - -webkit-animation-delay: 0.1s; - animation-delay: 0.1s; -} -.microweber nav.toggled ul li:nth-of-type(3) a::after, -.microweber nav.toggled ul li:nth-of-type(3) span { - -webkit-animation-delay: 0.15s; - animation-delay: 0.15s; -} -.microweber nav.toggled ul li:nth-of-type(4) a::after, -.microweber nav.toggled ul li:nth-of-type(4) span { - -webkit-animation-delay: 0.2s; - animation-delay: 0.2s; -} -.microweber nav.toggled ul li:nth-of-type(5) a::after, -.microweber nav.toggled ul li:nth-of-type(5) span { - -webkit-animation-delay: 0.25s; - animation-delay: 0.25s; -} -.microweber nav.options-nav { - left: 50%; - right: auto; - -webkit-transform: translateX(-50%); - -ms-transform: translateX(-50%); - transform: translateX(-50%); - width: 400px; -} -.microweber nav.options-nav.bottom { - bottom: 50px; -} -.microweber nav.options-nav.top { - top: 50px; -} -.microweber nav.options-nav.center { - top: 50%; - bottom: auto; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); - left: 50%; - right: auto; - -webkit-transform: translateX(-50%); - -ms-transform: translateX(-50%); - transform: translateX(-50%); -} -.microweber nav.options-nav.toggled nav-bg { - width: 100%; - box-shadow: 0 6px 30px rgba(0, 0, 0, 0.2); -} -.microweber nav.options-nav .trigger { - left: 50%; - right: auto; - -webkit-transform: translateX(-50%); - -ms-transform: translateX(-50%); - transform: translateX(-50%); - background-color: #324A9A; -} -.microweber nav.options-nav .trigger span { - background-color: transparent; -} -.microweber nav.options-nav .trigger span::before { - /* used to create the plus icon */ - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} -.microweber nav.options-nav .trigger span::after { - /* used to create the plus icon */ - -webkit-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(0deg); -} -.microweber nav.options-nav .trigger:hover span::before { - /* used to create the plus icon */ - -webkit-transform: scale(1.34) rotate(90deg); - -ms-transform: scale(1.34) rotate(90deg); - transform: scale(1.34) rotate(90deg); -} -.microweber nav.options-nav .trigger:hover span::after { - /* used to create the plus icon */ - -webkit-transform: scale(1.34) rotate(0deg); - -ms-transform: scale(1.34) rotate(0deg); - transform: scale(1.34) rotate(0deg); -} -.microweber nav.options-nav.toggled .trigger { - box-shadow: 0 4px 15px rgba(0, 0, 0, 0.4); - background-color: #1ACC2F; -} -.microweber nav.options-nav.toggled .trigger span::before { - -webkit-transform: translateX(-50%) translateY(300%) scale(1) rotate(-135deg); - -ms-transform: translateX(-50%) translateY(300%) scale(1) rotate(-135deg); - transform: translateX(-50%) translateY(300%) scale(1) rotate(-135deg); -} -.microweber nav.options-nav.toggled .trigger span::after { - -webkit-transform: translateX(35%) translateY(120%) scale(1.6) rotate(140deg); - -ms-transform: translateX(35%) translateY(120%) scale(1.6) rotate(140deg); - transform: translateX(35%) translateY(120%) scale(1.6) rotate(140deg); -} -.microweber nav.options-nav.toggled .trigger:hover span::before { - -webkit-transform: translateX(-60%) translateY(320%) scale(0.9) rotate(-140deg); - -ms-transform: translateX(-60%) translateY(320%) scale(0.9) rotate(-140deg); - transform: translateX(-60%) translateY(320%) scale(0.9) rotate(-140deg); -} -.microweber nav.options-nav.toggled .trigger:hover span::after { - -webkit-transform: translateX(50%) translateY(100%) scale(2) rotate(140deg); - -ms-transform: translateX(50%) translateY(100%) scale(2) rotate(140deg); - transform: translateX(50%) translateY(100%) scale(2) rotate(140deg); -} -.microweber nav.options-nav ul { - padding-top: 0; -} -.microweber nav.options-nav ul::after { - clear: both; - content: ""; - display: table; -} -.microweber nav.options-nav ul li { - z-index: 5000; - display: inline-block; - float: left; - width: 60px; -} -.microweber nav.options-nav ul li:nth-of-type(odd) { - /* space occupied by the navigation trigger */ - margin-right: 30px; - float: left; -} -.microweber nav.options-nav ul li:nth-of-type(even) { - /* space occupied by the navigation trigger */ - float: right; - margin-left: 30px; -} -.microweber nav.options-nav ul li .open { - z-index: 9999; -} -.microweber nav.options-nav ul li .open a { - padding: 0; - height: 60px; - width: 60px; - position: relative; - background-color: #332234; -} -.microweber nav.options-nav ul li a { - padding: 0; - height: 60px; - width: 60px; - border-radius: 30px; - position: relative; - background-color: #332234; -} -.microweber nav.options-nav ul li:first-of-type a, -.microweber nav.options-nav ul li:nth-of-type(4) a { - -webkit-animation: slideIn 0.2s; - animation: slideIn 0.2s; - -webkit-transition: opacity 0.1s, color 0.1s; - transition: opacity 0.1s, color 0.1s; -} -.microweber nav.options-nav ul li:nth-of-type(2) a, -.microweber nav.options-nav ul li:nth-of-type(3) a { - -webkit-animation: slideIn 0.2s; - animation: slideIn 0.2s; - -webkit-transition: opacity 0.4s, color 0.4s; - transition: opacity 0.4s, color 0.4s; -} -.microweber nav.options-nav ul span { - position: absolute; - left: 0; - top: 120%; - min-width: 100%; - padding: .6em 0; - opacity: 0; - visibility: hidden; - background-color: transparent; - color: #ccddcb; - border-radius: 2px; - font-size: 15px; - font-weight: 500; - line-height: 1; - white-space: nowrap; - text-align: center; - -webkit-transition: opacity 0.2s, visibility 0.2s; - transition: opacity 0.2s, visibility 0.2s; - /* reset default style */ - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); -} -.microweber nav.options-nav.toggled ul span { - /* reset default style */ - -webkit-animation: none; - animation: none; -} -.microweber .no-touch nav.options-nav.toggled ul a:hover span { - opacity: 1; - visibility: visible; - text-shadow: 1px 1px 1px #000000; - /* reset default style */ - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); -} -@-webkit-keyframes scaleIn { - from { - -webkit-transform: translateY(-50%) scale(0); - } - to { - -webkit-transform: translateY(-50%) scale(1); - } -} -@keyframes scaleIn { - from { - -webkit-transform: translateY(-50%) scale(0); - -ms-transform: translateY(-50%) scale(0); - transform: translateY(-50%) scale(0); - } - to { - -webkit-transform: translateY(-50%) scale(1); - -ms-transform: translateY(-50%) scale(1); - transform: translateY(-50%) scale(1); - } -} -@-webkit-keyframes slideIn { - from { - opacity: 0; - -webkit-transform: translateX(-25px); - } - to { - opacity: 1; - -webkit-transform: translateX(0); - } -} -@keyframes slideIn { - from { - opacity: 0; - -webkit-transform: translateX(-25px); - -ms-transform: translateX(-25px); - transform: translateX(-25px); - } - to { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} -@-webkit-keyframes fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@keyframes fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -.microweber .light { - background-color: rgba(204, 221, 203, 0.94); - color: #332234; - -webkit-backdrop-filter: blur(5px); - backdrop-filter: blur(5px); -} -.microweber .light p { - color: color-offset-dark; -} -.microweber .dark { - background-color: rgba(51, 34, 52, 0.94); - color: #ccddcb; - -webkit-backdrop-filter: blur(5px); - backdrop-filter: blur(5px); -} -.microweber .dark p { - color: color-offset-light; -} -.microweber .open > modal, -.microweber modal.open { - display: inline-block; - visibility: visible; - z-index: 5000; - opacity: 1; - -webkit-transition: opacity 0.3s 0s, visibility 0s, -webkit-transform 0.3s 0s, top 0.3s 0s, bottom 0.3s 0s, left 0.3s 0s, right 0.3s 0s; - transition: opacity 0.3s 0s, visibility 0s, transform 0.3s 0s, top 0.3s 0s, bottom 0.3s 0s, left 0.3s 0s, right 0.3s 0s; -} -.microweber modal { - width: 300px; - height: 500px; - opacity: 0; - display: none; - max-width: 300px; - max-height: 500px; - position: absolute; - border-radius: 0; - position: fixed; - top: 0; - left: 0; - -webkit-animation: fadeIn 0.2s; - animation: fadeIn 0.2s; - -webkit-transition: opacity 0.3s 0s, visibility 0s 0.3s, -webkit-transform 0.3s 0s, top 0.3s 0s, bottom 0.3s 0s, left 0.3s 0s, right 0.3s 0s; - transition: opacity 0.3s 0s, visibility 0s 0.3s, transform 0.3s 0s, top 0.3s 0s, bottom 0.3s 0s, left 0.3s 0s, right 0.3s 0s; - -webkit-overflow-scrolling: touch; - text-align: left; - line-height: 1.5 - /* close the interest point description - only on mobile */ -} -.microweber modal.fixed { - top: 50px; - left: 100px; - position: fixed; - cursor: move; -} -.microweber modal::before { - /* triangle next to the interest point description - hidden on mobile */ - content: ''; - position: absolute; - height: 0; - width: 0; - bottom: -8px; - display: none; - border: 8px solid transparent; -} -.microweber modal::before { - /* triangle next to the interest point description - hidden on mobile */ - content: ''; - position: absolute; - height: 0; - width: 0; - bottom: -8px; - display: none; - border: 8px solid transparent; -} -@media only screen and (min-width: 480px) { - .microweber modal { - position: absolute; - line-height: 1.4; - border-radius: 0; - box-shadow: 0 0 20px rgba(0, 0, 0, 0.5); - } - .microweber modal::before { - display: block; - } - .microweber modal.left, .microweber modal.right { - top: 50%; - bottom: auto; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); - } - .microweber modal.left::before, .microweber modal.right::before { - top: 50%; - bottom: auto; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); - } - .microweber modal.top, .microweber modal.bottom { - left: 50%; - right: auto; - -webkit-transform: translateX(-50%); - -ms-transform: translateX(-50%); - transform: translateX(-50%); - } - .microweber modal.top::before, .microweber modal.bottom::before { - left: 50%; - right: auto; - -webkit-transform: translateX(-50%); - -ms-transform: translateX(-50%); - transform: translateX(-50%); - } - .microweber modal.left { - right: 160%; - left: auto; - } - .microweber modal.left::before { - left: 100%; - } - .microweber modal.right { - left: 160%; - } - .microweber modal.right::before { - right: 100%; - } - .microweber modal.top { - bottom: 160%; - top: auto; - } - .microweber modal.top::before { - top: 100%; - } - .microweber modal.bottom { - top: 160%; - } - .microweber modal.bottom::before { - bottom: 100%; - } - .microweber modal.light.left::before { - border-left-color: rgba(204, 221, 203, 0.95); - left: 100%; - } - .microweber modal.light.right::before { - border-right-color: rgba(204, 221, 203, 0.95); - right: 100%; - } - .microweber modal.light.top::before { - border-top-color: rgba(204, 221, 203, 0.95); - top: 100%; - } - .microweber modal.light.bottom::before { - border-bottom-color: rgba(204, 221, 203, 0.95); - bottom: 100%; - } - .microweber modal.dark.left::before { - border-left-color: rgba(51, 34, 52, 0.95); - left: 100%; - } - .microweber modal.dark.right::before { - border-right-color: rgba(51, 34, 52, 0.95); - right: 100%; - } - .microweber modal.dark.top::before { - border-top-color: rgba(51, 34, 52, 0.95); - top: 100%; - } - .microweber modal.dark.bottom::before { - border-bottom-color: rgba(51, 34, 52, 0.95); - bottom: 100%; - } -} -@media only screen and (min-width: 480px) { - .microweber modal close { - position: absolute !important; - top: 10px; - right: 10px; - background-color: transparent !important; - } - .microweber modal close::after, .microweber modal close:before { - content: ''; - position: absolute !important; - right: 15px !important; - top: 15px !important; - -webkit-transition-property: -webkit-transform; - transition-property: transform; - -webkit-transition-duration: 0.2s; - transition-duration: 0.2s; - } - .microweber modal close::after { - -webkit-transform: translateX(50%) translateY(-50%) rotate(45deg); - -ms-transform: translateX(50%) translateY(-50%) rotate(45deg); - transform: translateX(50%) translateY(-50%) rotate(45deg); - background-color: #888888 !important; - height: 2px; - width: 16px; - } - .microweber modal close::before { - -webkit-transform: translateY(-50%) translateX(50%) rotate(45deg); - -ms-transform: translateY(-50%) translateX(50%) rotate(45deg); - transform: translateY(-50%) translateX(50%) rotate(45deg); - background-color: #888888 !important; - height: 16px; - width: 2px; - } - .microweber modal close:hover::after, .microweber modal close:hover:before { - content: ''; - position: absolute !important; - right: 15px !important; - top: 15px !important; - -webkit-transition-property: -webkit-transform; - transition-property: transform; - -webkit-transition-duration: 0.2s; - transition-duration: 0.2s; - } - .microweber modal close:hover::after { - -webkit-transform: translateX(50%) translateY(-50%) rotate(45deg); - -ms-transform: translateX(50%) translateY(-50%) rotate(45deg); - transform: translateX(50%) translateY(-50%) rotate(45deg); - background-color: #888888 !important; - height: 3px; - width: 20px; - } - .microweber modal close:hover::before { - -webkit-transform: translateY(-50%) translateX(50%) rotate(45deg); - -ms-transform: translateY(-50%) translateX(50%) rotate(45deg); - transform: translateY(-50%) translateX(50%) rotate(45deg); - background-color: #888888 !important; - height: 20px; - width: 3px; - } -} -.microweber modal panel { - max-width: 100%; - max-height: 100%; - display: inline-block; - padding: 20px; - overflow: scroll; - box-sizing: border-box; -} -.microweber modal panel section { - padding-bottom: 30px; -} -.microweber modal panel *, -.microweber modal panel *:before, -.microweber modal panel *:after { - box-sizing: inherit; -} -.microweber modal div:before { - content: ''; - width: 100%; - position: absolute; - bottom: 0; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - left: 0; - height: 20px; -} -.microweber modal div:after { - content: ''; - width: 100%; - position: absolute; - top: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; - left: 0; - height: 20px; -} -.microweber modal div > section { - margin-top: 5px; - margin-bottom: 30px; -} -.microweber ul li { - position: relative; -} -@media only screen and (min-width: 480px) { - .microweber ul li.is-open modal.left { - right: 120%; - } - .microweber ul li.is-open modal.right { - left: 120%; - } - .microweber ul li.is-open modal.top { - bottom: 120%; - } - .microweber ul li.is-open modal.bottom { - top: 120%; - } -} -.microweber range, -.microweber switch { - width: 100%; - height: auto; - box-sizing: content-box; - display: inline-block; - clear: right; - padding-top: 10px; - padding-bottom: 10px; - margin-top: 5px; - margin-bottom: 5px; -} -.microweber switch { - height: 30px; -} -.microweber switch input { - position: absolute; - margin-left: -9999px; - visibility: hidden; -} -.microweber switch input + label { - display: block; - position: relative; - cursor: pointer; - outline: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.microweber switch input + label { - padding: 3px; - float: right; - width: 60px; - height: 30px; - border-radius: 15px; - z-index: 3003; -} -.microweber switch input + label:before, .microweber switch input + label:after { - display: block; - position: absolute; - content: ""; -} -.microweber switch input + label:before { - height: 30px; - width: 60px; - border-radius: 27px; - border-radius: 15px; - -webkit-transition: background 0.3s; - transition: background 0.3s; - top: 0; - left: 0; -} -.microweber switch input + label:after { - width: 24px; - height: 24px; - border-radius: 27px; - -webkit-transition: margin .4s ease; - -webkit-transition: background 0.3s; - transition: background 0.3s; -} -.microweber switch label { - width: 66.66%; - float: left; -} -.microweber switch input { - width: 33.32%; - float: right; -} -.microweber .light switch input:checked + label:after { - background-color: #1ACC2F; - margin-left: 30px; - -webkit-transition: margin 0.4s, color 0.2s; - transition: margin 0.4s, color 0.2s; -} -.microweber .light switch input:hover + label:after { - background-color: #1ACC2F; - -webkit-transition: margin 0.4s, color 0.2s; - transition: margin 0.4s, color 0.2s; -} -.microweber .light switch input + label:after { - background-color: #d2e1d1; -} -.microweber .light switch input + label::before { - background-color: rgba(174, 201, 172, 0.9); - box-shadow: inset 0 0 8px -3px #aec9ac; -} -.microweber .light switch input + label { - background-color: rgba(174, 201, 172, 0.9); - box-shadow: inset 0 0 8px -3px #aec9ac; -} -.microweber .light switch input input + label:before { - background-color: #d2e1d1; -} -.microweber .dark switch input:checked + label:after { - background-color: #1ACC2F; - margin-left: 30px; - -webkit-transition: margin 0.4s, color 0.2s; - transition: margin 0.4s, color 0.2s; -} -.microweber .dark switch input:hover + label:after { - background-color: #1ACC2F; - -webkit-transition: margin 0.4s, color 0.2s; - transition: margin 0.4s, color 0.2s; -} -.microweber .dark switch input + label:after { - background-color: #39263a; -} -.microweber .dark switch input + label::before { - background-color: rgba(21, 14, 21, 0.9); - box-shadow: inset 0 0 8px -3px #150e15; -} -.microweber .dark switch input + label { - background-color: rgba(21, 14, 21, 0.9); - box-shadow: inset 0 0 8px -3px #aec9ac; -} -.microweber .dark switch input input + label:before { - background-color: #39263a; -} -.microweber range { - box-sizing: content-box; - box-sizing: content-box; - width: 100%; -} -.microweber range * { - box-sizing: content-box; -} -.microweber range label { - width: 33.33%; - max-width: 33.33%; - text-align: left; - float: left; -} -.microweber range input[type=range] { - -webkit-appearance: none; - -moz-appearance: none; - -ms-appearance: none; - border: none; - width: 50%; - float: right; - padding: 0; - box-sizing: content-box; - background-color: transparent; - -webkit-transition: color 0.2s; - transition: color 0.2s; -} -.microweber range input[type=range]:focus { - -webkit-transition: color 0.2s; - transition: color 0.2s; -} -.microweber range input[type=range]::-webkit-slider-runnable-track { - width: 50%; - float: right; - cursor: pointer; - box-shadow: inset 1px 1px 1px #000000, 0 0 1px #0d0d0d; - border-radius: 15px; - border: .2px solid #010101; - height: 30px; - padding: 3px; - -webkit-transition: color 0.2s; - transition: color 0.2s; -} -.microweber range input[type=range]::-webkit-slider-thumb { - -webkit-appearance: none; - border: none; - height: 24px; - width: 24px; - border-radius: 12px; - -webkit-transition: background 0.2s; - transition: background 0.2s; -} -.microweber range input[type=range]:hover::-webkit-slider-thumb { - background: #1ACC2F; - -webkit-transition: color 0.2s; - transition: color 0.2s; -} -.microweber range input[type=range]::-moz-range-track { - height: 30px; - border-radius: 30px; - padding: 0.75px; - float: right; -} -.microweber range input[type=range]::-moz-range-thumb { - border: none; - height: 24px; - width: 24px; - border-radius: 12px; -} -.microweber range input[type=range]:hover::-moz-range-thumb { - background: #1ACC2F; - -webkit-transition: color 0.2s; - transition: color 0.2s; -} -.microweber range input[type=range]::-ms-track { - height: 30px; - background: transparent; - border-color: transparent; - border-width: 0 0; - color: transparent; -} -.microweber range input[type=range]::-ms-fill-lower { - background: #777; - border-radius: 10px; -} -.microweber range input[type=range]::-ms-fill-upper { - background: rgba(174, 201, 172, 0.9); - border-radius: 10px; -} -.microweber range input[type=range]::-ms-thumb { - border: none; - height: 28px; - width: 30px -2; - border-radius: 25px; - background: #ccddcb; -} -.microweber range input[type=range] :focus::-ms-fill-lower { - background: #888; -} -.microweber range input[type=range] :focus::-ms-fill-upper { - background: #ccc; -} -.microweber .light range input[type=range]::-webkit-slider-runnable-track { - background: rgba(174, 201, 172, 0.9); - box-shadow: inset 0 0 8px -3px #aec9ac; -} -.microweber .light range input[type=range]::-webkit-slider-thumb { - background: #d2e1d1; -} -.microweber .light range input[type=range]::-moz-range-track { - background: rgba(174, 201, 172, 0.9); -} -.microweber .light range input[type=range]::-moz-range-thumb { - background: #d2e1d1; -} -.microweber .dark range input[type=range]::-webkit-slider-runnable-track { - background: rgba(21, 14, 21, 0.9); - box-shadow: inset 0 0 8px -3px #150e15; -} -.microweber .dark range input[type=range]::-webkit-slider-thumb { - background: #39263a; -} -.microweber .dark range input[type=range]::-moz-range-track { - background: rgba(21, 14, 21, 0.9); -} -.microweber .dark range input[type=range]::-moz-range-thumb { - background: #39263a; -} - -.mw-edit-module-settings-tooltip-btn { - position: relative; - display: block; - height: 60px; - line-height: 50px; - padding: 0 calc(1em + 60px) 0 1em; - color: rgba(204, 221, 203, 0.7); - font-size: 1.4rem; - color: #ccddcb; - background-color: black; - - - padding: 0; - height: 60px; - width: 60px; - border-radius: 30px; - position: relative; - background-color: #332234; - - -} -.mw-edit-module-settings-tooltip-btn .mw-edit-module-settings-tooltip-icon { - font-size: 50px; - top: 5px; - left: 5.7px; - position: absolute; - line-height: 100%; - text-align: center; - font-style: normal; -} diff --git a/update/userfiles/modules/microweber/css/ui.css b/update/userfiles/modules/microweber/css/ui.css index af5680f2..aee1b963 100644 --- a/update/userfiles/modules/microweber/css/ui.css +++ b/update/userfiles/modules/microweber/css/ui.css @@ -1 +1 @@ -img{max-width:100%}.deactivated{position:relative;display:block}.deactivated *{pointer-events:none}.deactivated:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.deactivated:before{display:block;position:absolute;content:" ";z-index:9;top:0;left:0;width:100%;height:100%;background:#fff;opacity:.5}.text-muted{color:#9E9E9E}.ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.pull-left{float:left!important}.pull-right{float:right!important}.mw-full-width,.w100{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.unselectable,.unselectable *{-moz-user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-o-user-select:none;-khtml-user-select:none;user-select:none}.mw-help{cursor:default;font-weight:700;font-size:11px;color:#3D89B8;position:relative;padding:0 2px;border:1px solid transparent;z-index:9;border-radius:2px}[data-help]{position:relative}.mw-help:before,[data-help]:before{position:absolute;content:attr(data-help);bottom:100%;margin-bottom:2px;left:-8px;display:block;visibility:hidden;padding:7px;background:#282828;width:175px;font-weight:400;border-radius:2px;box-shadow:0 0 8px -2px #ccc;color:#fff;z-index:10;text-align:left}.mw-help-right:before,[data-help-right]:before{left:auto;right:-8px}.mw-help-right-top:before,[data-help-right-top]:before{left:100%;top:0;bottom:auto}.mw-help-right-bottom:before,[data-help-right-bottom]:before{left:100%;bottom:0}.mw-help:hover:before,[data-help]:hover:before{visibility:visible}.mw-ui-inline-list{margin:0;padding:0}.mw-ui-inline-list>*{display:inline-block;margin-right:10px;vertical-align:middle}.mw-ui-inline-list li{list-style:none}.mw-ui-inline-list li:last-child{margin-right:0}.mw-ui-inline-list li *{vertical-align:middle}.mw-clear{clear:both}.mw-clear:after,.mw-clear:before{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.mw-fullscreen:-webkit-full-screen{background:#fff;overflow:hidden;width:100%;max-width:100%;min-width:100%;height:100%;max-height:100%;min-height:100%;position:absolute}.mw-fullscreen:-moz-full-screen{background:#fff;overflow:hidden;width:100%;height:100%}.mw-fullscreen:-ms-fullscreen{background:#fff;overflow:hidden;width:100%;height:100%}.mw-fullscreen:fullscreen{background:#fff;overflow:hidden;width:100%;height:100%}@-moz-keyframes spin{100%{-moz-transform:rotate(360deg)}}@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.mw-loading:before{position:fixed;top:50%;left:50%;width:30px;height:30px;margin:-15px 0 0 -15px;content:"";border-left:2px solid #0268cc;border-top:2px solid #fff;border-bottom:2px solid #fff;border-right:2px solid #0268cc;z-index:999;border-radius:60px;box-shadow:0 0 5px rgba(0,0,0,.47);-webkit-animation:spin 4s linear infinite;-moz-animation:spin 4s linear infinite;animation:spin 4s linear infinite}.mw-loading:after{content:'';position:absolute;display:block;top:0;left:0;width:100%;height:100%;background:url(../img/) rgba(255,255,255,.5);cursor:default;z-index:333}body.mw-loading:after,body.mw-loading:before,html.mw-loading:after,html.mw-loading:before{position:fixed}.mw-loading-defaults{position:relative}.mw-list{padding:6px 0}.mw-list li{padding-left:14px;list-style:none;line-height:2}.mw-list li [class*=mw-icon-]{font-size:25px;margin-right:6px;width:30px}.mw-socials-facebook-color{color:#3b5998}.mw-socials-twitter-color{color:#1da1f2}.mw-socials-youtube-color{color:red}.mw-socials-instagram-color{color:#c32aa3}.mw-socials-pinterest-color{color:#bd081c}.mw-socials-linkedin-color{color:#007bb5}.mw-socials-whatsapp-color{color:#25d366}.mw-socials-vimeo-color{color:#1ab7ea}.mw-socials-vk-color{color:#4a76a8}.mw-socials-viber-color{color:#59267C}.mw-m-a{margin:auto!important}.mw-m-0{margin:0!important}.mw-m-5{margin:5px!important}.mw-m-10{margin:10px!important}.mw-m-20{margin:20px!important}.mw-m-30{margin:30px!important}.mw-m-40{margin:40px!important}.mw-m-t-0{margin-top:0!important}.mw-m-t-5{margin-top:5px!important}.mw-m-t-10{margin-top:10px!important}.mw-m-t-15{margin-top:15px!important}.mw-m-t-20{margin-top:20px!important}.mw-m-t-30{margin-top:30px!important}.mw-m-t-40{margin-top:40px!important}.mw-m-t-50{margin-top:50px!important}.mw-m-t-60{margin-top:60px!important}.mw-m-t-70{margin-top:70px!important}.mw-m-t-80{margin-top:80px!important}.mw-m-l-0{margin-left:0!important}.mw-m-l-10{margin-left:10px!important}.mw-m-l-20{margin-left:20px!important}.mw-m-l-30{margin-left:30px!important}.mw-m-l-40{margin-left:40px!important}.mw-m-l-50{margin-left:50px!important}.mw-m-l-60{margin-left:60px!important}.mw-m-l-70{margin-left:70px!important}.mw-m-l-80{margin-left:80px!important}.mw-m-r-0{margin-right:0!important}.mw-m-r-10{margin-right:10px!important}.mw-m-r-20{margin-right:20px!important}.mw-m-r-30{margin-right:30px!important}.mw-m-r-40{margin-right:40px!important}.mw-m-r-50{margin-right:50px!important}.mw-m-r-60{margin-right:60px!important}.mw-m-r-70{margin-right:70px!important}.mw-m-r-80{margin-right:80px!important}.mw-m-b-0{margin-bottom:0!important}.mw-m-b-10{margin-bottom:10px!important}.mw-m-b-20{margin-bottom:20px!important}.mw-m-b-30{margin-bottom:30px!important}.mw-m-b-40{margin-bottom:40px!important}.mw-m-b-50{margin-bottom:50px!important}.mw-m-b-60{margin-bottom:60px!important}.mw-m-b-70{margin-bottom:70px!important}.mw-p-0{padding:0!important}.mw-p-10{padding:10px!important}.mw-p-20{padding:20px!important}.mw-p-30{padding:30px!important}.mw-p-40{padding:40px!important}.mw-p-t-0{padding-top:0!important}.mw-p-t-5{padding-top:5px!important}.mw-p-t-10{padding-top:10px!important}.mw-p-t-20{padding-top:20px!important}.mw-p-t-30{padding-top:30px!important}.mw-p-t-40{padding-top:40px!important}.mw-p-t-50{padding-top:50px!important}.mw-p-t-60{padding-top:60px!important}.mw-p-t-70{padding-top:70px!important}.mw-p-t-80{padding-top:80px!important}.mw-p-t-90{padding-top:90px!important}.mw-p-t-100{padding-top:100px!important}.mw-p-b-0{padding-bottom:0!important}.mw-p-b-10{padding-bottom:10px!important}.mw-p-b-20{padding-bottom:20px!important}.mw-p-b-30{padding-bottom:30px!important}.mw-p-b-40{padding-bottom:40px!important}.mw-p-b-50{padding-bottom:50px!important}.mw-p-b-60{padding-bottom:60px!important}.mw-p-b-70{padding-bottom:70px!important}.mw-p-b-80{padding-bottom:80px!important}.mw-p-b-90{padding-bottom:90px!important}.mw-p-b-100{padding-bottom:100px!important}@media screen and (max-width:991px){.mw-m-t-10{margin-top:5px!important}.mw-m-t-15{margin-top:7px!important}.mw-m-t-20{margin-top:10px!important}.mw-m-t-30{margin-top:15px!important}.mw-m-t-40{margin-top:20px!important}.mw-m-t-50{margin-top:25px!important}.mw-m-t-60{margin-top:30px!important}.mw-m-t-70{margin-top:35px!important}.mw-m-t-80{margin-top:40px!important}.mw-m-l-10{margin-left:5px!important}.mw-m-l-20{margin-left:10px!important}.mw-m-l-30{margin-left:15px!important}.mw-m-l-40{margin-left:20px!important}.mw-m-l-50{margin-left:25px!important}.mw-m-l-60{margin-left:30px!important}.mw-m-l-70{margin-left:35px!important}.mw-m-l-80{margin-left:40px!important}.mw-m-r-10{margin-right:5px!important}.mw-m-r-20{margin-right:10px!important}.mw-m-r-30{margin-right:15px!important}.mw-m-r-40{margin-right:20px!important}.mw-m-r-50{margin-right:25px!important}.mw-m-r-60{margin-right:30px!important}.mw-m-r-70{margin-right:35px!important}.mw-m-r-80{margin-right:40px!important}.mw-m-b-10{margin-bottom:5px!important}.mw-m-b-20{margin-bottom:10px!important}.mw-m-b-30{margin-bottom:15px!important}.mw-m-b-40{margin-bottom:20px!important}.mw-m-b-50{margin-bottom:25px!important}.mw-m-b-60{margin-bottom:30px!important}.mw-m-b-70{margin-bottom:35px!important}.mw-p-t-10{padding-top:5px!important}.mw-p-t-20{padding-top:10px!important}.mw-p-t-30{padding-top:15px!important}.mw-p-t-40{padding-top:20px!important}.mw-p-t-50{padding-top:25px!important}.mw-p-t-60{padding-top:30px!important}.mw-p-t-70{padding-top:35px!important}.mw-p-t-80{padding-top:40px!important}.mw-p-t-90{padding-top:45px!important}.mw-p-t-100{padding-top:50px!important}.mw-p-b-10{padding-bottom:5px!important}.mw-p-b-20{padding-bottom:10px!important}.mw-p-b-30{padding-bottom:15px!important}.mw-p-b-40{padding-bottom:20px!important}.mw-p-b-50{padding-bottom:25px!important}.mw-p-b-60{padding-bottom:30px!important}.mw-p-b-70{padding-bottom:35px!important}.mw-p-b-80{padding-bottom:40px!important}.mw-p-b-90{padding-bottom:45px!important}.mw-p-b-100{padding-bottom:50px!important}}@font-face{font-family:Microweber;src:url(fonts/font.ttf?mwv=v06) format('truetype');font-weight:400;font-style:normal}[class*=mw-icon-],[class*=mwi-]{line-height:1}[class*=mw-icon-]{font-style:normal;font-weight:400;position:relative;display:inline-block;font-size:100%;vertical-align:middle}.mw-defaults [class*=mw-icon-],.mw-ui-box [class*=mw-icon-],.mw-ui-box-header [class*=mw-icon-],.mw-ui-btn-nav [class*=mw-icon-],.mw-ui-dropdown [class*=mw-icon-],.mw-ui-navigation [class*=mw-icon-]{vertical-align:middle}[class*=mw-icon-]:before{display:inline-block;font-family:Microweber!important;text-transform:none!important}.mw-icon-mw:before{content:'m'}.mw-icon-shop:before{content:'s'}.mw-icon-blog:before{content:'b'}.mw-icon-live:before{content:'l'}.mw-icon-website:before{content:'w'}.mw-icon-none:before{content:' '}.mw-icon-page:before{content:'\0071'}.mw-icon-dynamicpage:before{content:'p'}.mw-icon-post:before{content:'\006f'}.mw-icon-category:before{content:'\0063'}.mw-icon-module:before{content:'n'}.mw-icon-gear:before{content:'t'}.mw-icon-magnify:before{content:'\00cd'}.mw-icon-plus:before{content:'\002b'}.mw-icon-pen:before{content:'\00cc'}.mw-icon-bin:before{content:'\0072'}.mw-icon-drag:before{content:'\0100'}.mw-icon-check:before{content:"\0101"}.mw-icon-checkbox:before{content:"\0113"}.mw-icon-checkbox-checked:before{content:"\0114"}.mw-icon-radio:before{content:"\0115"}.mw-icon-radio-checked:before{content:"\0116"}.mw-icon-truck:before{content:"\0103"}.mw-icon-users:before{content:"\0104"}.mw-icon-microweber:before{content:"\0106"}.mw-icon-back:before{content:"\0107"}.mw-icon-menu:before{content:"\0108"}.mw-icon-image:before,.mw-icon-picture:before{content:"\0109"}.mw-icon-comment:before{content:"\0110"}.mw-icon-close:before{content:"\0111"}.mw-icon-product:before{content:"\0112"}.mw-icon-dropdown:before{content:"\0118"}.mw-icon-pricefields:before{content:"\0119"}.mw-icon-unpublish:before{content:"\0120"}.mw-icon-download:before{content:"\0121"}.mw-icon-download-2:before{content:"\0149"}.mw-icon-reload:before{content:"\0122"}.mw-icon-facebook:before{content:"\0123"}.mw-icon-twitter:before{content:"\0124"}.mw-icon-googleplus:before{content:"\0125"}.mw-icon-user:before{content:"\0126"}.mw-icon-off:before{content:"\0127"}.mw-icon-lock:before{content:"\0128"}.mw-icon-menuadd:before{content:"\0129"}.mw-icon-template:before{content:"\0130"}.mw-icon-market:before{content:"\0131"}.mw-icon-suggest:before{content:"\0132"}.mw-icon-notification:before{content:"\0133"}.mw-icon-updates:before{content:"\0134"}.mw-icon-comments:before{content:"\0135"}.mw-icon-arrowdown:before{content:"\0136"}.mw-icon-arrowup:before{content:"\0139"}.mw-icon-arrowleft:before{content:"\0137"}.mw-icon-arrowright:before{content:"\0138"}.mw-icon-video:before{content:"\0140"}.mw-icon-file:before{content:"\0141"}.mw-icon-upgrades:before{content:"\0142"}.mw-icon-shopcart:before{content:"\0143"}.mw-icon-crop:before{content:"\0144"}.mw-icon-network:before{content:"\0145"}.mw-icon-drop:before{content:"\0146"}.mw-icon-next-thick:before{content:"\0147"}.mw-icon-prev-thick:before{content:"\0148"}.mw-icon-alert:before{content:"\f101"}.mw-icon-alert-circled:before{content:"\f100"}.mw-icon-web-add:before{content:"\f2c7"}.mw-icon-web-alarm:before{content:"\f2c8"}.mw-icon-web-archive:before{content:"\f2c9"}.mw-icon-web-arrow-back:before{content:"\f2ca"}.mw-icon-web-arrow-down-left:before{content:"\f2cb"}.mw-icon-web-arrow-down-right:before{content:"\f2cc"}.mw-icon-web-arrow-forward:before{content:"\f30f"}.mw-icon-web-arrow-up-left:before{content:"\f2cd"}.mw-icon-web-arrow-up-right:before{content:"\f2ce"}.mw-icon-web-battery:before{content:"\f2cf"}.mw-icon-web-calendar:before{content:"\f2d1"}.mw-icon-web-call:before{content:"\f2d2"}.mw-icon-web-camera:before{content:"\f2d3"}.mw-icon-web-chat:before{content:"\f2d4"}.mw-icon-web-checkmark:before{content:"\f2d5"}.mw-icon-web-clock:before{content:"\f2d6"}.mw-icon-web-close:before{content:"\f2d7"}.mw-icon-web-developer:before{content:"\f2db"}.mw-icon-web-display:before{content:"\f2dc"}.mw-icon-web-dropdown:before{content:"\f2de"}.mw-icon-web-earth:before{content:"\f2df"}.mw-icon-web-folder:before{content:"\f2e0"}.mw-icon-web-forums:before{content:"\f2e1"}.mw-icon-web-image:before{content:"\f2e4"}.mw-icon-web-information:before{content:"\f2e6"}.mw-icon-web-keypad:before{content:"\f2e7"}.mw-icon-web-lightbulb:before{content:"\f2e8"}.mw-icon-web-locate:before{content:"\f2e9"}.mw-icon-web-location:before{content:"\f2ea"}.mw-icon-web-mail:before{content:"\f2eb"}.mw-icon-web-microphone:before{content:"\f2ec"}.mw-icon-web-mixer:before{content:"\f2ed"}.mw-icon-web-more:before{content:"\f2ee"}.mw-icon-web-note:before{content:"\f2ef"}.mw-icon-web-playstore:before{content:"\f2f0"}.mw-icon-web-printer:before{content:"\f2f1"}.mw-icon-web-promotion:before{content:"\f2f2"}.mw-icon-web-reminder:before{content:"\f2f3"}.mw-icon-web-remove:before{content:"\f2f4"}.mw-icon-web-search:before{content:"\f2f5"}.mw-icon-web-settings:before{content:"\f2f7"}.mw-icon-web-share:before{content:"\f2f8"}.mw-icon-web-social:before{content:"\f2fa"}.mw-icon-web-social-user:before{content:"\f2f9"}.mw-icon-web-star:before{content:"\f2fc"}.mw-icon-web-wifi:before{content:"\f305"}.mw-icon-aperture:before{content:"\f313"}.mw-icon-archive:before{content:"\f102"}.mw-icon-arrow-down-a:before{content:"\f103"}.mw-icon-arrow-down-b:before{content:"\f104"}.mw-icon-arrow-down-c:before{content:"\f105"}.mw-icon-arrow-expand:before{content:"\f25e"}.mw-icon-arrow-left-a:before{content:"\f106"}.mw-icon-arrow-left-b:before{content:"\f107"}.mw-icon-arrow-left-c:before{content:"\f108"}.mw-icon-arrow-move:before{content:"\f263"}.mw-icon-arrow-resize:before{content:"\f264"}.mw-icon-arrow-return-left:before{content:"\f265"}.mw-icon-arrow-return-right:before{content:"\f266"}.mw-icon-arrow-right-a:before{content:"\f109"}.mw-icon-arrow-right-b:before{content:"\f10a"}.mw-icon-arrow-right-c:before{content:"\f10b"}.mw-icon-arrow-shrink:before{content:"\f267"}.mw-icon-arrow-swap:before{content:"\f268"}.mw-icon-arrow-up-a:before{content:"\f10c"}.mw-icon-arrow-up-b:before{content:"\f10d"}.mw-icon-arrow-up-c:before{content:"\f10e"}.mw-icon-beaker:before{content:"\f269"}.mw-icon-bookmark:before{content:"\f26b"}.mw-icon-briefcase:before{content:"\f26c"}.mw-icon-camera:before{content:"\f118"}.mw-icon-card:before{content:"\f119"}.mw-icon-chatbox:before{content:"\f11b"}.mw-icon-chatbox-working:before{content:"\f11a"}.mw-icon-chatboxes:before{content:"\f11c"}.mw-icon-chatbubble:before{content:"\f11e"}.mw-icon-chatbubble-working:before{content:"\f11d"}.mw-icon-chatbubbles:before{content:"\f11f"}.mw-icon-checkmark:before{content:"\f122"}.mw-icon-checkmark-circled:before{content:"\f120"}.mw-icon-checkmark-round:before{content:"\f121"}.mw-icon-clock:before{content:"\f26e"}.mw-icon-close2:before{content:"\f12a"}.mw-icon-close-circled:before{content:"\f128"}.mw-icon-close-round:before{content:"\f129"}.mw-icon-cloud:before{content:"\f12b"}.mw-icon-code:before{content:"\f271"}.mw-icon-code-working:before{content:"\f270"}.mw-icon-coffee:before{content:"\f272"}.mw-icon-compose:before{content:"\f12c"}.mw-icon-connectmw-icon-bars:before{content:"\f274"}.mw-icon-contrast:before{content:"\f275"}.mw-icon-cube:before{content:"\f318"}.mw-icon-document:before{content:"\f12f"}.mw-icon-document-text:before{content:"\f12e"}.mw-icon-earth:before{content:"\f276"}.mw-icon-edit:before{content:"\f2bf"}.mw-icon-eject:before{content:"\f131"}.mw-icon-email:before{content:"\f132"}.mw-icon-eye:before{content:"\f133"}.mw-icon-eye-disabled:before{content:"\f306"}.mw-icon-filing:before{content:"\f134"}.mw-icon-film-marker:before{content:"\f135"}.mw-icon-flag:before{content:"\f279"}.mw-icon-flash:before{content:"\f137"}.mw-icon-flask:before{content:"\f138"}.mw-icon-folder:before{content:"\f139"}.mw-icon-forward:before{content:"\f13a"}.mw-icon-gear-a:before{content:"\f13d"}.mw-icon-gear-b:before{content:"\f13e"}.mw-icon-grid:before{content:"\f13f"}.mw-icon-headphone:before{content:"\f140"}.mw-icon-heart:before{content:"\f141"}.mw-icon-help-circled:before{content:"\f142"}.mw-icon-home:before{content:"\f144"}.mw-icon-icon-social-google-plus:before{content:"\f146"}.mw-icon-icon-social-google-plus-outline:before{content:"\f145"}.mw-icon-image-frame:before{content:"\f147"}.mw-icon-images-frame:before{content:"\f148"}.mw-icon-information:before{content:"\f14a"}.mw-icon-informatmw-icon-circled:before{content:"\f149"}.mw-icon-app-alarm:before{content:"\f14d"}.mw-icon-app-alarm-outline:before{content:"\f14c"}.mw-icon-app-albums:before{content:"\f14f"}.mw-icon-app-albums-outline:before{content:"\f14e"}.mw-icon-app-arrow-back:before{content:"\f150"}.mw-icon-app-arrow-down:before{content:"\f151"}.mw-icon-app-arrow-forward:before{content:"\f152"}.mw-icon-arrow-left-slim:before{content:"\f153"}.mw-icon-arrow-right-slim:before{content:"\f154"}.mw-icon-app-arrow-thin-down:before{content:"\f27e"}.mw-icon-app-arrow-thin-left:before{content:"\f27f"}.mw-icon-app-arrow-thin-right:before{content:"\f280"}.mw-icon-app-arrow-thin-up:before{content:"\f281"}.mw-icon-app-arrow-up:before{content:"\f155"}.mw-icon-app-briefcase:before{content:"\f283"}.mw-icon-app-briefcase-outline:before{content:"\f282"}.mw-icon-app-browsers:before{content:"\f161"}.mw-icon-app-browsers-outline:before{content:"\f160"}.mw-icon-app-calendar:before{content:"\f163"}.mw-icon-app-calendar-outline:before{content:"\f162"}.mw-icon-app-camera:before{content:"\f165"}.mw-icon-app-camera-outline:before{content:"\f164"}.mw-icon-cart:before{content:"\f167"}.mw-icon-cart-outline:before{content:"\f166"}.mw-icon-app-chatboxes:before{content:"\f169"}.mw-icon-app-chatboxes-outline:before{content:"\f168"}.mw-icon-app-chatbubble:before{content:"\f16b"}.mw-icon-app-chatbubble-outline:before{content:"\f16a"}.mw-icon-app-checkmark:before{content:"\f16e"}.mw-icon-app-checkmark-empty:before{content:"\f16c"}.mw-icon-app-checkmark-outline:before{content:"\f16d"}.mw-icon-app-circle-outline:before{content:"\f170"}.mw-icon-lite-clock:before{content:"\f172"}.mw-icon-lite-clock-outline:before{content:"\f171"}.mw-icon-app-close:before{content:"\f2bc"}.mw-icon-app-close-empty:before{content:"\f2bd"}.mw-icon-app-close-outline:before{content:"\f2bb"}.mw-icon-app-cloud:before{content:"\f178"}.mw-icon-app-cloud-download:before{content:"\f174"}.mw-icon-app-cloud-download-outline:before{content:"\f173"}.mw-icon-app-cloud-outline:before{content:"\f175"}.mw-icon-app-compose:before{content:"\f17e"}.mw-icon-app-compose-outline:before{content:"\f17d"}.mw-icon-app-copy:before{content:"\f182"}.mw-icon-app-copy-outline:before{content:"\f181"}.mw-icon-app-download:before{content:"\f184"}.mw-icon-app-email:before{content:"\f187"}.mw-icon-app-email-outline:before{content:"\f186"}.mw-icon-app-expand:before{content:"\f30d"}.mw-icon-app-fastforward:before{content:"\f18b"}.mw-icon-app-fastforward-outline:before{content:"\f18a"}.mw-icon-app-gear:before{content:"\f195"}.mw-icon-app-gear-outline:before{content:"\f194"}.mw-icon-app-heart:before{content:"\f199"}.mw-icon-app-heart-outline:before{content:"\f198"}.mw-icon-help:before{content:"\f19c"}.mw-icon-help-outline:before{content:"\f19b"}.mw-icon-app-keypad:before{content:"\f1a4"}.mw-icon-app-keypad-outline:before{content:"\f1a3"}.mw-icon-app-lightbulb:before{content:"\f287"}.mw-icon-app-lightbulb-outline:before{content:"\f286"}.mw-icon-app-location:before{content:"\f1a6"}.mw-icon-app-locatmw-icon-outline:before{content:"\f1a5"}.mw-icon-app-locked:before{content:"\f1a8"}.mw-icon-app-locked-outline:before{content:"\f1a7"}.mw-icon-app-loop:before{content:"\f32d"}.mw-icon-app-loop-strong:before{content:"\f32c"}.mw-icon-app-medkit:before{content:"\f289"}.mw-icon-app-mic:before{content:"\f1ab"}.mw-icon-app-mic-off:before{content:"\f1a9"}.mw-icon-app-mic-outline:before{content:"\f1aa"}.mw-icon-app-more:before{content:"\f1b4"}.mw-icon-app-paper-outline:before{content:"\f32e"}.mw-icon-app-pause:before{content:"\f1be"}.mw-icon-app-pause-outline:before{content:"\f1bd"}.mw-icon-app-person:before{content:"\f1c2"}.mw-icon-app-person-outline:before{content:"\f1c1"}.mw-icon-app-photos:before{content:"\f1c6"}.mw-icon-app-photos-outline:before{content:"\f1c5"}.mw-icon-app-pie:before{content:"\f28b"}.mw-icon-app-pie-outline:before{content:"\f28a"}.mw-icon-app-play:before{content:"\f1c8"}.mw-icon-app-play-outline:before{content:"\f1c7"}.mw-icon-app-plus:before{content:"\f1cb"}.mw-icon-app-plus-empty:before{content:"\f1c9"}.mw-icon-app-plus-outline:before{content:"\f1ca"}.mw-icon-app-pricetag:before{content:"\f28d"}.mw-icon-app-pricetag-outline:before{content:"\f28c"}.mw-icon-app-pricetags:before{content:"\f333"}.mw-icon-app-pricetags-outline:before{content:"\f332"}.mw-icon-app-printer:before{content:"\f1cd"}.mw-icon-app-printer-outline:before{content:"\f1cc"}.mw-icon-app-pulse:before{content:"\f335"}.mw-icon-app-pulse-strong:before{content:"\f334"}.mw-icon-app-redo:before{content:"\f1d3"}.mw-icon-app-redo-outline:before{content:"\f1d2"}.mw-icon-app-refresh-empty:before{content:"\f1d4"}.mw-icon-app-reload:before,.mw-icon-app-reloading:before{content:"\f28e"}.mw-icon-app-reverse-camera:before{content:"\f337"}.mw-icon-app-reverse-camera-outline:before{content:"\f336"}.mw-icon-app-rewind:before{content:"\f1d8"}.mw-icon-app-rewind-outline:before{content:"\f1d7"}.mw-icon-app-search:before{content:"\f1da"}.mw-icon-app-search-strong:before{content:"\f1d9"}.mw-icon-app-shrink:before{content:"\f30e"}.mw-icon-app-skipbackward:before{content:"\f1dc"}.mw-icon-app-skipbackward-outline:before{content:"\f1db"}.mw-icon-app-skipforward:before{content:"\f1de"}.mw-icon-app-skipforward-outline:before{content:"\f1dd"}.mw-icon-app-speedometer:before{content:"\f290"}.mw-icon-app-speedometer-outline:before{content:"\f28f"}.mw-icon-app-star:before{content:"\f1e0"}.mw-icon-app-star-half:before{content:"\f33a"}.mw-icon-app-star-outline:before{content:"\f1df"}.mw-icon-app-stopwatch:before{content:"\f1e2"}.mw-icon-app-stopwatch-outline:before{content:"\f1e1"}.mw-icon-app-sunny:before{content:"\f1e4"}.mw-icon-app-sunny-outline:before{content:"\f1e3"}.mw-icon-app-telephone:before{content:"\f1e6"}.mw-icon-app-telephone-outline:before{content:"\f1e5"}.mw-icon-app-toggle:before{content:"\f33e"}.mw-icon-app-toggle-outline:before{content:"\f33d"}.mw-icon-app-trash:before{content:"\f1ec"}.mw-icon-app-trash-outline:before{content:"\f1eb"}.mw-icon-app-undo:before{content:"\f1ee"}.mw-icon-app-undo-outline:before{content:"\f1ed"}.mw-icon-app-unlocked:before{content:"\f1f0"}.mw-icon-app-unlocked-outline:before{content:"\f1ef"}.mw-icon-ipad:before{content:"\f1f9"}.mw-icon-iphone:before{content:"\f1fa"}.mw-icon-ipod:before{content:"\f1fb"}.mw-icon-laptop:before{content:"\f1fc"}.mw-icon-leaf:before{content:"\f1fd"}.mw-icon-lightbulb:before{content:"\f299"}.mw-icon-link:before{content:"\f1fe"}.mw-icon-load-a:before,.mw-icon-loading-a:before{content:"\f29a"}.mw-icon-load-c:before,.mw-icon-loading-c:before{content:"\f29c"}.mw-icon-location:before{content:"\f1ff"}.mw-icon-locked:before{content:"\f200"}.mw-icon-loop:before,.mw-icon-looping:before{content:"\f201"}.mw-icon-market-rocket:before{content:'\002a'}.mw-icon-map:before{content:"\f203"}.mw-icon-medkit:before{content:"\f2a2"}.mw-icon-merge:before{content:"\f33f"}.mw-icon-mic-a:before{content:"\f204"}.mw-icon-mic-c:before{content:"\f206"}.mw-icon-monitor:before{content:"\f20a"}.mw-icon-more:before{content:"\f20b"}.mw-icon-mouse:before{content:"\f340"}.mw-icon-navicon:before{content:"\f20e"}.mw-icon-navicon-round:before{content:"\f20d"}.mw-icon-navigate:before{content:"\f2a3"}.mw-icon-outlet:before{content:"\f342"}.mw-icon-pause:before{content:"\f210"}.mw-icon-person:before{content:"\f213"}.mw-icon-person-add:before{content:"\f211"}.mw-icon-person-stalker:before{content:"\f212"}.mw-icon-pie-graph:before{content:"\f2a5"}.mw-icon-pin:before{content:"\f2a6"}.mw-icon-pinpoint:before{content:"\f2a7"}.mw-icon-play:before{content:"\f215"}.mw-icon-plus-circled:before{content:"\f216"}.mw-icon-plus-round:before{content:"\f217"}.mw-icon-podium:before{content:"\f344"}.mw-icon-power:before{content:"\f2a9"}.mw-icon-pricetag:before{content:"\f2aa"}.mw-icon-pricetags:before{content:"\f2ab"}.mw-icon-printer:before{content:"\f21a"}.mw-icon-pull-request:before{content:"\f345"}.mw-icon-qr-scanner:before{content:"\f346"}.mw-icon-quote:before{content:"\f347"}.mw-icon-radio-waves:before{content:"\f2ac"}.mw-icon-refresh:before,.mw-icon-refreshing:before{content:"\f21c"}.mw-icon-reply:before{content:"\f21e"}.mw-icon-reply-all:before{content:"\f21d"}.mw-icon-ribbon-a:before{content:"\f348"}.mw-icon-ribbon-b:before{content:"\f349"}.mw-icon-scissors:before{content:"\f34b"}.mw-icon-search:before{content:"\f21f"}.mw-icon-settings:before{content:"\f2ad"}.mw-icon-share:before{content:"\f220"}.mw-icon-skip-backward:before{content:"\f222"}.mw-icon-skip-forward:before{content:"\f223"}.mw-icon-social-web:before{content:"\f225"}.mw-icon-social-web-outline:before{content:"\f224"}.mw-icon-social-apple:before{content:"\f227"}.mw-icon-social-apple-outline:before{content:"\f226"}.mw-icon-social-bitcoin:before{content:"\f2af"}.mw-icon-social-bitcoin-outline:before{content:"\f2ae"}.mw-icon-social-buffer:before{content:"\f229"}.mw-icon-social-buffer-outline:before{content:"\f228"}.mw-icon-social-designernews:before{content:"\f22b"}.mw-icon-social-designernews-outline:before{content:"\f22a"}.mw-icon-social-dribbble:before{content:"\f22d"}.mw-icon-social-dribbble-outline:before{content:"\f22c"}.mw-icon-social-dropbox:before{content:"\f22f"}.mw-icon-social-dropbox-outline:before{content:"\f22e"}.mw-icon-social-facebook:before{content:"\f231"}.mw-icon-social-facebook-outline:before{content:"\f230"}.mw-icon-social-github:before{content:"\f233"}.mw-icon-social-github-outline:before{content:"\f232"}.mw-icon-social-google:before{content:"\f34f"}.mw-icon-social-google-outline:before{content:"\f34e"}.mw-icon-social-googleplus:before{content:"\f235"}.mw-icon-social-googleplus-outline:before{content:"\f234"}.mw-icon-social-hackernews:before{content:"\f237"}.mw-icon-social-hackernews-outline:before{content:"\f236"}.mw-icon-social-instagram:before{content:"\f351"}.mw-icon-social-linkedin:before{content:"\f239"}.mw-icon-social-linkedin-outline:before{content:"\f238"}.mw-icon-social-pinterest:before{content:"\f2b1"}.mw-icon-social-pinterest-outline:before{content:"\f2b0"}.mw-icon-social-reddit:before{content:"\f23b"}.mw-icon-social-reddit-outline:before{content:"\f23a"}.mw-icon-social-rss:before{content:"\f23d"}.mw-icon-social-rss-outline:before{content:"\f23c"}.mw-icon-social-skype:before{content:"\f23f"}.mw-icon-social-skype-outline:before{content:"\f23e"}.mw-icon-social-tumblr:before{content:"\f241"}.mw-icon-social-tumblr-outline:before{content:"\f240"}.mw-icon-social-twitter:before{content:"\f243"}.mw-icon-social-twitter-outline:before{content:"\f242"}.mw-icon-social-usd:before{content:"\f353"}.mw-icon-social-usd-outline:before{content:"\f352"}.mw-icon-social-vimeo:before{content:"\f245"}.mw-icon-social-vimeo-outline:before{content:"\f244"}.mw-icon-social-windows:before{content:"\f247"}.mw-icon-social-windows-outline:before{content:"\f246"}.mw-icon-social-wordpress:before{content:"\f249"}.mw-icon-social-wordpress-outline:before{content:"\f248"}.mw-icon-social-yahoo:before{content:"\f24b"}.mw-icon-social-youtube:before{content:"\f24d"}.mw-icon-social-youtube-outline:before{content:"\f24c"}.mw-icon-speakerphone:before{content:"\f2b2"}.mw-icon-speedometer:before{content:"\f2b3"}.mw-icon-star:before{content:"\f24e"}.mw-icon-stop:before{content:"\f24f"}.mw-icon-thermometer:before{content:"\f2b6"}.mw-icon-thumbsdown:before{content:"\f250"}.mw-icon-thumbsup:before{content:"\f251"}.mw-icon-trash-a:before{content:"\f252"}.mw-icon-trash-b:before{content:"\f253"}.mw-icon-unlocked:before{content:"\f254"}.mw-icon-upload:before{content:"\f255"}.mw-icon-usb:before{content:"\f2b8"}.mw-icon-volume-high:before{content:"\f257"}.mw-icon-volume-low:before{content:"\f258"}.mw-icon-volume-medium:before{content:"\f259"}.mw-icon-wand:before{content:"\f358"}.mw-icon-waterdrop:before{content:"\f25b"}.mw-icon-wifi:before{content:"\f25c"}.mw-icon-wineglass:before{content:"\f2b9"}.mw-icon-wrench:before{content:"\f2ba"}.mw-icon-bars:before{content:'\014a'}.mw-icon-money-outline:before{content:'\014b'}.mw-icon-wrench-outline:before{content:'\014c'}.mw-icon-customer:before{content:'\014d'}.mw-tree .mw-tree-nav-skin-default{padding:20px 0 20px 20px}.mw-tree *{vertical-align:middle}.mw-tree-nav li.skip-true{opacity:.6;pointer-events:none;cursor:no-drop}.mw-tree-nav .opened>ul{display:block}.mw-tree-nav-skin-default{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mw-tree-nav-skin-default ul{display:none}.mw-tree-nav-skin-default .mw-tree-item-content{cursor:pointer}.mw-tree-nav-skin-default .mw-tree-item-title{padding:0 42px 0 5px;border-radius:2px;display:inline-block;border:1px solid transparent;transition:all .3s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.mw-tree-nav-skin-default tree-label{width:20px}.mw-tree-nav-skin-default tree-label+.mw-tree-item-title{max-width:-webkit-calc(75%);max-width:calc(75%)}.mw-tree-nav-skin-default li{list-style:none}.mw-tree-nav-skin-default li *{vertical-align:middle}.mw-tree-nav-skin-default li.selected>.mw-tree-item-content .mw-tree-item-title{color:#0e80e5;font-weight:700}.mw-tree-nav-skin-default li.selected>.mw-tree-item-content .mw-tree-item-title:before{color:#0e80e5;font-weight:400}.mw-tree-nav-skin-default li.selected>.mw-tree-item-content .mw-tree-item-title,.mw-tree-nav-skin-default li:hover>.mw-tree-item-content .mw-tree-item-title{background:#fff;border:1px solid #EDEDED;padding-left:5px}.mw-tree-nav-skin-default li li{padding-left:30px}.mw-tree-nav-skin-default li li,.mw-tree-nav-skin-default li ul{position:relative}.mw-tree-nav-skin-default li ul li:after{position:absolute;top:0;left:7px;bottom:0;width:1px;content:'';background:#ccc}.mw-tree-nav-skin-default li ul li:last-child:after{bottom:auto;height:19px}.mw-tree-nav-skin-default li ul li:before{position:absolute;top:17px;left:8px;width:20px;height:1px;content:'';background:#ccc}.mw-tree-nav-skin-default .mw-tree-toggler{display:inline-block;width:14px;border-radius:30px;color:#929292;font-weight:700;border:none;cursor:pointer;outline:0;text-align:center;padding:0;line-height:14px;margin-right:7px;font-size:16px;font-family:Microweber}.mw-tree-nav-skin-default .mw-tree-toggler:after{content:'\f10a';transition:.3s;position:relative;display:inline-block}.mw-tree-nav-skin-default .mw-tree-toggler.opened:after{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.mw-tree-nav-skin-default .mw-tree-context-menu-item{font-size:17px;display:inline-block;visibility:hidden;position:relative;height:21px;width:21px;line-height:17px;text-align:center;border:1px solid transparent;color:#3B3B3B;opacity:.5;cursor:pointer;border-radius:2px}.mw-tree-nav-skin-default .mw-tree-item-content:hover .mw-tree-context-menu-item{visibility:visible}.mw-tree-nav-skin-default .mw-tree-context-menu-item:hover{opacity:1;color:#fff;background:#212121}.mw-tree-nav-skin-default .mw-tree-item-content{color:#212121;padding:0;display:inline-block;position:relative;border-top:1px solid transparent;border-bottom:1px solid transparent;outline:0;background-repeat:no-repeat;line-height:27px;width:100%}.mw-tree-nav-skin-default .has-children>.mw-tree-item-content{width:-webkit-calc(100% - 21px);width:calc(100% - 21px)}.mw-tree-nav-skin-default .mw-tree-context-menu{display:inline-block;position:absolute;top:1px;right:5px}.mw-tree-nav-skin-default .mw-tree-item-title [class*=mai-],.mw-tree-nav-skin-default .mw-tree-item-title [class*=mw-icon-],.mw-tree-nav-skin-default .mw-tree-item-title:before{color:#999;font-size:19px;display:inline-block;position:relative;top:3px;margin-right:3px}.mw-tree-nav-skin-default .mw-tree-item-title:before{font-family:Microweber}.mw-tree-nav-skin-default li.type-category>.mw-tree-item-content .mw-tree-item-title:before{content:'c';text-shadow:0 0 1px #000}.mw-tree-nav-skin-default li.type-page>.mw-tree-item-content .mw-tree-item-title:before{content:'q'}.mw-tree-nav-skin-default li.type-page.subtype-home>.mw-tree-item-content .mw-tree-item-title:before{content:"\0070";font-family:admin}.mw-tree-nav-skin-default li.type-page.subtype-shop>.mw-tree-item-content .mw-tree-item-title:before{content:'\0053';font-family:admin}.mw-tree-nav-skin-default li.type-page.subtype-dynamic>.mw-tree-item-content .mw-tree-item-title:before{content:'B';font-family:inherit;font-size:20px;top:3px;color:#2b2b2b;font-weight:400;z-index:1}.mw-tree-nav-skin-default .mw-tree-item-hidden{display:none}html[dir=rtl] .mw-tree-nav-skin-default{padding-right:20px;padding-left:0}html[dir=rtl] .mw-tree-nav-skin-default .mw-tree-toggler{margin-right:0;margin-left:7px}html[dir=rtl] .mw-tree-nav-skin-default .mw-tree-toggler:not(.opened){transform:rotate(180deg)}html[dir=rtl] .mw-tree-nav-skin-default .mw-tree-item-title{padding-left:42px;padding-right:5px}html[dir=rtl] .mw-tree-nav-skin-default .mw-tree-item-title [class*=mai-],html[dir=rtl] .mw-tree-nav-skin-default .mw-tree-item-title [class*=mw-icon-],html[dir=rtl] .mw-tree-nav-skin-default .mw-tree-item-title:before{margin-left:3px;margin-right:0}html[dir=rtl] .mw-tree-nav-skin-default li:before{left:auto;right:8px}html[dir=rtl] .mw-tree-nav-skin-default li:after{left:auto;right:7px;bottom:0}html[dir=rtl] .mw-tree-nav-skin-default li li{padding-right:30px;padding-left:0}html[dir=rtl] .mw-tree-nav-skin-default .mw-tree-context-menu{right:auto;left:5px}.mw-ui-box{border:1px solid #e5e5e5;border-radius:2px;clear:both;background-color:#fff;box-shadow:0 .126rem .26rem rgba(0,0,0,.066)!important}.mw-ui-box,.mw-ui-box-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mw-ui-box-header{background:#fafafa;overflow:hidden;padding:10px;border-bottom:1px solid #e5e5e5;border-top-left-radius:2px;border-top-right-radius:2px}.mw-ui-box-header a{text-decoration:none}.mw-ui-box-header>[class*=mw-icon-]{font-size:20px;line-height:20px;float:left;margin-right:12px}.mw-ui-box-header h2{padding:0}.mw-ui-box-content.mw-accordion-content{overflow:auto}.mw-ui-box-content{padding:12px;position:relative}.mw-ui-box-content:after,.mw-ui-box:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0;font-size:0}.mw-ui-box-invert{background-color:#2b2b2b;color:#fff;border-color:transparent}.mw-ui-box-info{background-color:#009cff;color:#fff;border-color:transparent}.mw-ui-box-warn{background-color:#fa8e36;color:#fff;border-color:transparent}.mw-ui-box-important{background-color:#f12b1c;color:#fff;border-color:transparent}.mw-ui-box-notification{background-color:#469a36;color:#fff;border-color:transparent}.mw-ui-box-invert>.mw-ui-box-header{background-color:#454545;color:#fff}.mw-ui-box-info>.mw-ui-box-header{background-color:#33b0ff;color:#fff}.mw-ui-box-warn>.mw-ui-box-header{background-color:#fbaa68;color:#fff}.mw-ui-box-important>.mw-ui-box-header{background-color:#f4584c;color:#fff}.mw-ui-box-notification>.mw-ui-box-header{background-color:#58be45;color:#fff}.mw-ui-box-accordion-content{overflow:hidden;background:#fafafa}.mw-accordion-active>.mw-ui-box-content,.mw-ui-box-accordion>.mw-ui-box-content{display:none}.mw-flex-row{box-sizing:border-box;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-.5rem;margin-left:-.5rem;clear:both}.mw-flex-row.reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.mw-flex-col.reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.mw-flex-col-xs,.mw-flex-col-xs-1,.mw-flex-col-xs-10,.mw-flex-col-xs-11,.mw-flex-col-xs-12,.mw-flex-col-xs-2,.mw-flex-col-xs-3,.mw-flex-col-xs-4,.mw-flex-col-xs-5,.mw-flex-col-xs-6,.mw-flex-col-xs-7,.mw-flex-col-xs-8,.mw-flex-col-xs-9,.mw-flex-col-xs-offset-0,.mw-flex-col-xs-offset-1,.mw-flex-col-xs-offset-10,.mw-flex-col-xs-offset-11,.mw-flex-col-xs-offset-12,.mw-flex-col-xs-offset-2,.mw-flex-col-xs-offset-3,.mw-flex-col-xs-offset-4,.mw-flex-col-xs-offset-5,.mw-flex-col-xs-offset-6,.mw-flex-col-xs-offset-7,.mw-flex-col-xs-offset-8,.mw-flex-col-xs-offset-9{box-sizing:border-box;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:.5rem;padding-left:.5rem}.mw-flex-col-xs{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.mw-flex-col-xs-1{-ms-flex-preferred-size:8.33333333%;flex-basis:8.33333333%;max-width:8.33333333%}.mw-flex-col-xs-2{-ms-flex-preferred-size:16.66666667%;flex-basis:16.66666667%;max-width:16.66666667%}.mw-flex-col-xs-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.mw-flex-col-xs-4{-ms-flex-preferred-size:33.33333333%;flex-basis:33.33333333%;max-width:33.33333333%}.mw-flex-col-xs-5{-ms-flex-preferred-size:41.66666667%;flex-basis:41.66666667%;max-width:41.66666667%}.mw-flex-col-xs-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.mw-flex-col-xs-7{-ms-flex-preferred-size:58.33333333%;flex-basis:58.33333333%;max-width:58.33333333%}.mw-flex-col-xs-8{-ms-flex-preferred-size:66.66666667%;flex-basis:66.66666667%;max-width:66.66666667%}.mw-flex-col-xs-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.mw-flex-col-xs-10{-ms-flex-preferred-size:83.33333333%;flex-basis:83.33333333%;max-width:83.33333333%}.mw-flex-col-xs-11{-ms-flex-preferred-size:91.66666667%;flex-basis:91.66666667%;max-width:91.66666667%}.mw-flex-col-xs-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.mw-flex-col-xs-offset-0{margin-left:0}.mw-flex-col-xs-offset-1{margin-left:8.33333333%}.mw-flex-col-xs-offset-2{margin-left:16.66666667%}.mw-flex-col-xs-offset-3{margin-left:25%}.mw-flex-col-xs-offset-4{margin-left:33.33333333%}.mw-flex-col-xs-offset-5{margin-left:41.66666667%}.mw-flex-col-xs-offset-6{margin-left:50%}.mw-flex-col-xs-offset-7{margin-left:58.33333333%}.mw-flex-col-xs-offset-8{margin-left:66.66666667%}.mw-flex-col-xs-offset-9{margin-left:75%}.mw-flex-col-xs-offset-10{margin-left:83.33333333%}.mw-flex-col-xs-offset-11{margin-left:91.66666667%}.mw-flex-start-xs{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:start}.mw-flex-center-xs{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.mw-flex-end-xs{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:end}.mw-flex-top-xs{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mw-flex-middle-xs{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mw-flex-bottom-xs{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.mw-flex-around-xs{-ms-flex-pack:distribute;justify-content:space-around}.mw-flex-between-xs{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mw-flex-first-xs{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.mw-flex-last-xs{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}@media only screen and (min-width:48em){.mw-flex-col-sm,.mw-flex-col-sm-1,.mw-flex-col-sm-10,.mw-flex-col-sm-11,.mw-flex-col-sm-12,.mw-flex-col-sm-2,.mw-flex-col-sm-3,.mw-flex-col-sm-4,.mw-flex-col-sm-5,.mw-flex-col-sm-6,.mw-flex-col-sm-7,.mw-flex-col-sm-8,.mw-flex-col-sm-9,.mw-flex-col-sm-offset-0,.mw-flex-col-sm-offset-1,.mw-flex-col-sm-offset-10,.mw-flex-col-sm-offset-11,.mw-flex-col-sm-offset-12,.mw-flex-col-sm-offset-2,.mw-flex-col-sm-offset-3,.mw-flex-col-sm-offset-4,.mw-flex-col-sm-offset-5,.mw-flex-col-sm-offset-6,.mw-flex-col-sm-offset-7,.mw-flex-col-sm-offset-8,.mw-flex-col-sm-offset-9{box-sizing:border-box;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:.5rem;padding-left:.5rem}.mw-flex-col-sm{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.mw-flex-col-sm-1{-ms-flex-preferred-size:8.33333333%;flex-basis:8.33333333%;max-width:8.33333333%}.mw-flex-col-sm-2{-ms-flex-preferred-size:16.66666667%;flex-basis:16.66666667%;max-width:16.66666667%}.mw-flex-col-sm-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.mw-flex-col-sm-4{-ms-flex-preferred-size:33.33333333%;flex-basis:33.33333333%;max-width:33.33333333%}.mw-flex-col-sm-5{-ms-flex-preferred-size:41.66666667%;flex-basis:41.66666667%;max-width:41.66666667%}.mw-flex-col-sm-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.mw-flex-col-sm-7{-ms-flex-preferred-size:58.33333333%;flex-basis:58.33333333%;max-width:58.33333333%}.mw-flex-col-sm-8{-ms-flex-preferred-size:66.66666667%;flex-basis:66.66666667%;max-width:66.66666667%}.mw-flex-col-sm-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.mw-flex-col-sm-10{-ms-flex-preferred-size:83.33333333%;flex-basis:83.33333333%;max-width:83.33333333%}.mw-flex-col-sm-11{-ms-flex-preferred-size:91.66666667%;flex-basis:91.66666667%;max-width:91.66666667%}.mw-flex-col-sm-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.mw-flex-col-sm-offset-0{margin-left:0}.mw-flex-col-sm-offset-1{margin-left:8.33333333%}.mw-flex-col-sm-offset-2{margin-left:16.66666667%}.mw-flex-col-sm-offset-3{margin-left:25%}.mw-flex-col-sm-offset-4{margin-left:33.33333333%}.mw-flex-col-sm-offset-5{margin-left:41.66666667%}.mw-flex-col-sm-offset-6{margin-left:50%}.mw-flex-col-sm-offset-7{margin-left:58.33333333%}.mw-flex-col-sm-offset-8{margin-left:66.66666667%}.mw-flex-col-sm-offset-9{margin-left:75%}.mw-flex-col-sm-offset-10{margin-left:83.33333333%}.mw-flex-col-sm-offset-11{margin-left:91.66666667%}.mw-flex-start-sm{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:start}.mw-flex-center-sm{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.mw-flex-end-sm{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:end}.mw-flex-top-sm{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mw-flex-middle-sm{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mw-flex-bottom-sm{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.mw-flex-around-sm{-ms-flex-pack:distribute;justify-content:space-around}.mw-flex-between-sm{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mw-flex-first-sm{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.mw-flex-last-sm{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}@media only screen and (min-width:64em){.mw-flex-col-md,.mw-flex-col-md-1,.mw-flex-col-md-10,.mw-flex-col-md-11,.mw-flex-col-md-12,.mw-flex-col-md-2,.mw-flex-col-md-3,.mw-flex-col-md-4,.mw-flex-col-md-5,.mw-flex-col-md-6,.mw-flex-col-md-7,.mw-flex-col-md-8,.mw-flex-col-md-9,.mw-flex-col-md-offset-0,.mw-flex-col-md-offset-1,.mw-flex-col-md-offset-10,.mw-flex-col-md-offset-11,.mw-flex-col-md-offset-12,.mw-flex-col-md-offset-2,.mw-flex-col-md-offset-3,.mw-flex-col-md-offset-4,.mw-flex-col-md-offset-5,.mw-flex-col-md-offset-6,.mw-flex-col-md-offset-7,.mw-flex-col-md-offset-8,.mw-flex-col-md-offset-9{box-sizing:border-box;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:.5rem;padding-left:.5rem}.mw-flex-col-md{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.mw-flex-col-md-1{-ms-flex-preferred-size:8.33333333%;flex-basis:8.33333333%;max-width:8.33333333%}.mw-flex-col-md-2{-ms-flex-preferred-size:16.66666667%;flex-basis:16.66666667%;max-width:16.66666667%}.mw-flex-col-md-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.mw-flex-col-md-4{-ms-flex-preferred-size:33.33333333%;flex-basis:33.33333333%;max-width:33.33333333%}.mw-flex-col-md-5{-ms-flex-preferred-size:41.66666667%;flex-basis:41.66666667%;max-width:41.66666667%}.mw-flex-col-md-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.mw-flex-col-md-7{-ms-flex-preferred-size:58.33333333%;flex-basis:58.33333333%;max-width:58.33333333%}.mw-flex-col-md-8{-ms-flex-preferred-size:66.66666667%;flex-basis:66.66666667%;max-width:66.66666667%}.mw-flex-col-md-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.mw-flex-col-md-10{-ms-flex-preferred-size:83.33333333%;flex-basis:83.33333333%;max-width:83.33333333%}.mw-flex-col-md-11{-ms-flex-preferred-size:91.66666667%;flex-basis:91.66666667%;max-width:91.66666667%}.mw-flex-col-md-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.mw-flex-col-md-offset-0{margin-left:0}.mw-flex-col-md-offset-1{margin-left:8.33333333%}.mw-flex-col-md-offset-2{margin-left:16.66666667%}.mw-flex-col-md-offset-3{margin-left:25%}.mw-flex-col-md-offset-4{margin-left:33.33333333%}.mw-flex-col-md-offset-5{margin-left:41.66666667%}.mw-flex-col-md-offset-6{margin-left:50%}.mw-flex-col-md-offset-7{margin-left:58.33333333%}.mw-flex-col-md-offset-8{margin-left:66.66666667%}.mw-flex-col-md-offset-9{margin-left:75%}.mw-flex-col-md-offset-10{margin-left:83.33333333%}.mw-flex-col-md-offset-11{margin-left:91.66666667%}.mw-flex-start-md{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:start}.mw-flex-center-md{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.mw-flex-end-md{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:end}.mw-flex-top-md{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mw-flex-middle-md{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mw-flex-bottom-md{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.mw-flex-around-md{-ms-flex-pack:distribute;justify-content:space-around}.mw-flex-between-md{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mw-flex-first-md{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.mw-flex-last-md{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}@media only screen and (min-width:75em){.mw-flex-col-lg,.mw-flex-col-lg-1,.mw-flex-col-lg-10,.mw-flex-col-lg-11,.mw-flex-col-lg-12,.mw-flex-col-lg-2,.mw-flex-col-lg-3,.mw-flex-col-lg-4,.mw-flex-col-lg-5,.mw-flex-col-lg-6,.mw-flex-col-lg-7,.mw-flex-col-lg-8,.mw-flex-col-lg-9,.mw-flex-col-lg-offset-0,.mw-flex-col-lg-offset-1,.mw-flex-col-lg-offset-10,.mw-flex-col-lg-offset-11,.mw-flex-col-lg-offset-12,.mw-flex-col-lg-offset-2,.mw-flex-col-lg-offset-3,.mw-flex-col-lg-offset-4,.mw-flex-col-lg-offset-5,.mw-flex-col-lg-offset-6,.mw-flex-col-lg-offset-7,.mw-flex-col-lg-offset-8,.mw-flex-col-lg-offset-9{box-sizing:border-box;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:.5rem;padding-left:.5rem}.mw-flex-col-lg{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.mw-flex-col-lg-1{-ms-flex-preferred-size:8.33333333%;flex-basis:8.33333333%;max-width:8.33333333%}.mw-flex-col-lg-2{-ms-flex-preferred-size:16.66666667%;flex-basis:16.66666667%;max-width:16.66666667%}.mw-flex-col-lg-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.mw-flex-col-lg-4{-ms-flex-preferred-size:33.33333333%;flex-basis:33.33333333%;max-width:33.33333333%}.mw-flex-col-lg-5{-ms-flex-preferred-size:41.66666667%;flex-basis:41.66666667%;max-width:41.66666667%}.mw-flex-col-lg-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.mw-flex-col-lg-7{-ms-flex-preferred-size:58.33333333%;flex-basis:58.33333333%;max-width:58.33333333%}.mw-flex-col-lg-8{-ms-flex-preferred-size:66.66666667%;flex-basis:66.66666667%;max-width:66.66666667%}.mw-flex-col-lg-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.mw-flex-col-lg-10{-ms-flex-preferred-size:83.33333333%;flex-basis:83.33333333%;max-width:83.33333333%}.mw-flex-col-lg-11{-ms-flex-preferred-size:91.66666667%;flex-basis:91.66666667%;max-width:91.66666667%}.mw-flex-col-lg-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.mw-flex-col-lg-offset-0{margin-left:0}.mw-flex-col-lg-offset-1{margin-left:8.33333333%}.mw-flex-col-lg-offset-2{margin-left:16.66666667%}.mw-flex-col-lg-offset-3{margin-left:25%}.mw-flex-col-lg-offset-4{margin-left:33.33333333%}.mw-flex-col-lg-offset-5{margin-left:41.66666667%}.mw-flex-col-lg-offset-6{margin-left:50%}.mw-flex-col-lg-offset-7{margin-left:58.33333333%}.mw-flex-col-lg-offset-8{margin-left:66.66666667%}.mw-flex-col-lg-offset-9{margin-left:75%}.mw-flex-col-lg-offset-10{margin-left:83.33333333%}.mw-flex-col-lg-offset-11{margin-left:91.66666667%}.mw-flex-start-lg{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:start}.mw-flex-center-lg{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.mw-flex-end-lg{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:end}.mw-flex-top-lg{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mw-flex-middle-lg{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mw-flex-bottom-lg{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.mw-flex-around-lg{-ms-flex-pack:distribute;justify-content:space-around}.mw-flex-between-lg{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mw-flex-first-lg{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.mw-flex-last-lg{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}.mw-ui-label{display:block;padding-bottom:3px}.mw-ui-inline-label,.mw-ui-label{font-weight:700}.mw-ui-inline-label small,.mw-ui-label small{font-weight:400;font-size:80%}.mw-ui-inline-label{display:inline-block;padding:8px;margin-right:8px;height:36px}.mw-ui-invisible-field{background:0 0;border-color:transparent;border-width:1px;border-style:solid;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:8px 0;position:relative;outline:0}select.mw-ui-invisible-field{opacity:0}.mw-ui-field .mw-ui-invisible-field{padding:3px 0}.mw-ui-invisible-field,.mw-ui-invisible-field[class*=mw-ui-field]{padding-left:0;padding-right:0}.mw-ui-field{border:1px solid #cfcfcf;padding:8px;max-width:100%;border-radius:2px;background-color:#fff;outline:0;cursor:text;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;box-shadow:inset 0 0 3px rgba(0,0,0,.2);transition:border-color .3s,box-shadow,.3s}div.mw-ui-field,span.mw-ui-field{display:inline-block}select.mw-ui-field{-webkit-appearance:menulist}.mw-ui-field-medium{padding:6px}.mw-ui-field-big{padding:9px;font-size:140%}.mw-ui-field-small{padding:2px;font-size:80%}input.mw-ui-field,select.mw-ui-field{height:2.923rem}input.mw-ui-field-medium,select.mw-ui-field-medium{height:2.308rem}input.mw-ui-field-big,select.mw-ui-field-big{height:3.385rem}input.mw-ui-field-small,select.mw-ui-field-small{height:1.538rem}select.mw-ui-field{cursor:default}.mw-ui-field.form-control{height:auto}.mw-ui-field optgroup,.mw-ui-field option{padding:4px 8px}.mw-ui-field optgroup option{padding:4px 16px}.mw-ui-field:focus,.mw-ui-field:hover{border-color:#0086db;box-shadow:0 0 3px rgba(0,134,219,.4)}.mw-ui-field:focus{box-shadow:inset 0 0 3px rgba(0,134,219,.4);-webkit-box-shadow:inset 0 0 3px rgba(0,134,219,.4)}input.mw-ui-field{-webkit-appearance:textfield;appearance:textfield}div.mw-ui-field{display:inline-block}div.mw-ui-field:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.mw-ui-field-holder{padding:10px 0;position:relative;clear:both}.mw-ui-field-holder:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.mw-ui-searchfield{background:url(../images/magnifier.svg) left center no-repeat #fff;width:1px;border:1px solid #E6E6E6;border-radius:3px;box-sizing:border-box;cursor:text;outline:0;padding:8px 8px 8px 33px;opacity:.5;height:36px;-webkit-transition:width .1s,opacity .2s;-moz-transition:width .1s,opacity .2s;-o-transition:width .1s,opacity .2s;transition:width .1s,opacity .2s}.mw-ui-searchfield::-webkit-input-placeholder{color:transparent}.mw-ui-searchfield:-moz-placeholder{color:transparent}.mw-ui-searchfield::-moz-placeholder{color:transparent}.mw-ui-searchfield:-ms-input-placeholder{color:transparent}.mw-ui-searchfield:focus::-webkit-input-placeholder{color:inherit}.mw-ui-searchfield:focus:-moz-placeholder{color:inherit}.mw-ui-searchfield:focus::-moz-placeholder{color:inherit}.mw-ui-searchfield:focus:-ms-input-placeholder{color:inherit}.mw-ui-searchfield:hover::-webkit-input-placeholder{color:inherit}.mw-ui-searchfield:hover:-moz-placeholder{color:inherit}.mw-ui-searchfield:hover::-moz-placeholder{color:inherit}.mw-ui-searchfield:hover:-ms-input-placeholder{color:inherit}.mw-ui-searchfield.active::-webkit-input-placeholder{color:inherit}.mw-ui-searchfield.active:-moz-placeholder{color:inherit}.mw-ui-searchfield.active::-moz-placeholder{color:inherit}.mw-ui-searchfield.active:-ms-input-placeholder{color:inherit}.mw-ui-searchfield.active,.mw-ui-searchfield:focus,.mw-ui-searchfield:focus:hover{border-color:#c6c6c6;width:200px;opacity:1}.mw-ui-searchfield:hover{border-color:#E6E6E6;width:200px;opacity:1}.mw-ui-check,.mw-ui-check>*,.mw-ui-check>:before{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}.mw-ui-check{cursor:pointer;vertical-align:middle;display:inline-block}.mw-ui-check:hover input+span{box-shadow:0 1px 3px #ccebff}.mw-ui-check input:checked+span{box-shadow:0 1px 3px #ccebff}.mw-ui-check input{position:absolute;opacity:0}.mw-ui-check input+span{display:inline-block;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;line-height:normal;text-align:center;vertical-align:middle;margin-right:8px;font-weight:400;width:17px;height:17px;transition:all .3s;border:1px solid #cfcfcf;background-color:#fff}.mw-ui-check input+span:after{position:absolute;transition:all .3s;visibility:hidden;opacity:0;transform:scale(.3);content:''}.mw-ui-check input:checked+span{border-color:#009cff}.mw-ui-check input:checked+span:after{visibility:visible;opacity:1;transform:scale(1)}.mw-ui-check input[type=radio]+span:first-of-type{border-radius:30px}.mw-ui-check input[type=radio]+span:first-of-type:after{background-color:#009cff;top:20%;left:20%;width:60%;height:60%;border-radius:30px}.mw-ui-check input[type=checkbox]+span{border-radius:2px}.mw-ui-check input[type=checkbox]+span:after{display:inline-block;font-family:Microweber;text-transform:none;top:10%;left:10%;width:80%;height:80%;line-height:100%;content:"\0101";color:#009cff;text-align:center}.mw-disabled,.mw-ui-field:disabled,.mw-ui-field[disabled]{opacity:.6;cursor:not-allowed;-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;-khtml-user-select:none;user-select:none}.mw-ui-field-icon{display:inline-block;text-align:center;font-size:30px;height:2.923rem;width:2.923rem;border:1px solid #cfcfcf;border-radius:2px 0 0 2px;vertical-align:top;line-height:-webkit-calc(2.923rem - 4px);line-height:calc(2.923rem - 4px)}.mw-ui-field-icon .fa,.mw-ui-field-icon .ico,.mw-ui-field-icon .material-icons,.mw-ui-field-icon [class*=icon-]{line-height:-webkit-calc(2.923rem - 4px);line-height:calc(2.923rem - 4px)}.mw-ui-field-icon+input{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0;max-width:-webkit-calc(64%);max-width:calc(64%)}.range-slider input[type=range]{-webkit-appearance:none;margin:10px 0;width:100%}.range-slider input[type=range]:focus{outline:0}.range-slider input[type=range]::-webkit-slider-runnable-track{width:100%;height:3px;cursor:pointer;transition:.2s;box-shadow:0 0 0 #000,0 0 0 #0d0d0d;background:#009cff;border-radius:0;border:0 solid #000101}.range-slider input[type=range]::-webkit-slider-thumb{border:1px solid #e1e1e1;height:20px;width:20px;border-radius:20px;background:#fff;cursor:pointer;-webkit-appearance:none;margin-top:-10px}.range-slider input[type=range]:focus::-webkit-slider-runnable-track{background:#009cff}.range-slider input[type=range]::-moz-range-track{width:100%;height:12.8px;cursor:pointer;transition:.2s;box-shadow:0 0 0 #000,0 0 0 #0d0d0d;background:#009cff;border-radius:25px;border:0 solid #000101}.range-slider input[type=range]::-moz-range-thumb{box-shadow:0 0 0 #000,0 0 0 #0d0d0d;border:0 solid #000;height:20px;width:39px;border-radius:7px;background:#65001c;cursor:pointer}.range-slider input[type=range]::-ms-track{width:100%;height:12.8px;cursor:pointer;transition:.2s;background:0 0;border-color:transparent;border-width:39px 0;color:transparent}.range-slider input[type=range]::-ms-fill-lower{background:#009cff;border:0 solid #000101;border-radius:50px;box-shadow:0 0 0 #000,0 0 0 #0d0d0d}.range-slider input[type=range]::-ms-fill-upper{background:#009cff;border:0 solid #000101;border-radius:50px;box-shadow:0 0 0 #000,0 0 0 #0d0d0d}.range-slider input[type=range]::-ms-thumb{box-shadow:0 0 0 #000,0 0 0 #0d0d0d;border:0 solid #000;height:20px;width:39px;border-radius:7px;background:#65001c;cursor:pointer}.range-slider input[type=range]:focus::-ms-fill-lower{background:#009cff}.range-slider input[type=range]:focus::-ms-fill-upper{background:#009cff}.mw-ui-field-group-check *{vertical-align:bottom}.mw-ui-field-group-check>*+*{margin-left:12px}.mw-ui-field-group-check .mw-ui-field-holder{display:inline-block;padding:0}.mw-ui-field-group-check .mw-ui-check{transform:translateY(50%);position:relative;bottom:1.4615rem}.mw-ui-field-group-check.mw-ui-field-group-check-medium .mw-ui-check{bottom:1.154rem}.mw-ui-field-group-check.mw-ui-field-group-check-small .mw-ui-check{bottom:.769rem}.mw-ui-field-group-check.mw-ui-field-group-check-big .mw-ui-check{bottom:1.6925rem}.mw-ui-field-append,.mw-ui-field-prepend{display:inline-block;background-color:#e1e1e1;padding:0 12px}.mw-field,mw-field{display:inline-flex;position:relative;vertical-align:top}.mw-field input,.mw-field select,.mw-field textarea,mw-field input,mw-field select,mw-field textarea{border:1px solid #cfcfcf;padding:0 8px;width:100%;max-width:100%;border-radius:2px;background-color:#fff;outline:0;cursor:text;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;box-shadow:inset 0 0 3px rgba(0,0,0,.2);transition:border-color .3s,box-shadow,.3s;order:2}.mw-field input:focus,.mw-field input:hover,.mw-field select:focus,.mw-field select:hover,.mw-field textarea:focus,.mw-field textarea:hover,mw-field input:focus,mw-field input:hover,mw-field select:focus,mw-field select:hover,mw-field textarea:focus,mw-field textarea:hover{border-color:#0086db;box-shadow:0 0 3px rgba(0,134,219,.4)}.mw-field input:focus,.mw-field select:focus,.mw-field textarea:focus,mw-field input:focus,mw-field select:focus,mw-field textarea:focus{box-shadow:inset 0 0 3px rgba(0,134,219,.4);-webkit-box-shadow:inset 0 0 3px rgba(0,134,219,.4)}.mw-field .mw-field-append,.mw-field .mw-field-prepend,.mw-field[data-after]:after,.mw-field[data-before]:before,mw-field .mw-field-append,mw-field .mw-field-prepend,mw-field[data-after]:after,mw-field[data-before]:before{display:block;white-space:nowrap}.mw-field [class=mw-field-append],.mw-field [class=mw-field-prepend],.mw-field[data-after]:after,.mw-field[data-before]:before,mw-field [class=mw-field-append],mw-field [class=mw-field-prepend],mw-field[data-after]:after,mw-field[data-before]:before{border:1px solid #cfcfcf;box-shadow:inset 1px 1px 4px 0 rgba(0,0,0,.1);background-color:#e1e1e1;padding:0 12px}.mw-field[data-before]:before,mw-field[data-before]:before{content:attr(data-before)}.mw-field[data-after]:after,mw-field[data-after]:after{content:attr(data-after)}.mw-field[data-before] input,.mw-field[data-before] select,.mw-field[data-before] textarea,mw-field[data-before] input,mw-field[data-before] select,mw-field[data-before] textarea{border-top-left-radius:0;border-bottom-left-radius:0}.mw-field[data-after] input,.mw-field[data-after] select,.mw-field[data-after] textarea,mw-field[data-after] input,mw-field[data-after] select,mw-field[data-after] textarea{border-top-right-radius:0;border-bottom-right-radius:0}.mw-field .mw-field-append,.mw-field[data-after]:after,mw-field .mw-field-append,mw-field[data-after]:after{order:5;border-radius:0 2px 2px 0;border-left:none}.mw-field .mw-field-prepend,.mw-field[data-before]:before,mw-field .mw-field-prepend,mw-field[data-before]:before{order:1;border-radius:2px 0 0 2px;border-right:none}.mw-field .mw-field-append,.mw-field .mw-field-prepend,.mw-field input,.mw-field select,.mw-field[data-after]:after,.mw-field[data-before]:before,mw-field .mw-field-append,mw-field .mw-field-prepend,mw-field input,mw-field select,mw-field[data-after]:after,mw-field[data-before]:before{height:2.923rem;line-height:2.923rem}.mw-field select,mw-field select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-position:calc(100% - 10px) 50%;background-repeat:no-repeat;background-size:8px auto;padding-right:25px;cursor:default;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 284.929 284.929' style='enable-background:new 0 0 284.929 284.929;' %3E%3Cpath fill='%23777' d='M282.082,76.511l-14.274-14.273c-1.902-1.906-4.093-2.856-6.57-2.856c-2.471,0-4.661,0.95-6.563,2.856L142.466,174.441 L30.262,62.241c-1.903-1.906-4.093-2.856-6.567-2.856c-2.475,0-4.665,0.95-6.567,2.856L2.856,76.515C0.95,78.417,0,80.607,0,83.082 c0,2.473,0.953,4.663,2.856,6.565l133.043,133.046c1.902,1.903,4.093,2.854,6.567,2.854s4.661-0.951,6.562-2.854L282.082,89.647 c1.902-1.903,2.847-4.093,2.847-6.565C284.929,80.607,283.984,78.417,282.082,76.511z'/%3E%3C/svg%3E%0A")}.mw-field select::-ms-expand,mw-field select::-ms-expand{display:none}.mw-field[data-size=medium] .mw-field-append,.mw-field[data-size=medium] .mw-field-prepend,.mw-field[data-size=medium] input,.mw-field[data-size=medium] select,.mw-field[data-size=medium][data-after]:after,.mw-field[data-size=medium][data-before]:before,.mw-field[size=medium] .mw-field-append,.mw-field[size=medium] .mw-field-prepend,.mw-field[size=medium] input,.mw-field[size=medium] select,.mw-field[size=medium][data-after]:after,.mw-field[size=medium][data-before]:before,mw-field[data-size=medium] .mw-field-append,mw-field[data-size=medium] .mw-field-prepend,mw-field[data-size=medium] input,mw-field[data-size=medium] select,mw-field[data-size=medium][data-after]:after,mw-field[data-size=medium][data-before]:before,mw-field[size=medium] .mw-field-append,mw-field[size=medium] .mw-field-prepend,mw-field[size=medium] input,mw-field[size=medium] select,mw-field[size=medium][data-after]:after,mw-field[size=medium][data-before]:before{line-height:2.308rem;height:2.308rem}.mw-field[data-size=small] .mw-field-append,.mw-field[data-size=small] .mw-field-prepend,.mw-field[data-size=small] input,.mw-field[data-size=small] select,.mw-field[data-size=small][data-after]:after,.mw-field[data-size=small][data-before]:before,.mw-field[size=small] .mw-field-append,.mw-field[size=small] .mw-field-prepend,.mw-field[size=small] input,.mw-field[size=small] select,.mw-field[size=small][data-after]:after,.mw-field[size=small][data-before]:before,mw-field[data-size=small] .mw-field-append,mw-field[data-size=small] .mw-field-prepend,mw-field[data-size=small] input,mw-field[data-size=small] select,mw-field[data-size=small][data-after]:after,mw-field[data-size=small][data-before]:before,mw-field[size=small] .mw-field-append,mw-field[size=small] .mw-field-prepend,mw-field[size=small] input,mw-field[size=small] select,mw-field[size=small][data-after]:after,mw-field[size=small][data-before]:before{height:1.538rem;line-height:1.538rem}.mw-field[data-size=large] .mw-field-append,.mw-field[data-size=large] .mw-field-prepend,.mw-field[data-size=large] input,.mw-field[data-size=large] select,.mw-field[data-size=large][data-after]:after,.mw-field[data-size=large][data-before]:before,.mw-field[size=large] .mw-field-append,.mw-field[size=large] .mw-field-prepend,.mw-field[size=large] input,.mw-field[size=large] select,.mw-field[size=large][data-after]:after,.mw-field[size=large][data-before]:before,mw-field[data-size=large] .mw-field-append,mw-field[data-size=large] .mw-field-prepend,mw-field[data-size=large] input,mw-field[data-size=large] select,mw-field[data-size=large][data-after]:after,mw-field[data-size=large][data-before]:before,mw-field[size=large] .mw-field-append,mw-field[size=large] .mw-field-prepend,mw-field[size=large] input,mw-field[size=large] select,mw-field[size=large][data-after]:after,mw-field[size=large][data-before]:before{height:3.385rem;line-height:3.385rem}.mw-ui-link{text-decoration:none;color:#009cff;position:relative;display:inline-block;cursor:pointer}.mw-ui-link-nav>:after{display:inline;position:absolute;top:0;left:100%;color:#009cff;font-size:80%;content:"/";margin:3px 5px;text-decoration:none!important;pointer-events:none}.mw-ui-link-nav>:last-child:after{display:none}.mw-ui-link-nav>*{position:relative;margin-right:11px;text-decoration:none;cursor:pointer}.mw-ui-link:focus,.mw-ui-link:hover{text-decoration:underline}.mw-ui-link:active{opacity:.8}.mw-ui-btn{display:inline-flex;align-items:center;justify-content:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 1.308rem;cursor:pointer;text-align:center;position:relative;text-decoration:none;font-size:1.154rem;height:2.923rem;border-radius:2px;color:#686868;background-color:#f5f5f5;border:1px solid #cfcfcf;outline:0;transition:.3s;white-space:nowrap;vertical-align:middle}.mw-ui-link{border:0!important;background:0 0}input.mw-ui-btn{-webkit-appearance:none}.mw-ui-btn-hover{border-color:transparent;background-color:transparent}.mw-ui-btn-invert{color:#fff;background-color:#2b2b2b;border-color:#2b2b2b}.mw-ui-btn-outline.mw-ui-btn-invert{color:#2b2b2b}.mw-ui-btn .material-icons{vertical-align:top;line-height:inherit}.mw-ui-btn-important,.mw-ui-btn.active-important{color:#fff;background-color:#f12b1c;border-color:#f12b1c}.mw-ui-btn-outline.mw-ui-btn-important{color:#f12b1c}.mw-ui-btn-info,.mw-ui-btn.active-info{color:#fff;background-color:#009cff;border-color:#009cff}.mw-ui-btn-outline.mw-ui-btn-info{color:#009cff}.mw-ui-btn-notification,.mw-ui-btn.active-notification{color:#fff;background-color:#469a36;border-color:#469a36}.mw-ui-btn-outline.mw-ui-btn-notification{color:#469a36}.mw-ui-btn-warn,.mw-ui-btn.active-warn{color:#fff;background-color:#fa8e36;border-color:#fa8e36}.mw-ui-btn-outline.mw-ui-btn-warn{color:#fa8e36}.mw-ui-btn-outline{background-color:transparent}.mw-ui-btn.mw-ui-btn-outline:not(.mw-ui-btn-invert):not(.mw-ui-btn-important):not(.mw-ui-btn-info):not(.mw-ui-btn-warn):not(.mw-ui-btn-notification).active,.mw-ui-btn.mw-ui-btn-outline:not(.mw-ui-btn-invert):not(.mw-ui-btn-important):not(.mw-ui-btn-info):not(.mw-ui-btn-warn):not(.mw-ui-btn-notification):active,.mw-ui-btn.mw-ui-btn-outline:not(.mw-ui-btn-invert):not(.mw-ui-btn-important):not(.mw-ui-btn-info):not(.mw-ui-btn-warn):not(.mw-ui-btn-notification):hover{background-color:#f5f5f5}.mw-ui-btn.mw-ui-btn-outline.active,.mw-ui-btn.mw-ui-btn-outline:active,.mw-ui-btn.mw-ui-btn-outline:hover{color:#686868}.mw-ui-btn-outline.mw-ui-btn-important.active,.mw-ui-btn-outline.mw-ui-btn-important:active,.mw-ui-btn-outline.mw-ui-btn-important:hover,.mw-ui-btn-outline.mw-ui-btn-info.active,.mw-ui-btn-outline.mw-ui-btn-info:active,.mw-ui-btn-outline.mw-ui-btn-info:hover,.mw-ui-btn-outline.mw-ui-btn-invert.active,.mw-ui-btn-outline.mw-ui-btn-invert:active,.mw-ui-btn-outline.mw-ui-btn-invert:hover,.mw-ui-btn-outline.mw-ui-btn-notification.active,.mw-ui-btn-outline.mw-ui-btn-notification:active,.mw-ui-btn-outline.mw-ui-btn-notification:hover,.mw-ui-btn-outline.mw-ui-btn-warn.active,.mw-ui-btn-outline.mw-ui-btn-warn:active,.mw-ui-btn-outline.mw-ui-btn-warn:hover{color:#fff}.mw-ui-btn:not(:active):not(:hover):not(.active):not([class*=active-]):focus{outline:#009cff dotted 1px;outline-offset:-3px;z-index:1}.mw-ui-btn-big,.mw-ui-btn-large{font-size:1.385rem;height:3.385rem;padding:0 1.538rem}.mw-ui-btn-medium{font-size:1rem;height:2.308rem;padding:0 1rem}.mw-ui-btn-mini,.mw-ui-btn-small,.mw-ui-btn-tiny{font-size:.8462rem;height:1.538rem;padding:0 .7692rem}.mw-ui-btn:hover:not([class*=active-]):not(.active){outline:0;text-decoration:none}.mw-ui-btn-invert.active,.mw-ui-btn-invert:hover{background-color:#5e5e5e;border-color:#5e5e5e}.mw-ui-btn-important.active,.mw-ui-btn-important:hover{background-color:#f7857c;border-color:#f7857c}.mw-ui-btn-info.active,.mw-ui-btn-info:hover{background-color:#66c4ff;border-color:#66c4ff}.mw-ui-btn-notification.active,.mw-ui-btn-notification:hover{background-color:#7acb6b;border-color:#7acb6b}.mw-ui-btn-warn.active,.mw-ui-btn-warn:hover{background-color:#fcc69a;border-color:#fcc69a}.mw-ui-btn.active,.mw-ui-btn.active:hover,.mw-ui-btn:active{box-shadow:inset 0 0 3px rgba(0,0,0,.2)}.mw-ui-btn-rounded{-webkit-border-radius:30px;-moz-border-radius:30px;border-radius:30px}.mw-ui-btn>[class*=mai-],.mw-ui-btn>[class*=mw-micon-],.mw-ui-btn>[class*=mw-icon-]{font-size:1.4em;text-align:center;vertical-align:middle;display:inline-block}.mw-ui-btn>.mw-icon-dropdown{font-size:12px;margin-right:0;margin-left:7px}.mw-ui-btn>.mw-icon-right{margin:0 0 0 7px}.mw-ui-btn.active>[class*=mw-icon-],.mw-ui-btn:focus>[class*=mw-icon-],.mw-ui-btn:hover>[class*=mw-icon-]{opacity:1}.mw-ui-btn-nav,.mw-ui-btn-vertical-nav{position:relative;display:inline-block;vertical-align:middle}.mw-ui-btn-nav:not(.mw-ui-btn-nav-fluid):after,.mw-ui-btn-vertical-nav:not(.mw-ui-btn-nav-fluid):after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.mw-ui-btn-nav>li{list-style:none;float:left}.mw-ui-btn-vertical-nav>li{float:none;list-style:none}.mw-ui-btn-nav>.mw-dropdown,.mw-ui-btn-nav>.mw-dropdown .mw-ui-btn,.mw-ui-btn-nav>.mw-ui-btn,.mw-ui-btn-nav>.mw-ui-field,.mw-ui-btn-nav>li>.mw-ui-btn{border-width:1px 1px 1px 0;float:left;border-radius:0}.mw-ui-btn-nav>.mw-dropdown:first-child .mw-ui-btn,.mw-ui-btn-nav>.mw-ui-btn:first-child,.mw-ui-btn-nav>.mw-ui-field:first-child,.mw-ui-btn-nav>li:first-child>.mw-ui-btn{border-left-width:1px;border-top-left-radius:2px;border-bottom-left-radius:2px}.mw-ui-btn-nav>.mw-dropdown:last-child .mw-ui-btn,.mw-ui-btn-nav>.mw-ui-btn:last-child,.mw-ui-btn-nav>.mw-ui-field:last-child,.mw-ui-btn-nav>li:last-child>.mw-ui-btn{border-top-right-radius:2px;border-bottom-right-radius:2px}.mw-ui-btn-nav-fluid{display:flex;width:100%;vertical-align:top}.mw-ui-btn-nav-fluid>li{float:none;display:flex;vertical-align:top;flex:1;align-items:center}.mw-ui-btn-nav-fluid>li>.mw-ui-btn{float:none;display:flex;width:100%;white-space:nowrap;align-items:center;justify-content:center}.mw-ui-btn-vertical-nav .mw-ui-btn{border-width:1px 1px 0;border-radius:0;display:flex;text-align:left}.mw-ui-btn-vertical-nav>.mw-ui-btn:last-child,.mw-ui-btn-vertical-nav>li:last-child>.mw-ui-btn{border-radius:0 0 2px 2px;border-bottom-width:1px}.mw-ui-btn-img{display:inline-block;vertical-align:top;width:-webkit-calc(2.923rem - 12px);height:-webkit-calc(2.923rem - 12px);background-position:center;background-repeat:no-repeat;background-size:cover;border-radius:3px;transform:translateX(-20%);position:relative}.mw-ui-btn-big .mw-ui-btn-img,.mw-ui-btn-large .mw-ui-btn-img{width:-webkit-calc(3.385rem - 12px);height:-webkit-calc(3.385rem - 12px)}.mw-ui-btn-medium .mw-ui-btn-img{width:-webkit-calc(2.308rem - 12px);height:-webkit-calc(2.308rem - 12px)}.mw-ui-btn-small .mw-ui-btn-img{width:-webkit-calc(1.538rem - 6px);height:-webkit-calc(1.538rem - 6px)}.mw-ui-btn-rounded .mw-ui-btn-img{border-radius:33px}.mw-ui-btn.disabled,.mw-ui-btn:disabled{cursor:default!important;opacity:.55}.mw-paging{height:36px}.mw-paging>*{list-style:none;display:inline-block;float:left}.mw-paging a{display:inline-block;padding:9px 15px;height:36px;background:#f5f5f5;border-color:#cfcfcf;border-width:1px 0 1px 1px;border-style:solid}.mw-paging-big{height:46px}.mw-paging-big a{height:46px;padding:10px 20px;font-size:140%}.mw-paging-small{height:20px}.mw-paging-small a{height:20px;padding:2px 8px;font-size:11px}.mw-paging-medium{height:31px}.mw-paging-medium a{height:31px;padding:6px 9px}.mw-paging a:focus,.mw-paging a:hover{background-color:#fafafa}.mw-paging>:first-child a,.mw-paging>a:first-child{border-radius:3px 0 0 3px}.mw-paging>:last-child a,.mw-paging>a:last-child{border-radius:0 3px 3px 0;border-right-width:1px}.mw-paging a.active,.mw-paging a.active:focus,.mw-paging a.active:hover,.mw-paging a:active{background-color:#fafafa;box-shadow:inset 0 0 3px rgba(0,0,0,.2)}.mw-paging-invert a{background-color:#2b2b2b;border-color:#2b2b2b;color:#fff}.mw-paging-invert a.active,.mw-paging-invert a:active,.mw-paging-invert a:focus,.mw-paging-invert a:hover{color:#262626}.mw-paging-info a{background-color:#009cff;border-color:#009cff;color:#fff}.mw-paging-info a.active,.mw-paging-info a:active,.mw-paging-info a:focus,.mw-paging-info a:hover{color:#262626}.mw-paging-warn a{background-color:#fa8e36;border-color:#fa8e36;color:#fff}.mw-paging-warn a.active,.mw-paging-warn a:active,.mw-paging-warn a:focus,.mw-paging-warn a:hover{color:#262626}.mw-paging-important a{background-color:#f12b1c;border-color:#f12b1c;color:#fff}.mw-paging-important a.active,.mw-paging-important a:active,.mw-paging-important a:focus,.mw-paging-important a:hover{color:#262626}.mw-paging-notification a{background-color:#469a36;border-color:#469a36;color:#fff}.mw-paging-notification a.active,.mw-paging-notification a:active,.mw-paging-notification a:focus,.mw-paging-notification a:hover{color:#262626}.mw-ui-navigation{position:relative}.mw-ui-box.mw-ui-navigation{background-color:#fff}.mw-ui-navigation:hover{z-index:9}.mw-ui-navigation li{list-style:none;position:relative}.mw-ui-navigation>li{margin-bottom:10px}.mw-ui-navigation>li:last-child{margin-bottom:0}.mw-ui-navigation [class*=mw-icon-]{font-size:21px;opacity:.777}.mw-ui-navigation a,.mw-ui-navigation-item{display:block;position:relative;padding:9px 12px;height:36px;border:1px solid transparent;border-radius:2px;white-space:nowrap}.mw-ui-navigation a>[class*=mw-icon-]{margin:-5px 8px 0 0}.mw-ui-navigation a>.mw-icon-dropdown:last-child{margin:-5px -4px 0 7px}.mw-ui-navigation .mw-icon-dropdown{font-size:12px;line-height:12px}.mw-ui-navigation a:focus,.mw-ui-navigation a:hover,.mw-ui-navigation li:hover>a{border-color:#e5e5e5;background-color:#fafafa}.mw-ui-navigation a.active,.mw-ui-navigation a:active,.mw-ui-navigation li.active>a{box-shadow:inset 0 0 5px -2px rgba(0,0,0,.2);border-color:#e5e5e5;background-color:#fafafa}.mw-ui-navigation a:focus>[class*=mw-icon-],.mw-ui-navigation a:hover>[class*=mw-icon-],.mw-ui-navigation li:hover>a>[class*=mw-icon-]{opacity:1}.mw-ui-navigation-horizontal>li,.mw-ui-navigation-horizontal>ul>li{float:left;margin-right:12px;margin-bottom:0}.mw-ui-navigation-horizontal>li:last-child{margin-right:0}.mw-ui-navigation li ul,.mw-ui-navigation-horizontal>li>ul ul{position:absolute;display:none;top:0;left:100%;min-width:100%;border-radius:2px;background:#fff;border:1px solid #e5e5e5}.mw-ui-navigation-horizontal>li>ul{position:absolute;display:none;top:100%;left:0;min-width:100%;border-radius:0 0 2px 2px;background:#fff;border:1px solid #e5e5e5}.mw-ui-navigation-horizontal>li:first-child>ul{left:-1px}.mw-ui-box.mw-ui-navigation a,.mw-ui-navigation li ul a{border-width:0;border-radius:0}.mw-ui-box.mw-ui-navigation>li:first-child>a{border-top-width:0}.mw-ui-navigation li:hover>ul{display:block}.mw-paging{position:relative;overflow:hidden;text-align:center;list-style:none}.mw-paging>*{border-radius:0}.mw-paging>:first-child{border-radius:2px 0 0 2px}.mw-paging>:last-child{border-radius:0 2px 2px 0}.mw-ui-table{clear:both;border-radius:2px;width:100%;border-spacing:0;border-collapse:collapse;border:1px solid #e5e5e5}.mw-ui-table-fixed{table-layout:fixed}.mw-ui-table>tbody:first-child>tr:first-child>td:first-child,.mw-ui-table>thead>tr:first-child>th:first-child{border-radius:2px 0 0}.mw-ui-table>tbody:first-child>tr:first-child>td:last-child,.mw-ui-table>thead>tr:first-child>th:last-child{border-radius:0 2px 0 0}.mw-ui-table>tbody>tr:last-child>td:first-child,.mw-ui-table>tfoot>tr:last-child>td:first-child{border-radius:0 0 0 2px}.mw-ui-table>tbody>tr:last-child>td:last-child,.mw-ui-table>tfoot>tr:last-child>td:last-child{border-radius:0 0 2px}.mw-ui-table>tfoot+tbody>tr:last-child>td:last-child{border-radius:0}.mw-ui-table td,.mw-ui-table tfoot td,.mw-ui-table thead th{padding:10px;border:1px solid #e5e5e5}.mw-ui-table tfoot td,.mw-ui-table thead th{font-weight:400;font-size:inherit;text-align:inherit;background-color:#fafafa}.mw-ui-table tbody tr:last-child td,.mw-ui-table tfoot tr:last-child td,.mw-ui-table thead tr:last-child td{border-bottom:none}.show-on-hover{visibility:hidden}.mw-ui-table tr.active>td>.show-on-hover,.mw-ui-table tr:hover>td>.show-on-hover,.show-on-hover-root .show-on-hover,div:hover>.show-on-hover,li:hover>.show-on-hover{visibility:visible}.mw-ui-table td>[class*=mw-icon-]{font-size:17px}.mw-ui-table-basic{border:none}.mw-ui-table-basic td,.mw-ui-table-basic tfoot td,.mw-ui-table-basic thead th{border-right:none;border-left:none}.mw-ui-table-basic>tfoot>tr>td,.mw-ui-table-basic>thead>tr>th{background-color:transparent;color:#ababab}.mw-ui-table-basic>thead>tr>th{border-top:none}.mw-ui-table-spacious{background-color:#fff}.mw-ui-table-spacious tr td{padding-top:15px;padding-bottom:15px;background:#fff;color:#1b1b1b;font-size:14px;font-weight:700;border:0;border-bottom:3px solid #f1f1f1}.mw-ui-table-spacious tfoot td,.mw-ui-table-spacious thead th{padding-top:15px;padding-bottom:15px;background:#fff;border:0;color:#878787;font-size:13px;font-weight:700;text-transform:uppercase}.mw-ui-table tr.ui-sortable-helper{display:table;width:100%;table-layout:fixed;position:relative}.mw-ui-progress{position:relative;height:19px;min-width:50px;overflow:hidden;white-space:nowrap;background-color:#EEE;border-radius:2px}.mw-ui-progress .mw-ui-progress-bar{max-width:100%;height:100%;background-color:#575757;position:absolute;top:0;left:0;border-radius:2px}.mw-ui-progress-info{color:rgba(255,255,255,.43);font-size:9px;position:relative;display:inline-block;max-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;padding:3px 0 0 6px;float:left;z-index:2}.mw-ui-progress-percent{font-weight:700;color:#fff;margin-left:5px;font-size:9px;position:relative;display:inline-block;z-index:2}.mw-ui-progress-small,.mw-ui-progress-small .mw-ui-progress-bar{height:8px;overflow:hidden;position:relative;border-radius:5px;max-width:100%}.mw-ui-progress-small{background-color:#EEE}.mw-ui-progress-small .mw-ui-progress-bar{background-color:#575757}.mw-ui-progress-small .mw-ui-progress-info,.mw-ui-progress-small .mw-ui-progress-percent{display:none}.mw-tooltip{position:absolute;z-index:1200;left:-9999px;top:-9999px}.mw-tooltip-content{position:relative;line-height:normal}.mw-tooltip-content:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0;overflow:hidden}.mw-tooltip-arrow{position:absolute;display:inline-block;z-index:0}.mw-tooltip-circle,.mw-tooltip-circle .mw-tooltip-content{border-radius:555px!important}.mw-tooltip-default{background-color:#fff;color:#434343;box-shadow:0 0 4px rgba(0,0,0,.2);border-radius:2px}.mw-tooltip-default .mw-tooltip-content{padding:10px;position:relative;background:#fff;z-index:1;border-radius:2px}.mw-tooltip-default .mw-tooltip-arrow{display:block;width:10px;height:10px}.mw-tooltip-default .mw-tooltip-arrow:after{display:block;overflow:hidden;width:10px;height:10px;background:#fff;box-shadow:0 0 4px rgba(0,0,0,.2);content:"";transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg)}.mw-tooltip-insert-module{font-size:12px}.mw-tooltip-default.bottom-center .mw-tooltip-arrow,.mw-tooltip-default.bottom-left .mw-tooltip-arrow,.mw-tooltip-default.bottom-right .mw-tooltip-arrow{top:-5px}.mw-tooltip-default.top-center .mw-tooltip-arrow,.mw-tooltip-default.top-left .mw-tooltip-arrow,.mw-tooltip-default.top-right .mw-tooltip-arrow{bottom:-5px}.mw-tooltip-default.bottom-left .mw-tooltip-arrow,.mw-tooltip-default.top-left .mw-tooltip-arrow{left:12px}.mw-tooltip-default.bottom-right .mw-tooltip-arrow,.mw-tooltip-default.top-right .mw-tooltip-arrow{right:12px}.mw-tooltip-default.bottom-center .mw-tooltip-arrow,.mw-tooltip-default.top-center .mw-tooltip-arrow{left:50%;margin-left:-5px}.mw-tooltip-default.left-bottom .mw-tooltip-arrow,.mw-tooltip-default.left-center .mw-tooltip-arrow,.mw-tooltip-default.left-top .mw-tooltip-arrow{right:-5px}.mw-tooltip-default.right-bottom .mw-tooltip-arrow,.mw-tooltip-default.right-center .mw-tooltip-arrow,.mw-tooltip-default.right-top .mw-tooltip-arrow{left:-5px}.mw-tooltip-default.left-top .mw-tooltip-arrow,.mw-tooltip-default.right-top .mw-tooltip-arrow{top:12px}.mw-tooltip-default.left-bottom .mw-tooltip-arrow,.mw-tooltip-default.right-bottom .mw-tooltip-arrow{bottom:12px}.mw-tooltip-default.left-center .mw-tooltip-arrow,.mw-tooltip-default.right-center .mw-tooltip-arrow{top:50%;margin-top:-5px}.mw-tooltip-dark{background-color:#000;color:#F2F2F2;border-radius:3px}.mw-tooltip-dark .mw-tooltip-content{padding:7px;position:relative;background:#000;z-index:1;border-radius:3px}.mw-tooltip-dark .mw-tooltip-arrow{display:block;width:10px;height:10px}.mw-tooltip-dark .mw-tooltip-arrow:after{display:block;overflow:hidden;width:10px;height:10px;background:#000;content:"";transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg)}.mw-tooltip-dark.bottom-center .mw-tooltip-arrow,.mw-tooltip-dark.bottom-left .mw-tooltip-arrow,.mw-tooltip-dark.bottom-right .mw-tooltip-arrow{top:-5px}.mw-tooltip-dark.top-center .mw-tooltip-arrow,.mw-tooltip-dark.top-left .mw-tooltip-arrow,.mw-tooltip-dark.top-right .mw-tooltip-arrow{bottom:-5px}.mw-tooltip-dark.bottom-left .mw-tooltip-arrow,.mw-tooltip-dark.top-left .mw-tooltip-arrow{left:12px}.mw-tooltip-dark.bottom-right .mw-tooltip-arrow,.mw-tooltip-dark.top-right .mw-tooltip-arrow{right:12px}.mw-tooltip-dark.bottom-center .mw-tooltip-arrow,.mw-tooltip-dark.top-center .mw-tooltip-arrow{left:50%;margin-left:-5px}.mw-tooltip-dark.left-bottom .mw-tooltip-arrow,.mw-tooltip-dark.left-center .mw-tooltip-arrow,.mw-tooltip-dark.left-top .mw-tooltip-arrow{right:-5px}.mw-tooltip-dark.right-bottom .mw-tooltip-arrow,.mw-tooltip-dark.right-center .mw-tooltip-arrow,.mw-tooltip-dark.right-top .mw-tooltip-arrow{left:-5px}.mw-tooltip-dark.left-top .mw-tooltip-arrow,.mw-tooltip-dark.right-top .mw-tooltip-arrow{top:12px}.mw-tooltip-dark.left-bottom .mw-tooltip-arrow,.mw-tooltip-dark.right-bottom .mw-tooltip-arrow{bottom:12px}.mw-tooltip-dark.left-center .mw-tooltip-arrow,.mw-tooltip-dark.right-center .mw-tooltip-arrow{top:50%;margin-top:-5px}.mw-tooltip-warning{color:#fa8e36;box-shadow:0 0 4px #fa8e36}.mw-tooltip-warning .mw-tooltip-content{background:#fa8e36;color:#fff}.mw-tooltip-warning .mw-tooltip-arrow:after{background:#fa8e36}.mw_modal{position:fixed;z-index:1102;top:0;left:0;display:none;background:#fff;overflow:hidden;box-shadow:0 0 27px -20px #111}.mw_modal.ui-draggable-dragging{transition:none;-moz-transition:none;-webkit-transition:none;-o-transition:none}.mw_modal_title .mw_modal_title{margin-left:14px;margin-top:9px}.mw_modal_basic .mw-modal-close,.mw_modal_simple .mw-modal-close{position:absolute;display:block;width:14px;height:14px;right:8px;top:8px;cursor:pointer;font-size:15px;color:#444}.mw_modal_basic .mw-modal-close{padding:0}.mw_modal_basic .mw-modal-close:hover,.mw_modal_simple .mw-modal-close:hover{color:#000}.mw_modal_title{display:inline-block;float:left;font-size:11px;height:15px;line-height:15px;white-space:nowrap;margin-left:6px;margin-top:3px;overflow:hidden;color:#fff;text-overflow:ellipsis;text-shadow:0 1px 0 #255F85;text-shadow:none;min-height:18px}.mw_modal_simple .mw_modal_title{margin-top:2px}.mw_modal_minimize{position:absolute;top:1px;right:30px;text-indent:-9999px;display:block;background:url(../img/popup_ctrls.png) 0 -20px no-repeat;cursor:pointer;width:27px;height:20px}.mw_modal.is_minimized .mw_modal_minimize{background-position:0 -40px}.mw_modal_container{padding:15px;position:relative;overflow-y:auto;overflow-x:hidden}.iframe_fix{position:absolute;top:0;left:0;z-index:995;width:100%;height:100%;background:0 0;display:none}.mw_overlay{position:fixed;top:0;left:0;z-index:1101;width:100%;height:100%;background:#000;opacity:.7}.mw_modal_type_iframe .mw_modal_container{padding:0;width:100%}.mw_modal_maximized{overflow:hidden}.mw_modal_default .mw-modal-close{cursor:pointer;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:11px;position:absolute;right:5px;text-indent:0;top:5px;width:26px;height:21px;text-align:center;color:#7b7b7b;line-height:21px;background:#000}.mw_modal_default .mw-modal-close:focus,.mw_modal_default .mw-modal-close:hover{background-color:#fff;color:#000;border-bottom-color:#000}.mw_modal_basic .mw-modal-close:after,.mw_modal_default .mw-modal-close:after{content:"\0111";font-family:Microweber;font-size:12px}.mw_modal_default .mw_modal_toolbar{height:31px;width:100%;cursor:move;position:relative;z-index:2;background-repeat:no-repeat;background-position:center center;background-color:#2b2b2b}.mw_modal_default{overflow:visible;background:0 0}.mw_modal_default .mw_modal_container{box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22);border-radius:0 0 2px 2px;background:#fafafa;border:1px solid #2b2b2b}.mw-modal-draggable.mw_modal_default .mw_modal_toolbar{background-image:url(../img/popup_settings_bar.png);border-radius:2px 2px 0 0;cursor:move;cursor:-moz-grab;cursor:-webkit-grab;cursor:grab}.mw_modal_primary .mw-modal-close{cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:11px;position:absolute;right:0;text-indent:0;top:0;width:40px;height:100%;text-align:center;color:#bababa}.mw_modal_primary .mw-modal-close:focus,.mw_modal_primary .mw-modal-close:hover{color:#bababa}.mw_modal_primary .mw-modal-close:active{box-shadow:inset 0 0 4px #CCC}.mw_modal_primary .mw_modal_icon{cursor:pointer;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:24px;position:absolute;left:15px;text-indent:0;top:0;width:28px;height:24px;text-align:center;color:#bababa;line-height:21px;margin-top:7px}.mw_modal_primary .mw-ui-box-content{border:0!important}.mw_modal_basic .mw-modal-close:after,.mw_modal_primary .mw-modal-close:after{content:"\f2d7";font-family:Microweber;font-size:15px}.mw_modal_primary .mw_modal_title{color:#fff;margin:8px 0 0 14px;font-size:15px;font-weight:700;float:none;line-height:20px;height:auto;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.mw_modal_primary .mw_modal_toolbar{height:31px;width:100%;cursor:move;position:relative;z-index:2;background-repeat:no-repeat;background-position:center center;background-color:#2b2b2b}.mw_modal_primary{background:0 0;border:1px solid #e8e8e8;-webkit-box-shadow:0 0 10px #e8e8e8;-moz-box-shadow:0 0 10px #e8e8e8;box-shadow:0 0 10px #e8e8e8;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;overflow:hidden}.mw_modal_primary .mw_modal_container iframe{background:#fff}.mw_modal_primary .mw_modal_container{border-radius:0 0 2px 2px;background:#fff}.mw-modal-draggable.mw_modal_primary .mw_modal_toolbar{background:#2b2b2b;border-radius:0;cursor:move;cursor:-moz-grab;cursor:-webkit-grab;cursor:grab;text-align:center;padding:3px 10px;height:auto}.mw_modal_simple .mw_modal_toolbar{height:30px;width:100%;top:0;left:0;position:relative;background:#EEE;cursor:move;cursor:-moz-grab;cursor:grab}.mw_modal_basic{box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22)}.mw_modal_basic .mw_modal_toolbar{top:0;left:0;background:#fff}.mw_modal_basic .mw_modal_toolbar .mw_modal_title{color:#2b2b2b}.mw_modal_gallery .mw_modal_toolbar{height:0}.mw_modal_basic .mw-modal-close{cursor:pointer;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:11px;position:absolute;right:5px;text-indent:0;top:5px;width:26px;height:21px;text-align:center;color:#7b7b7b;line-height:21px}.mw_modal_basic .mw-modal-close:after{content:"\0111";font-family:Microweber;font-size:12px}.mw_modal_default .mw-modal-close:active{box-shadow:inset 0 0 4px #CCC}.mw_modal_default .mw_modal_title{color:#fff;margin:8px 0 0 14px}.mw_modal_basic .mw_modal_toolbar{height:31px;width:100%;cursor:move;position:relative;z-index:2;background-repeat:no-repeat;background-position:center center}.mw_modal_gallery{background:0 0;border:none}.mw_modal_gallery .mw-modal-close{position:absolute;top:20px;right:20px;display:block;width:20px;height:20px;background:url(../img/galleryclose.png) right top no-repeat #fff;text-indent:-9999px;overflow:hidden;cursor:pointer;box-shadow:1px 1px 2px #000}.mw_modal_gallery .mw-modal-close:hover{background-color:#CCC}.mw_modal_gallery .mw-modal-close:active{box-shadow:inset 0 0 3px #707070}.mw_modal_gallery .mw_modal_container{padding:0}.mw_modal_gallery .mw_modal_toolbar{position:absolute;z-index:12;top:0;right:0}.mw-modal-frame{position:absolute;width:100%;min-width:100%;max-width:100%;height:100%;min-height:100%;max-height:100%;left:0;bottom:0}.mw-inline-modal,.mw-inline-modal-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.mw-inline-modal-overlay{background-color:rgba(249,249,249,.8)}.mw-inline-modal-container{position:relative;max-width:90%;max-height:90%;margin:0 auto}.mw-inline-modal-default .mw-inline-modal-container{background-color:#FFF;border:1px solid #EDEDED;box-shadow:0 0 6px #F3F3F3;margin-top:5px;overflow:auto;padding:10px}.mw-inline-modal-default .mw-inline-modal-container-close{display:block;cursor:pointer;position:absolute;top:10px;right:10px;width:20px;height:20px;background:url(../img/galleryclose.png) no-repeat}.mw_modal_gallery,.mw_modal_gallery>*{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;-khtml-user-select:none;user-select:none}.mw_modal_gallery .mwf-gallery-description{position:absolute;z-index:9;bottom:0;left:0;width:100%;font-size:13px;color:#fff;background:#000;background:rgba(10,0,0,.8)}.mwf-gallery-description-holder{padding:20px;max-height:75px;overflow:auto}.mwf-gallery{height:100%;width:100%;text-align:center}.mw_modal_gallery .mwf-gallery-modeHTML{display:inline-block;box-shadow:0 0 6px #111;position:absolute;overflow:auto;background:#111;color:#fff}.mwf-single-holder{position:absolute;margin:auto;display:inline-block}.mwf-single{box-shadow:0 0 6px #111;position:relative;display:block;background-color:#E0E0E0;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f2f2f2),color-stop(1,#e0e0e0));background-image:-o-linear-gradient(bottom,#f2f2f2 0,#e0e0e0 100%);background-image:-moz-linear-gradient(bottom,#f2f2f2 0,#e0e0e0 100%);background-image:-webkit-linear-gradient(bottom,#f2f2f2 0,#e0e0e0 100%);background-image:-ms-linear-gradient(bottom,#f2f2f2 0,#e0e0e0 100%);background-image:linear-gradient(to bottom,#f2f2f2 0,#e0e0e0 100%);margin:auto;max-height:100%;max-width:100%;min-height:200px;min-width:200px;width:auto;height:auto;cursor:pointer}.mw_gallery_loading .mwf-single-holder *{visibility:hidden!important}.semi_hidden{position:absolute;left:-9999px;top:-9999px}.mw_modal_gallery .mwf-next,.mw_modal_gallery .mwf-prev{font-size:60px;color:#ccc;text-align:center;position:absolute;top:50%;margin-top:-27px;right:20px;cursor:pointer;height:55px;width:50px;text-shadow:0 0 1px #777;line-height:40px;font-family:Microweber;border-radius:1px}.mwf-play:after{content:"\f215"}.mwf-play.active:after{content:"\f210"}.mw_modal_gallery .mwf-play{display:block;width:20px;height:20px;overflow:hidden;position:absolute;background:no-repeat #fff;box-shadow:1px 1px 2px #000;top:20px;right:62px;cursor:pointer;color:#000;font-family:Microweber}.mw_modal_gallery .mwf-next:focus,.mw_modal_gallery .mwf-next:hover,.mw_modal_gallery .mwf-prev:focus,.mw_modal_gallery .mwf-prev:hover{background:#fff;background:rgba(255,255,255,.5);color:#111}.mwf-loader{width:0;height:2px;background:rgba(74,164,191,.91);display:block;overflow:hidden;position:absolute;top:0;left:0}.mw_modal_gallery .mwf-next:active,.mw_modal_gallery .mwf-prev:active{box-shadow:inset 2px 2px 2px -2px #333,inset -2px -2px 2px -2px #333}.mw_modal_gallery .mwf-prev{left:20px;right:auto}.mwf-gallery-container{overflow:hidden;position:absolute;top:0;left:0;width:100%;height:100%}.mwf-fullscreen{display:block;width:20px;height:20px;overflow:hidden;text-indent:-9999px;position:absolute;background:url(../img/enter_fullscreen.png) no-repeat #fff;box-shadow:1px 1px 2px #000;top:20px;right:41px;cursor:pointer}.fullscreen-mode .mwf-fullscreen{background:url(../img/cancel_fullscreen.png) no-repeat #fff}.mw-dialog{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1200}.mw-dialog.mw-dialog-scroll-mode-window{overflow:auto}.mw-dialog.mw-dialog-scroll-mode-inside{overflow:hidden}.mw-dialog.mw-dialog-scroll-mode-inside .mw-dialog-holder{max-height:96%}.mw-dialog.mw-dialog-scroll-mode-inside .mw-dialog-container{overflow:hidden auto}.mw-dialog .mw-dialog-container{position:relative}.mw-dialog .mw-dialog-overlay{position:fixed;z-index:1;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.2)}.mw-dialog .mw-dialog-holder{position:absolute;z-index:2}.mw-dialog.mw-dialog-iframe iframe{position:absolute;top:0;left:0;width:100%;height:100%;background-color:transparent}.mw-dialog.mw-dialog-iframe-autoheight iframe{position:relative}.mw-dialog-skin-default .mw-dialog-header{min-height:40px;background-color:#2b2b2b;color:#fff;padding:10px;display:flex;align-items:center;position:relative;top:0;z-index:2}.mw-dialog-skin-default .mw-dialog-header .mw-dialog-title{max-width:calc(100% - 30px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mw-dialog-skin-default .mw-dialog-header .mw-dropdown-content{background-color:#2b2b2b}.mw-dialog-skin-default .mw-dialog-footer{padding:10px;overflow:hidden;position:relative;text-align:right;border-top:1px solid #eee}.mw-dialog-skin-default .mw-dialog-footer .mw-ui-btn+.mw-ui-btn{margin-left:10px}.mw-dialog-skin-default .mw-dialog-footer:empty{display:none}.mw-dialog-skin-default.mw-dialog-scroll-mode-window .mw-dialog-header{position:sticky}.mw-dialog-skin-default .mw-dialog-holder{max-width:98%;background-color:#fff;box-shadow:0 3px 9px rgba(0,0,0,.15);visibility:hidden;opacity:0;transform:translateY(20px);transition:none}.mw-dialog-skin-default .mw-dialog-holder.mw-dialog-drag-start{transition:none}.mw-dialog-skin-default.active .mw-dialog-holder{visibility:visible;opacity:1;transform:translateY(0)}.mw-dialog-skin-default .mw-dialog-close{position:absolute;top:0;right:0;width:40px;height:40px;display:flex;align-items:center;text-align:center;justify-content:center;color:#bababa;cursor:pointer;transition:background-color .3s}.mw-dialog-skin-default .mw-dialog-close:hover{background-color:rgba(255,255,255,.2)}.mw-dialog-skin-default .mw-dialog-close:after{content:"\f2d7";font-family:Microweber;font-size:15px}.mw-dialog-skin-default .mw-dialog-header .mw-dialog-close{height:100%}.mw-dialog-skin-default .mw-dialog-container{padding:10px}.mw-dialog-skin-default.mw-dialog-iframe-loading iframe{opacity:0;min-height:100px}.mw-dialog-module-settings .mw-dialog-overlay{pointer-events:none}.mw-switch{display:inline-block;direction:ltr;white-space:nowrap;position:relative;height:24px;border-radius:2px;cursor:pointer;font-size:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mw-switch [class*=mw-switch-]{display:inline-block;vertical-align:top;font-weight:700;font-size:12px;line-height:22px;height:24px;padding:0 5px;text-transform:uppercase;color:#8d8d8d;background:#d3d3d3;text-align:center;min-width:40px;border-top:1px solid #cbcbcb;border-bottom:1px solid #b8b8b8;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1)}.mw-switch-off{border-left:1px solid #bfbfbf;border-radius:2px 0 0 2px;padding-right:2px}.mw-switch-on{border-right:1px solid #bfbfbf;border-radius:0 2px 2px 0;padding-left:2px}.mw-switch input{visibility:hidden;position:absolute}.mw-switcher{position:absolute;display:block;width:40px;height:27px;line-height:27px;border-radius:2px;top:-2px;right:-2px;background:#f9f9f9;background:-moz-linear-gradient(left,#f9f9f9 0,#ececec 100%);background:-webkit-linear-gradient(left,#f9f9f9 0,#ececec 100%);background:linear-gradient(to right,#f9f9f9 0,#ececec 100%);z-index:2;border-width:1px;border-style:solid;border-color:#cbcbcb #bdbdbd #b8b8b8 #a1a1a1;box-shadow:0 1px 1px rgba(0,0,0,.2);-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1)}.mw-switcher:after,.mw-switcher:before{position:absolute;display:block;content:'';top:7px;left:50%;height:11px}.mw-switcher:before{width:4px;border-left:1px solid #c6c6c6;border-right:1px solid #c6c6c6;margin-left:-4px}.mw-switcher:after{width:1px;background:#c6c6c6;margin-left:3px}.mw-switch :checked~.mw-switcher{right:100%;margin-right:-39px}.mw-switch :checked~[class*=mw-switch-]{background:#0086db;border-top-color:#0080d2;border-bottom-color:#005992}.mw-switch input:checked~.mw-switch-off,.mw-switch input:not(:checked)~.mw-switch-on{color:transparent!important;font-size:1px;overflow:hidden!important;text-indent:20px}.mw-switch :checked~.mw-switch-off{border-left-color:#006cb1}.mw-switch :checked~.mw-switch-on{border-right-color:#006cb1;color:#f5f5f5}.mw-switch-action [class*=mw-switch-]{color:#db0000;background:#ffc0d2}.mw-switch-action :checked~[class*=mw-switch-]{color:#237100;background:#aaed9a}.mw-switch-action .mw-switch-off{border-left:1px solid #d87272;border-top:1px solid #d87272;border-bottom:1px solid #d87272}.mw-switch-action .mw-switch-on{border-right:1px solid #d87272;border-top:1px solid #d87272;border-bottom:1px solid #d87272}.mw-switch-action :checked~.mw-switch-off{border-left:1px solid #669000;border-top:1px solid #669000;border-bottom:1px solid #669000}.mw-switch-action :checked~.mw-switch-on{border-right:1px solid #669000;border-top:1px solid #669000;border-bottom:1px solid #669000}.mw-dropdown,.mw-ui-dropdown{position:relative;z-index:9;display:inline-block;-moz-user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-o-user-select:none;-khtml-user-select:none;user-select:none}.mw-dropdown ul,.mw-ui-dropdown ul{padding:0;white-space:nowrap}.mw-dropdown.active,.mw-dropdown:hover,.mw-ui-dropdown.active,.mw-ui-dropdown:hover{z-index:10}.mw-dropdown-content{position:absolute;display:none;left:0;top:100%;min-width:100%;padding-top:0}.mw-dropdown-pop>.mw-dropdown-content{max-height:200px;overflow:auto}.mw-dropdown>.mw-ui-field{width:100%}.mw-dropdown>.mw-ui-field+.mw-icon-dropdown{position:absolute;right:10px;top:50%;margin-top:-7px}.mw-ui-dropdown .mw-dropdown-content,.mw-ui-dropdown .mw-ui-dropdown-content{visibility:hidden;cursor:default;position:absolute;top:100%;left:0;min-width:100%}.mw-ui-dropdown-content>.mw-ui-btn-vertical-nav{margin-top:-1px;min-width:100%}.mw-ui-dropdown-content>.mw-ui-btn-vertical-nav>.mw-ui-btn{text-align:left}.mw-ui-dropdown-content>.mw-ui-btn-vertical-nav>.mw-ui-btn:first-child{border-radius:0}.mw-ui-dropdown.active .mw-ui-dropdown-content,.mw-ui-dropdown.active>.mw-dropdown-content,.mw-ui-dropdown:hover .mw-ui-dropdown-content,.mw-ui-dropdown:hover>.mw-dropdown-content{visibility:visible;border-bottom-left-radius:2px;border-bottom-right-radius:2px}.mw-ui-dropdown-click:hover>.mw-dropdown-content{visibility:hidden}.mw-ui-dropdown-click .mw-ui-btn.active+.mw-dropdown-content{visibility:visible}.mw-ui-dropdown .idownarr{float:right;margin:-1px -9px -12px 1px}.mw-ui-dropdown .mw-dropdown-arrow{margin-right:0;margin-top:7px;margin-left:8px}.mw-dropdown-list{list-style:none}.mw-dropdown-list>li a{display:block;font-size:11px;padding:3px 10px}.mw-dropdown-list li li a{padding-left:20px}.mw-dropdown-list li li li a{padding-left:30px}.mw-dropdown-list li li li li a{padding-left:40px}.mw-dropdown-list>li a:hover{background-color:#EEE}.mw-dropdown>.mw-ui-btn.mw-dropdown-val{width:100%;text-align:left;display:flex;justify-content:space-between}.mw-dropdown-content{overflow-x:hidden;overflow-y:auto;background-color:#fff;border-radius:0 0 2px 2px;border:1px solid #e5e5e5}.mw-dropdown-default .mw-dropdown-content li{cursor:pointer;position:relative;text-decoration:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mw-dropdown-default .mw-dropdown-content li,.mw-dropdown-default .mw-dropdown-content li>a{min-height:36px;padding:9px 12px;border-top:1px solid rgba(218,218,218,.35);display:block}.mw-dropdown-default .mw-dropdown-content li:first-child{border-top:none}.mw-dropdown-default .mw-dropdown-content li li>a{padding-left:24px}.mw-dropdown-default .mw-dropdown-content li li li>a{padding-left:48px}.mw-dropdown-default li:hover>:first-child{background-color:#EEE}.mw-dropdown-default>ul>li:first-child{border-top:none}.mw-dropdown-button:after,.mw-dropdown-default .mw-dropdown-value.mw-ui-btn:after{content:"\0118";font-family:Microweber;margin-top:2px;margin-left:5px;position:relative;float:right}.mw-dropdown-button{text-align:left}.mw-dropdown-default .mw-dropdown-content{margin-top:-1px}.mw-notification{display:table;padding:5px;text-align:center;font-size:12px}.mw-notification-lite{display:block;padding:0;text-align:inherit;font-size:inherit}.mw-notification>div{display:table-cell;height:25px;padding:0 11px;vertical-align:middle}.mw-notification>div>*{vertical-align:middle}.mw-success{background-color:#469a36;color:#fff}.mw-warning{background-color:#fa8e36;color:#fff}.mw-error{background-color:#f12b1c;color:#fff}#mw-notifications-holder{position:relative;z-index:9999}#mw-notifications-holder .mw-notification:first-child{border-top-left-radius:0;border-top-right-radius:0}#mw-notifications-holder .mw-notification{left:50%;margin-left:-175px;position:fixed;top:0;transition:opacity 2s;-moz-transition:opacity 2s;-webkit-transition:opacity 2s;-o-transition:opacity 2s}#mw-notifications-holder .mw-notification+.mw-notification{top:40px}#mw-notifications-holder .mw-notification+.mw-notification+.mw-notification{top:80px}#mw-notifications-holder .mw-notification+.mw-notification+.mw-notification+.mw-notification{top:120px}#mw-notifications-holder .mw-notification+.mw-notification+.mw-notification+.mw-notification+.mw-notification{top:160px}#mw-notifications-holder .mw-notification+.mw-notification+.mw-notification+.mw-notification+.mw-notification+.mw-notification{top:200px}#mw-notifications-holder .mw-notification+.mw-notification+.mw-notification+.mw-notification+.mw-notification+.mw-notification+.mw-notification{top:240px}.mw-control-box.active{z-index:100}.mw-control-box{padding:20px}.mw-control-box-default{padding:0;transition:all .5s;background:#fff;box-shadow:0 0 10px rgba(0,0,0,.2)}.mw-control-box-default.mw-control-box-right{transform:translateX(100%)}.mw-control-box-default.mw-control-box-right.active{transform:translateX(0)}.mw-control-box-top{top:0;left:0;width:100%}.mw-control-box-bottom{bottom:0;left:0;width:100%}.mw-control-box-right{top:0;right:0;height:100%}.mw-control-box-left{top:0;left:0;height:100%}.mw-control-box{position:fixed;z-index:12}.mw-control-box-default .mw-control-boxclose:after{content:''}.mw-control-box-default .mw-control-boxclose{position:absolute;z-index:10;width:20px;height:20px;text-align:center}.mw-autocomplete{position:relative;z-index:10;display:flex;padding:5px}.mw-autocomplete .mw-ui-btn{margin:5px}.mw-autocomplete .mw-ui-btn .mw-icon-close{font-size:15px;right:-5px}.mw-autocomplete .mw-autocomplete-list{position:absolute;top:100%;left:0;min-width:100%;max-height:60vh;min-height:120px;overflow:auto}.mw-autocomplete .mw-autocomplete-img{display:inline-block;width:20px;height:20px;background-position:center;background-repeat:no-repeat;background-size:cover;border-radius:3px;vertical-align:middle;margin-right:7px}.mw-autocomplete .mw-autocomplete-value{display:inline-block}.mw-autocomplete.mw-autocomplete-multiple-false input.mw-autocomplete-field{width:100%}.mw-autocomplete.mw-autocomplete-multiple-false .mw-autocomplete-value+input.mw-autocomplete-field{width:-webkit-calc(70%);width:calc(70%)}.mw-ui-btn-nav-tabs{float:left}.mw-ui-btn-nav-tabs .mw-ui-btn{border-width:1px 1px 0 0;float:left;border-radius:0}.mw-ui-btn-nav-tabs .mw-ui-btn:first-child{border-radius:2px 0 0}.mw-ui-btn-nav-tabs .mw-ui-btn:last-child{border-radius:0 2px 0 0}.mw-ui-btn-nav-tabs+.mw-ui-box{border-radius:0 0 2px 2px}.mw-slider{height:8px;position:relative;border-radius:5px;max-width:100%;clear:both;background-color:#EEE}.mw-slider .ui-slider-handle{background-color:#575757;display:block;width:8px;height:16px;top:-4px;position:absolute;border-radius:5px}.mw-ui-sidenav li{list-style:none}.mw-ui-sidenav a{display:block;padding:12px 40px 14px 14px;border-radius:0 2px 2px 0}.mw-ui-sidenav a:focus,.mw-ui-sidenav a:hover{background-color:rgba(139,139,139,.1)}.mw-ui-sidenav a:active{box-shadow:0 1px 6px -4px #000 inset}.mw-ui-sidenav a.active,.mw-ui-sidenav a.active:active,.mw-ui-sidenav a.active:focus,.mw-ui-sidenav a.active:hover{background-color:#8B8B8B;color:#fff;box-shadow:0 1px 5px -2px #000 inset}.mw-ui-richtext-editor{border:1px solid #EEE;min-height:300px;max-width:100%}.mw-wrapper{max-width:1100px;width:90%;margin-left:auto;margin-right:auto}.mw-picker-frame{overflow:hidden;width:280px;height:280px;min-height:280px}.mw-text-upper{text-transform:uppercase}body.bup.dragStart.state-element .edit .element:empty{background-color:#ffffb9;background-image:none;opacity:.6}.th-in-td{display:none}.mw-color-invert{color:#2b2b2b}.mw-color-info{color:#009cff}.mw-color-warn{color:#fa8e36}.mw-color-important{color:#f12b1c}.mw-color-notification{color:#469a36}.mw-progress{position:absolute;top:0;left:0;width:100%;height:3px;z-index:101}.mw-progress-index{width:0;height:3px;max-width:100%;background:#009cff;transition:width 10s}.mw-progress-slow .mw-progress-index{transition-duration:5s}.mw-progress-normal .mw-progress-index{transition-duration:2s}.mw-progress-fast .mw-progress-index{transition-duration:.6s}.mw-component-post-search{position:relative;display:inline-block}.mw-component-post-search ul{position:absolute;z-index:2;top:100%;left:0;min-width:100%;list-style:none;box-shadow:0 4px 15px rgba(0,0,0,.3);background:#fff}.mw-component-post-search ul li{padding:3px 12px}.mw-component-post-search ul li:hover{background:#3363c6;color:#fff}.mw-notif-box{padding:15px}.mw-notif-box i{font-size:20px}.mw-notif-box.mw-notif-box-info{background-color:#009cff;border-left:3px solid #009cff}.mw-notif-box.mw-notif-box-info span{color:#009cff}.mw-hr{display:block;clear:both;height:1px;overflow:hidden;margin:2rem auto;background:#e5e5e5;font-size:0}.mw-hero{position:relative;clear:both;background-position:center 33%;background-repeat:no-repeat;background-size:cover;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;max-height:100vh}.mw-hero .mw-hero-content{max-width:90%;padding:5%;position:relative;display:block;text-align:center;z-index:1;margin-left:auto;margin-right:auto;color:#fff}.mw-hero .mw-hero-content>h1,.mw-hero .mw-hero-content>h2,.mw-hero .mw-hero-content>h3,.mw-hero .mw-hero-content>h4,.mw-hero .mw-hero-content>h5,.mw-hero .mw-hero-content>h6{padding-bottom:.3em}.mw-hero .mw-hero-content>h1+p,.mw-hero .mw-hero-content>h2+p,.mw-hero .mw-hero-content>h3+p,.mw-hero .mw-hero-content>h4+p,.mw-hero .mw-hero-content>h5+p,.mw-hero .mw-hero-content>h6+p{padding-bottom:1rem}.mw-hero:after{position:absolute;display:block;z-index:0;content:'';top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.3)}.mw-color-picker-holder .mw-ui-btn{width:50px}.mw-color-picker-holder .mw-color-picker{max-width:-webkit-calc(100% - 50px);max-width:calc(100% - 50px)}.mw-selector{width:1px;height:1px;position:absolute;background:#0899E6;pointer-events:none;top:-20px;left:-20px;z-index:1}.mw-selector-bottom:after,.mw-selector-bottom:before,.mw-selector-top:after,.mw-selector-top:before{display:block;content:'';width:5px;height:5px;background:#0899E6;position:absolute}.mw-interactor,.mw-interactor:after,.mw-interactor:before{background:#C4D6E8;z-index:0}.mw-selector-top:before{top:-2px;left:-2px}.mw-selector-top:after{top:-2px;right:-2px}.mw-selector-bottom:before{bottom:-2px;left:-2px}.mw-selector-bottom:after{bottom:-2px;right:-2px}.mw-accordion-item{transition:.4s}.mw-accordion-item.active{box-shadow:0 0 4px rgba(0,0,0,.2)}.mw-ui-box-header.mw-accordion-title{cursor:pointer;position:relative}.mw-ui-box-header.mw-accordion-title:after{position:absolute;content:"\0118";display:inline-block;font-family:Microweber!important;text-transform:none!important;transition:.4s;z-index:1;color:#009cff;transform:rotate(-90deg);top:12px;right:12px;font-size:15px}.mw-ui-box-header.mw-accordion-title.active:after{transform:rotate(0deg)}.mw-badge{display:inline-block;position:absolute;top:0;right:0;transform:translate(50%,-50%);background:red;color:#FFF;min-height:13px;padding:0 2px;font-size:11px;line-height:20px;border-radius:20px;height:20px;min-width:20px;text-align:center}.mw-badge.mw-badge-invert{background-color:#2b2b2b}.mw-badge.mw-badge-info{background-color:#009cff}.mw-badge.mw-badge-warn{background-color:#fa8e36}.mw-badge.mw-badge-important{background-color:#f12b1c}.mw-badge.mw-badge-notification{background-color:#469a36}.mw-block-edit-holder{overflow:hidden;width:100%;position:relative}.mw-block-edit-slider{width:200%;overflow:hidden;position:relative}.mw-block-edit-edit-slide,.mw-block-edit-main-slide{width:50%;float:left;position:relative} \ No newline at end of file +img{max-width:100%}.deactivated{position:relative;display:block}.deactivated *{pointer-events:none}.deactivated:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.deactivated:before{display:block;position:absolute;content:" ";z-index:9;top:0;left:0;width:100%;height:100%;background:#fff;opacity:.5}.text-muted{color:#9E9E9E}.ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.pull-left{float:left!important}.pull-right{float:right!important}.mw-full-width,.w100{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.unselectable,.unselectable *{-moz-user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-o-user-select:none;-khtml-user-select:none;user-select:none}.mw-help{cursor:default;font-weight:700;font-size:11px;color:#3D89B8;position:relative;padding:0 2px;border:1px solid transparent;z-index:9;border-radius:2px}[data-help]{position:relative}.mw-help:before,[data-help]:before{position:absolute;content:attr(data-help);bottom:100%;margin-bottom:2px;left:-8px;display:block;visibility:hidden;padding:7px;background:#282828;width:175px;font-weight:400;border-radius:2px;box-shadow:0 0 8px -2px #ccc;color:#fff;z-index:10;text-align:left}.mw-help-right:before,[data-help-right]:before{left:auto;right:-8px}.mw-help-right-top:before,[data-help-right-top]:before{left:100%;top:0;bottom:auto}.mw-help-right-bottom:before,[data-help-right-bottom]:before{left:100%;bottom:0}.mw-help:hover:before,[data-help]:hover:before{visibility:visible}.mw-ui-inline-list{margin:0;padding:0}.mw-ui-inline-list>*{display:inline-block;margin-right:10px;vertical-align:middle}.mw-ui-inline-list li{list-style:none}.mw-ui-inline-list li:last-child{margin-right:0}.mw-ui-inline-list li *{vertical-align:middle}.mw-clear{clear:both}.mw-clear:after,.mw-clear:before{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.mw-fullscreen:-webkit-full-screen{background:#fff;overflow:hidden;width:100%;max-width:100%;min-width:100%;height:100%;max-height:100%;min-height:100%;position:absolute}.mw-fullscreen:-moz-full-screen{background:#fff;overflow:hidden;width:100%;height:100%}.mw-fullscreen:-ms-fullscreen{background:#fff;overflow:hidden;width:100%;height:100%}.mw-fullscreen:fullscreen{background:#fff;overflow:hidden;width:100%;height:100%}@-moz-keyframes spin{100%{-moz-transform:rotate(360deg)}}@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.mw-loading:before{position:fixed;top:50%;left:50%;width:30px;height:30px;margin:-15px 0 0 -15px;content:"";border-left:2px solid #0268cc;border-top:2px solid #fff;border-bottom:2px solid #fff;border-right:2px solid #0268cc;z-index:999;border-radius:60px;box-shadow:0 0 5px rgba(0,0,0,.47);-webkit-animation:spin 4s linear infinite;-moz-animation:spin 4s linear infinite;animation:spin 4s linear infinite}.mw-loading:after{content:'';position:absolute;display:block;top:0;left:0;width:100%;height:100%;background:url(../img/) rgba(255,255,255,.5);cursor:default;z-index:333}body.mw-loading:after,body.mw-loading:before,html.mw-loading:after,html.mw-loading:before{position:fixed}.mw-loading-defaults{position:relative}.mw-list{padding:6px 0}.mw-list li{padding-left:14px;list-style:none;line-height:2}.mw-list li [class*=mw-icon-]{font-size:25px;margin-right:6px;width:30px}.mw-socials-facebook-color{color:#3b5998}.mw-socials-twitter-color{color:#1da1f2}.mw-socials-youtube-color{color:red}.mw-socials-instagram-color{color:#c32aa3}.mw-socials-pinterest-color{color:#bd081c}.mw-socials-linkedin-color{color:#007bb5}.mw-socials-whatsapp-color{color:#25d366}.mw-socials-vimeo-color{color:#1ab7ea}.mw-socials-vk-color{color:#4a76a8}.mw-socials-viber-color{color:#59267C}.mw-m-a{margin:auto!important}.mw-m-0{margin:0!important}.mw-m-5{margin:5px!important}.mw-m-10{margin:10px!important}.mw-m-20{margin:20px!important}.mw-m-30{margin:30px!important}.mw-m-40{margin:40px!important}.mw-m-t-0{margin-top:0!important}.mw-m-t-5{margin-top:5px!important}.mw-m-t-10{margin-top:10px!important}.mw-m-t-15{margin-top:15px!important}.mw-m-t-20{margin-top:20px!important}.mw-m-t-30{margin-top:30px!important}.mw-m-t-40{margin-top:40px!important}.mw-m-t-50{margin-top:50px!important}.mw-m-t-60{margin-top:60px!important}.mw-m-t-70{margin-top:70px!important}.mw-m-t-80{margin-top:80px!important}.mw-m-l-0{margin-left:0!important}.mw-m-l-10{margin-left:10px!important}.mw-m-l-20{margin-left:20px!important}.mw-m-l-30{margin-left:30px!important}.mw-m-l-40{margin-left:40px!important}.mw-m-l-50{margin-left:50px!important}.mw-m-l-60{margin-left:60px!important}.mw-m-l-70{margin-left:70px!important}.mw-m-l-80{margin-left:80px!important}.mw-m-r-0{margin-right:0!important}.mw-m-r-10{margin-right:10px!important}.mw-m-r-20{margin-right:20px!important}.mw-m-r-30{margin-right:30px!important}.mw-m-r-40{margin-right:40px!important}.mw-m-r-50{margin-right:50px!important}.mw-m-r-60{margin-right:60px!important}.mw-m-r-70{margin-right:70px!important}.mw-m-r-80{margin-right:80px!important}.mw-m-b-0{margin-bottom:0!important}.mw-m-b-10{margin-bottom:10px!important}.mw-m-b-20{margin-bottom:20px!important}.mw-m-b-30{margin-bottom:30px!important}.mw-m-b-40{margin-bottom:40px!important}.mw-m-b-50{margin-bottom:50px!important}.mw-m-b-60{margin-bottom:60px!important}.mw-m-b-70{margin-bottom:70px!important}.mw-p-0{padding:0!important}.mw-p-10{padding:10px!important}.mw-p-20{padding:20px!important}.mw-p-30{padding:30px!important}.mw-p-40{padding:40px!important}.mw-p-t-0{padding-top:0!important}.mw-p-t-5{padding-top:5px!important}.mw-p-t-10{padding-top:10px!important}.mw-p-t-20{padding-top:20px!important}.mw-p-t-30{padding-top:30px!important}.mw-p-t-40{padding-top:40px!important}.mw-p-t-50{padding-top:50px!important}.mw-p-t-60{padding-top:60px!important}.mw-p-t-70{padding-top:70px!important}.mw-p-t-80{padding-top:80px!important}.mw-p-t-90{padding-top:90px!important}.mw-p-t-100{padding-top:100px!important}.mw-p-b-0{padding-bottom:0!important}.mw-p-b-10{padding-bottom:10px!important}.mw-p-b-20{padding-bottom:20px!important}.mw-p-b-30{padding-bottom:30px!important}.mw-p-b-40{padding-bottom:40px!important}.mw-p-b-50{padding-bottom:50px!important}.mw-p-b-60{padding-bottom:60px!important}.mw-p-b-70{padding-bottom:70px!important}.mw-p-b-80{padding-bottom:80px!important}.mw-p-b-90{padding-bottom:90px!important}.mw-p-b-100{padding-bottom:100px!important}@media screen and (max-width:991px){.mw-m-t-10{margin-top:5px!important}.mw-m-t-15{margin-top:7px!important}.mw-m-t-20{margin-top:10px!important}.mw-m-t-30{margin-top:15px!important}.mw-m-t-40{margin-top:20px!important}.mw-m-t-50{margin-top:25px!important}.mw-m-t-60{margin-top:30px!important}.mw-m-t-70{margin-top:35px!important}.mw-m-t-80{margin-top:40px!important}.mw-m-l-10{margin-left:5px!important}.mw-m-l-20{margin-left:10px!important}.mw-m-l-30{margin-left:15px!important}.mw-m-l-40{margin-left:20px!important}.mw-m-l-50{margin-left:25px!important}.mw-m-l-60{margin-left:30px!important}.mw-m-l-70{margin-left:35px!important}.mw-m-l-80{margin-left:40px!important}.mw-m-r-10{margin-right:5px!important}.mw-m-r-20{margin-right:10px!important}.mw-m-r-30{margin-right:15px!important}.mw-m-r-40{margin-right:20px!important}.mw-m-r-50{margin-right:25px!important}.mw-m-r-60{margin-right:30px!important}.mw-m-r-70{margin-right:35px!important}.mw-m-r-80{margin-right:40px!important}.mw-m-b-10{margin-bottom:5px!important}.mw-m-b-20{margin-bottom:10px!important}.mw-m-b-30{margin-bottom:15px!important}.mw-m-b-40{margin-bottom:20px!important}.mw-m-b-50{margin-bottom:25px!important}.mw-m-b-60{margin-bottom:30px!important}.mw-m-b-70{margin-bottom:35px!important}.mw-p-t-10{padding-top:5px!important}.mw-p-t-20{padding-top:10px!important}.mw-p-t-30{padding-top:15px!important}.mw-p-t-40{padding-top:20px!important}.mw-p-t-50{padding-top:25px!important}.mw-p-t-60{padding-top:30px!important}.mw-p-t-70{padding-top:35px!important}.mw-p-t-80{padding-top:40px!important}.mw-p-t-90{padding-top:45px!important}.mw-p-t-100{padding-top:50px!important}.mw-p-b-10{padding-bottom:5px!important}.mw-p-b-20{padding-bottom:10px!important}.mw-p-b-30{padding-bottom:15px!important}.mw-p-b-40{padding-bottom:20px!important}.mw-p-b-50{padding-bottom:25px!important}.mw-p-b-60{padding-bottom:30px!important}.mw-p-b-70{padding-bottom:35px!important}.mw-p-b-80{padding-bottom:40px!important}.mw-p-b-90{padding-bottom:45px!important}.mw-p-b-100{padding-bottom:50px!important}}@font-face{font-family:Microweber;src:url(fonts/font.ttf?mwv=v06) format('truetype');font-weight:400;font-style:normal}[class*=mw-icon-],[class*=mwi-]{line-height:1}[class*=mw-icon-]{font-style:normal;font-weight:400;position:relative;display:inline-block;font-size:100%;vertical-align:middle}.mw-defaults [class*=mw-icon-],.mw-ui-box [class*=mw-icon-],.mw-ui-box-header [class*=mw-icon-],.mw-ui-btn-nav [class*=mw-icon-],.mw-ui-dropdown [class*=mw-icon-],.mw-ui-navigation [class*=mw-icon-]{vertical-align:middle}[class*=mw-icon-]:before{display:inline-block;font-family:Microweber!important;text-transform:none!important}.mw-icon-mw:before{content:'m'}.mw-icon-shop:before{content:'s'}.mw-icon-blog:before{content:'b'}.mw-icon-live:before{content:'l'}.mw-icon-website:before{content:'w'}.mw-icon-none:before{content:' '}.mw-icon-page:before{content:'\0071'}.mw-icon-dynamicpage:before{content:'p'}.mw-icon-post:before{content:'\006f'}.mw-icon-category:before{content:'\0063'}.mw-icon-module:before{content:'n'}.mw-icon-gear:before{content:'t'}.mw-icon-magnify:before{content:'\00cd'}.mw-icon-plus:before{content:'\002b'}.mw-icon-pen:before{content:'\00cc'}.mw-icon-bin:before{content:'\0072'}.mw-icon-drag:before{content:'\0100'}.mw-icon-check:before{content:"\0101"}.mw-icon-checkbox:before{content:"\0113"}.mw-icon-checkbox-checked:before{content:"\0114"}.mw-icon-radio:before{content:"\0115"}.mw-icon-radio-checked:before{content:"\0116"}.mw-icon-truck:before{content:"\0103"}.mw-icon-users:before{content:"\0104"}.mw-icon-microweber:before{content:"\0106"}.mw-icon-back:before{content:"\0107"}.mw-icon-menu:before{content:"\0108"}.mw-icon-image:before,.mw-icon-picture:before{content:"\0109"}.mw-icon-comment:before{content:"\0110"}.mw-icon-close:before{content:"\0111"}.mw-icon-product:before{content:"\0112"}.mw-icon-dropdown:before{content:"\0118"}.mw-icon-pricefields:before{content:"\0119"}.mw-icon-unpublish:before{content:"\0120"}.mw-icon-download:before{content:"\0121"}.mw-icon-download-2:before{content:"\0149"}.mw-icon-reload:before{content:"\0122"}.mw-icon-facebook:before{content:"\0123"}.mw-icon-twitter:before{content:"\0124"}.mw-icon-googleplus:before{content:"\0125"}.mw-icon-user:before{content:"\0126"}.mw-icon-off:before{content:"\0127"}.mw-icon-lock:before{content:"\0128"}.mw-icon-menuadd:before{content:"\0129"}.mw-icon-template:before{content:"\0130"}.mw-icon-market:before{content:"\0131"}.mw-icon-suggest:before{content:"\0132"}.mw-icon-notification:before{content:"\0133"}.mw-icon-updates:before{content:"\0134"}.mw-icon-comments:before{content:"\0135"}.mw-icon-arrowdown:before{content:"\0136"}.mw-icon-arrowup:before{content:"\0139"}.mw-icon-arrowleft:before{content:"\0137"}.mw-icon-arrowright:before{content:"\0138"}.mw-icon-video:before{content:"\0140"}.mw-icon-file:before{content:"\0141"}.mw-icon-upgrades:before{content:"\0142"}.mw-icon-shopcart:before{content:"\0143"}.mw-icon-crop:before{content:"\0144"}.mw-icon-network:before{content:"\0145"}.mw-icon-drop:before{content:"\0146"}.mw-icon-next-thick:before{content:"\0147"}.mw-icon-prev-thick:before{content:"\0148"}.mw-icon-alert:before{content:"\f101"}.mw-icon-alert-circled:before{content:"\f100"}.mw-icon-web-add:before{content:"\f2c7"}.mw-icon-web-alarm:before{content:"\f2c8"}.mw-icon-web-archive:before{content:"\f2c9"}.mw-icon-web-arrow-back:before{content:"\f2ca"}.mw-icon-web-arrow-down-left:before{content:"\f2cb"}.mw-icon-web-arrow-down-right:before{content:"\f2cc"}.mw-icon-web-arrow-forward:before{content:"\f30f"}.mw-icon-web-arrow-up-left:before{content:"\f2cd"}.mw-icon-web-arrow-up-right:before{content:"\f2ce"}.mw-icon-web-battery:before{content:"\f2cf"}.mw-icon-web-calendar:before{content:"\f2d1"}.mw-icon-web-call:before{content:"\f2d2"}.mw-icon-web-camera:before{content:"\f2d3"}.mw-icon-web-chat:before{content:"\f2d4"}.mw-icon-web-checkmark:before{content:"\f2d5"}.mw-icon-web-clock:before{content:"\f2d6"}.mw-icon-web-close:before{content:"\f2d7"}.mw-icon-web-developer:before{content:"\f2db"}.mw-icon-web-display:before{content:"\f2dc"}.mw-icon-web-dropdown:before{content:"\f2de"}.mw-icon-web-earth:before{content:"\f2df"}.mw-icon-web-folder:before{content:"\f2e0"}.mw-icon-web-forums:before{content:"\f2e1"}.mw-icon-web-image:before{content:"\f2e4"}.mw-icon-web-information:before{content:"\f2e6"}.mw-icon-web-keypad:before{content:"\f2e7"}.mw-icon-web-lightbulb:before{content:"\f2e8"}.mw-icon-web-locate:before{content:"\f2e9"}.mw-icon-web-location:before{content:"\f2ea"}.mw-icon-web-mail:before{content:"\f2eb"}.mw-icon-web-microphone:before{content:"\f2ec"}.mw-icon-web-mixer:before{content:"\f2ed"}.mw-icon-web-more:before{content:"\f2ee"}.mw-icon-web-note:before{content:"\f2ef"}.mw-icon-web-playstore:before{content:"\f2f0"}.mw-icon-web-printer:before{content:"\f2f1"}.mw-icon-web-promotion:before{content:"\f2f2"}.mw-icon-web-reminder:before{content:"\f2f3"}.mw-icon-web-remove:before{content:"\f2f4"}.mw-icon-web-search:before{content:"\f2f5"}.mw-icon-web-settings:before{content:"\f2f7"}.mw-icon-web-share:before{content:"\f2f8"}.mw-icon-web-social:before{content:"\f2fa"}.mw-icon-web-social-user:before{content:"\f2f9"}.mw-icon-web-star:before{content:"\f2fc"}.mw-icon-web-wifi:before{content:"\f305"}.mw-icon-aperture:before{content:"\f313"}.mw-icon-archive:before{content:"\f102"}.mw-icon-arrow-down-a:before{content:"\f103"}.mw-icon-arrow-down-b:before{content:"\f104"}.mw-icon-arrow-down-c:before{content:"\f105"}.mw-icon-arrow-expand:before{content:"\f25e"}.mw-icon-arrow-left-a:before{content:"\f106"}.mw-icon-arrow-left-b:before{content:"\f107"}.mw-icon-arrow-left-c:before{content:"\f108"}.mw-icon-arrow-move:before{content:"\f263"}.mw-icon-arrow-resize:before{content:"\f264"}.mw-icon-arrow-return-left:before{content:"\f265"}.mw-icon-arrow-return-right:before{content:"\f266"}.mw-icon-arrow-right-a:before{content:"\f109"}.mw-icon-arrow-right-b:before{content:"\f10a"}.mw-icon-arrow-right-c:before{content:"\f10b"}.mw-icon-arrow-shrink:before{content:"\f267"}.mw-icon-arrow-swap:before{content:"\f268"}.mw-icon-arrow-up-a:before{content:"\f10c"}.mw-icon-arrow-up-b:before{content:"\f10d"}.mw-icon-arrow-up-c:before{content:"\f10e"}.mw-icon-beaker:before{content:"\f269"}.mw-icon-bookmark:before{content:"\f26b"}.mw-icon-briefcase:before{content:"\f26c"}.mw-icon-camera:before{content:"\f118"}.mw-icon-card:before{content:"\f119"}.mw-icon-chatbox:before{content:"\f11b"}.mw-icon-chatbox-working:before{content:"\f11a"}.mw-icon-chatboxes:before{content:"\f11c"}.mw-icon-chatbubble:before{content:"\f11e"}.mw-icon-chatbubble-working:before{content:"\f11d"}.mw-icon-chatbubbles:before{content:"\f11f"}.mw-icon-checkmark:before{content:"\f122"}.mw-icon-checkmark-circled:before{content:"\f120"}.mw-icon-checkmark-round:before{content:"\f121"}.mw-icon-clock:before{content:"\f26e"}.mw-icon-close2:before{content:"\f12a"}.mw-icon-close-circled:before{content:"\f128"}.mw-icon-close-round:before{content:"\f129"}.mw-icon-cloud:before{content:"\f12b"}.mw-icon-code:before{content:"\f271"}.mw-icon-code-working:before{content:"\f270"}.mw-icon-coffee:before{content:"\f272"}.mw-icon-compose:before{content:"\f12c"}.mw-icon-connectmw-icon-bars:before{content:"\f274"}.mw-icon-contrast:before{content:"\f275"}.mw-icon-cube:before{content:"\f318"}.mw-icon-document:before{content:"\f12f"}.mw-icon-document-text:before{content:"\f12e"}.mw-icon-earth:before{content:"\f276"}.mw-icon-edit:before{content:"\f2bf"}.mw-icon-eject:before{content:"\f131"}.mw-icon-email:before{content:"\f132"}.mw-icon-eye:before{content:"\f133"}.mw-icon-eye-disabled:before{content:"\f306"}.mw-icon-filing:before{content:"\f134"}.mw-icon-film-marker:before{content:"\f135"}.mw-icon-flag:before{content:"\f279"}.mw-icon-flash:before{content:"\f137"}.mw-icon-flask:before{content:"\f138"}.mw-icon-folder:before{content:"\f139"}.mw-icon-forward:before{content:"\f13a"}.mw-icon-gear-a:before{content:"\f13d"}.mw-icon-gear-b:before{content:"\f13e"}.mw-icon-grid:before{content:"\f13f"}.mw-icon-headphone:before{content:"\f140"}.mw-icon-heart:before{content:"\f141"}.mw-icon-help-circled:before{content:"\f142"}.mw-icon-home:before{content:"\f144"}.mw-icon-icon-social-google-plus:before{content:"\f146"}.mw-icon-icon-social-google-plus-outline:before{content:"\f145"}.mw-icon-image-frame:before{content:"\f147"}.mw-icon-images-frame:before{content:"\f148"}.mw-icon-information:before{content:"\f14a"}.mw-icon-informatmw-icon-circled:before{content:"\f149"}.mw-icon-app-alarm:before{content:"\f14d"}.mw-icon-app-alarm-outline:before{content:"\f14c"}.mw-icon-app-albums:before{content:"\f14f"}.mw-icon-app-albums-outline:before{content:"\f14e"}.mw-icon-app-arrow-back:before{content:"\f150"}.mw-icon-app-arrow-down:before{content:"\f151"}.mw-icon-app-arrow-forward:before{content:"\f152"}.mw-icon-arrow-left-slim:before{content:"\f153"}.mw-icon-arrow-right-slim:before{content:"\f154"}.mw-icon-app-arrow-thin-down:before{content:"\f27e"}.mw-icon-app-arrow-thin-left:before{content:"\f27f"}.mw-icon-app-arrow-thin-right:before{content:"\f280"}.mw-icon-app-arrow-thin-up:before{content:"\f281"}.mw-icon-app-arrow-up:before{content:"\f155"}.mw-icon-app-briefcase:before{content:"\f283"}.mw-icon-app-briefcase-outline:before{content:"\f282"}.mw-icon-app-browsers:before{content:"\f161"}.mw-icon-app-browsers-outline:before{content:"\f160"}.mw-icon-app-calendar:before{content:"\f163"}.mw-icon-app-calendar-outline:before{content:"\f162"}.mw-icon-app-camera:before{content:"\f165"}.mw-icon-app-camera-outline:before{content:"\f164"}.mw-icon-cart:before{content:"\f167"}.mw-icon-cart-outline:before{content:"\f166"}.mw-icon-app-chatboxes:before{content:"\f169"}.mw-icon-app-chatboxes-outline:before{content:"\f168"}.mw-icon-app-chatbubble:before{content:"\f16b"}.mw-icon-app-chatbubble-outline:before{content:"\f16a"}.mw-icon-app-checkmark:before{content:"\f16e"}.mw-icon-app-checkmark-empty:before{content:"\f16c"}.mw-icon-app-checkmark-outline:before{content:"\f16d"}.mw-icon-app-circle-outline:before{content:"\f170"}.mw-icon-lite-clock:before{content:"\f172"}.mw-icon-lite-clock-outline:before{content:"\f171"}.mw-icon-app-close:before{content:"\f2bc"}.mw-icon-app-close-empty:before{content:"\f2bd"}.mw-icon-app-close-outline:before{content:"\f2bb"}.mw-icon-app-cloud:before{content:"\f178"}.mw-icon-app-cloud-download:before{content:"\f174"}.mw-icon-app-cloud-download-outline:before{content:"\f173"}.mw-icon-app-cloud-outline:before{content:"\f175"}.mw-icon-app-compose:before{content:"\f17e"}.mw-icon-app-compose-outline:before{content:"\f17d"}.mw-icon-app-copy:before{content:"\f182"}.mw-icon-app-copy-outline:before{content:"\f181"}.mw-icon-app-download:before{content:"\f184"}.mw-icon-app-email:before{content:"\f187"}.mw-icon-app-email-outline:before{content:"\f186"}.mw-icon-app-expand:before{content:"\f30d"}.mw-icon-app-fastforward:before{content:"\f18b"}.mw-icon-app-fastforward-outline:before{content:"\f18a"}.mw-icon-app-gear:before{content:"\f195"}.mw-icon-app-gear-outline:before{content:"\f194"}.mw-icon-app-heart:before{content:"\f199"}.mw-icon-app-heart-outline:before{content:"\f198"}.mw-icon-help:before{content:"\f19c"}.mw-icon-help-outline:before{content:"\f19b"}.mw-icon-app-keypad:before{content:"\f1a4"}.mw-icon-app-keypad-outline:before{content:"\f1a3"}.mw-icon-app-lightbulb:before{content:"\f287"}.mw-icon-app-lightbulb-outline:before{content:"\f286"}.mw-icon-app-location:before{content:"\f1a6"}.mw-icon-app-locatmw-icon-outline:before{content:"\f1a5"}.mw-icon-app-locked:before{content:"\f1a8"}.mw-icon-app-locked-outline:before{content:"\f1a7"}.mw-icon-app-loop:before{content:"\f32d"}.mw-icon-app-loop-strong:before{content:"\f32c"}.mw-icon-app-medkit:before{content:"\f289"}.mw-icon-app-mic:before{content:"\f1ab"}.mw-icon-app-mic-off:before{content:"\f1a9"}.mw-icon-app-mic-outline:before{content:"\f1aa"}.mw-icon-app-more:before{content:"\f1b4"}.mw-icon-app-paper-outline:before{content:"\f32e"}.mw-icon-app-pause:before{content:"\f1be"}.mw-icon-app-pause-outline:before{content:"\f1bd"}.mw-icon-app-person:before{content:"\f1c2"}.mw-icon-app-person-outline:before{content:"\f1c1"}.mw-icon-app-photos:before{content:"\f1c6"}.mw-icon-app-photos-outline:before{content:"\f1c5"}.mw-icon-app-pie:before{content:"\f28b"}.mw-icon-app-pie-outline:before{content:"\f28a"}.mw-icon-app-play:before{content:"\f1c8"}.mw-icon-app-play-outline:before{content:"\f1c7"}.mw-icon-app-plus:before{content:"\f1cb"}.mw-icon-app-plus-empty:before{content:"\f1c9"}.mw-icon-app-plus-outline:before{content:"\f1ca"}.mw-icon-app-pricetag:before{content:"\f28d"}.mw-icon-app-pricetag-outline:before{content:"\f28c"}.mw-icon-app-pricetags:before{content:"\f333"}.mw-icon-app-pricetags-outline:before{content:"\f332"}.mw-icon-app-printer:before{content:"\f1cd"}.mw-icon-app-printer-outline:before{content:"\f1cc"}.mw-icon-app-pulse:before{content:"\f335"}.mw-icon-app-pulse-strong:before{content:"\f334"}.mw-icon-app-redo:before{content:"\f1d3"}.mw-icon-app-redo-outline:before{content:"\f1d2"}.mw-icon-app-refresh-empty:before{content:"\f1d4"}.mw-icon-app-reload:before,.mw-icon-app-reloading:before{content:"\f28e"}.mw-icon-app-reverse-camera:before{content:"\f337"}.mw-icon-app-reverse-camera-outline:before{content:"\f336"}.mw-icon-app-rewind:before{content:"\f1d8"}.mw-icon-app-rewind-outline:before{content:"\f1d7"}.mw-icon-app-search:before{content:"\f1da"}.mw-icon-app-search-strong:before{content:"\f1d9"}.mw-icon-app-shrink:before{content:"\f30e"}.mw-icon-app-skipbackward:before{content:"\f1dc"}.mw-icon-app-skipbackward-outline:before{content:"\f1db"}.mw-icon-app-skipforward:before{content:"\f1de"}.mw-icon-app-skipforward-outline:before{content:"\f1dd"}.mw-icon-app-speedometer:before{content:"\f290"}.mw-icon-app-speedometer-outline:before{content:"\f28f"}.mw-icon-app-star:before{content:"\f1e0"}.mw-icon-app-star-half:before{content:"\f33a"}.mw-icon-app-star-outline:before{content:"\f1df"}.mw-icon-app-stopwatch:before{content:"\f1e2"}.mw-icon-app-stopwatch-outline:before{content:"\f1e1"}.mw-icon-app-sunny:before{content:"\f1e4"}.mw-icon-app-sunny-outline:before{content:"\f1e3"}.mw-icon-app-telephone:before{content:"\f1e6"}.mw-icon-app-telephone-outline:before{content:"\f1e5"}.mw-icon-app-toggle:before{content:"\f33e"}.mw-icon-app-toggle-outline:before{content:"\f33d"}.mw-icon-app-trash:before{content:"\f1ec"}.mw-icon-app-trash-outline:before{content:"\f1eb"}.mw-icon-app-undo:before{content:"\f1ee"}.mw-icon-app-undo-outline:before{content:"\f1ed"}.mw-icon-app-unlocked:before{content:"\f1f0"}.mw-icon-app-unlocked-outline:before{content:"\f1ef"}.mw-icon-ipad:before{content:"\f1f9"}.mw-icon-iphone:before{content:"\f1fa"}.mw-icon-ipod:before{content:"\f1fb"}.mw-icon-laptop:before{content:"\f1fc"}.mw-icon-leaf:before{content:"\f1fd"}.mw-icon-lightbulb:before{content:"\f299"}.mw-icon-link:before{content:"\f1fe"}.mw-icon-load-a:before,.mw-icon-loading-a:before{content:"\f29a"}.mw-icon-load-c:before,.mw-icon-loading-c:before{content:"\f29c"}.mw-icon-location:before{content:"\f1ff"}.mw-icon-locked:before{content:"\f200"}.mw-icon-loop:before,.mw-icon-looping:before{content:"\f201"}.mw-icon-market-rocket:before{content:'\002a'}.mw-icon-map:before{content:"\f203"}.mw-icon-medkit:before{content:"\f2a2"}.mw-icon-merge:before{content:"\f33f"}.mw-icon-mic-a:before{content:"\f204"}.mw-icon-mic-c:before{content:"\f206"}.mw-icon-monitor:before{content:"\f20a"}.mw-icon-more:before{content:"\f20b"}.mw-icon-mouse:before{content:"\f340"}.mw-icon-navicon:before{content:"\f20e"}.mw-icon-navicon-round:before{content:"\f20d"}.mw-icon-navigate:before{content:"\f2a3"}.mw-icon-outlet:before{content:"\f342"}.mw-icon-pause:before{content:"\f210"}.mw-icon-person:before{content:"\f213"}.mw-icon-person-add:before{content:"\f211"}.mw-icon-person-stalker:before{content:"\f212"}.mw-icon-pie-graph:before{content:"\f2a5"}.mw-icon-pin:before{content:"\f2a6"}.mw-icon-pinpoint:before{content:"\f2a7"}.mw-icon-play:before{content:"\f215"}.mw-icon-plus-circled:before{content:"\f216"}.mw-icon-plus-round:before{content:"\f217"}.mw-icon-podium:before{content:"\f344"}.mw-icon-power:before{content:"\f2a9"}.mw-icon-pricetag:before{content:"\f2aa"}.mw-icon-pricetags:before{content:"\f2ab"}.mw-icon-printer:before{content:"\f21a"}.mw-icon-pull-request:before{content:"\f345"}.mw-icon-qr-scanner:before{content:"\f346"}.mw-icon-quote:before{content:"\f347"}.mw-icon-radio-waves:before{content:"\f2ac"}.mw-icon-refresh:before,.mw-icon-refreshing:before{content:"\f21c"}.mw-icon-reply:before{content:"\f21e"}.mw-icon-reply-all:before{content:"\f21d"}.mw-icon-ribbon-a:before{content:"\f348"}.mw-icon-ribbon-b:before{content:"\f349"}.mw-icon-scissors:before{content:"\f34b"}.mw-icon-search:before{content:"\f21f"}.mw-icon-settings:before{content:"\f2ad"}.mw-icon-share:before{content:"\f220"}.mw-icon-skip-backward:before{content:"\f222"}.mw-icon-skip-forward:before{content:"\f223"}.mw-icon-social-web:before{content:"\f225"}.mw-icon-social-web-outline:before{content:"\f224"}.mw-icon-social-apple:before{content:"\f227"}.mw-icon-social-apple-outline:before{content:"\f226"}.mw-icon-social-bitcoin:before{content:"\f2af"}.mw-icon-social-bitcoin-outline:before{content:"\f2ae"}.mw-icon-social-buffer:before{content:"\f229"}.mw-icon-social-buffer-outline:before{content:"\f228"}.mw-icon-social-designernews:before{content:"\f22b"}.mw-icon-social-designernews-outline:before{content:"\f22a"}.mw-icon-social-dribbble:before{content:"\f22d"}.mw-icon-social-dribbble-outline:before{content:"\f22c"}.mw-icon-social-dropbox:before{content:"\f22f"}.mw-icon-social-dropbox-outline:before{content:"\f22e"}.mw-icon-social-facebook:before{content:"\f231"}.mw-icon-social-facebook-outline:before{content:"\f230"}.mw-icon-social-github:before{content:"\f233"}.mw-icon-social-github-outline:before{content:"\f232"}.mw-icon-social-google:before{content:"\f34f"}.mw-icon-social-google-outline:before{content:"\f34e"}.mw-icon-social-googleplus:before{content:"\f235"}.mw-icon-social-googleplus-outline:before{content:"\f234"}.mw-icon-social-hackernews:before{content:"\f237"}.mw-icon-social-hackernews-outline:before{content:"\f236"}.mw-icon-social-instagram:before{content:"\f351"}.mw-icon-social-linkedin:before{content:"\f239"}.mw-icon-social-linkedin-outline:before{content:"\f238"}.mw-icon-social-pinterest:before{content:"\f2b1"}.mw-icon-social-pinterest-outline:before{content:"\f2b0"}.mw-icon-social-reddit:before{content:"\f23b"}.mw-icon-social-reddit-outline:before{content:"\f23a"}.mw-icon-social-rss:before{content:"\f23d"}.mw-icon-social-rss-outline:before{content:"\f23c"}.mw-icon-social-skype:before{content:"\f23f"}.mw-icon-social-skype-outline:before{content:"\f23e"}.mw-icon-social-tumblr:before{content:"\f241"}.mw-icon-social-tumblr-outline:before{content:"\f240"}.mw-icon-social-twitter:before{content:"\f243"}.mw-icon-social-twitter-outline:before{content:"\f242"}.mw-icon-social-usd:before{content:"\f353"}.mw-icon-social-usd-outline:before{content:"\f352"}.mw-icon-social-vimeo:before{content:"\f245"}.mw-icon-social-vimeo-outline:before{content:"\f244"}.mw-icon-social-windows:before{content:"\f247"}.mw-icon-social-windows-outline:before{content:"\f246"}.mw-icon-social-wordpress:before{content:"\f249"}.mw-icon-social-wordpress-outline:before{content:"\f248"}.mw-icon-social-yahoo:before{content:"\f24b"}.mw-icon-social-youtube:before{content:"\f24d"}.mw-icon-social-youtube-outline:before{content:"\f24c"}.mw-icon-speakerphone:before{content:"\f2b2"}.mw-icon-speedometer:before{content:"\f2b3"}.mw-icon-star:before{content:"\f24e"}.mw-icon-stop:before{content:"\f24f"}.mw-icon-thermometer:before{content:"\f2b6"}.mw-icon-thumbsdown:before{content:"\f250"}.mw-icon-thumbsup:before{content:"\f251"}.mw-icon-trash-a:before{content:"\f252"}.mw-icon-trash-b:before{content:"\f253"}.mw-icon-unlocked:before{content:"\f254"}.mw-icon-upload:before{content:"\f255"}.mw-icon-usb:before{content:"\f2b8"}.mw-icon-volume-high:before{content:"\f257"}.mw-icon-volume-low:before{content:"\f258"}.mw-icon-volume-medium:before{content:"\f259"}.mw-icon-wand:before{content:"\f358"}.mw-icon-waterdrop:before{content:"\f25b"}.mw-icon-wifi:before{content:"\f25c"}.mw-icon-wineglass:before{content:"\f2b9"}.mw-icon-wrench:before{content:"\f2ba"}.mw-icon-bars:before{content:'\014a'}.mw-icon-money-outline:before{content:'\014b'}.mw-icon-wrench-outline:before{content:'\014c'}.mw-icon-customer:before{content:'\014d'}.mw-tree .mw-tree-nav-skin-default{padding:20px 0 20px 20px}.mw-tree *{vertical-align:middle}.mw-tree-nav li.skip-true{opacity:.6;pointer-events:none;cursor:no-drop}.mw-tree-nav .opened>ul{display:block}.mw-tree-nav-skin-default{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mw-tree-nav-skin-default ul{display:none}.mw-tree-nav-skin-default .mw-tree-item-content{cursor:pointer}.mw-tree-nav-skin-default .mw-tree-item-title{padding:0 42px 0 5px;border-radius:2px;display:inline-block;border:1px solid transparent;transition:all .3s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.mw-tree-nav-skin-default tree-label{width:20px}.mw-tree-nav-skin-default tree-label+.mw-tree-item-title{max-width:-webkit-calc(75%);max-width:calc(75%)}.mw-tree-nav-skin-default li{list-style:none}.mw-tree-nav-skin-default li *{vertical-align:middle}.mw-tree-nav-skin-default li.selected>.mw-tree-item-content .mw-tree-item-title{color:#0e80e5;font-weight:700}.mw-tree-nav-skin-default li.selected>.mw-tree-item-content .mw-tree-item-title:before{color:#0e80e5;font-weight:400}.mw-tree-nav-skin-default li.selected>.mw-tree-item-content .mw-tree-item-title,.mw-tree-nav-skin-default li:hover>.mw-tree-item-content .mw-tree-item-title{background:#fff;border:1px solid #EDEDED;padding-left:5px}.mw-tree-nav-skin-default li li{padding-left:30px}.mw-tree-nav-skin-default li li,.mw-tree-nav-skin-default li ul{position:relative}.mw-tree-nav-skin-default li ul li:after{position:absolute;top:0;left:7px;bottom:0;width:1px;content:'';background:#ccc}.mw-tree-nav-skin-default li ul li:last-child:after{bottom:auto;height:19px}.mw-tree-nav-skin-default li ul li:before{position:absolute;top:17px;left:8px;width:20px;height:1px;content:'';background:#ccc}.mw-tree-nav-skin-default .mw-tree-toggler{display:inline-block;width:14px;border-radius:30px;color:#929292;font-weight:700;border:none;cursor:pointer;outline:0;text-align:center;padding:0;line-height:14px;margin-right:7px;font-size:16px;font-family:Microweber}.mw-tree-nav-skin-default .mw-tree-toggler:after{content:'\f10a';transition:.3s;position:relative;display:inline-block}.mw-tree-nav-skin-default .mw-tree-toggler.opened:after{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.mw-tree-nav-skin-default .mw-tree-context-menu-item{font-size:17px;display:inline-block;visibility:hidden;position:relative;height:21px;width:21px;line-height:17px;text-align:center;border:1px solid transparent;color:#3B3B3B;opacity:.5;cursor:pointer;border-radius:2px}.mw-tree-nav-skin-default .mw-tree-item-content:hover .mw-tree-context-menu-item{visibility:visible}.mw-tree-nav-skin-default .mw-tree-context-menu-item:hover{opacity:1;color:#fff;background:#212121}.mw-tree-nav-skin-default .mw-tree-item-content{color:#212121;padding:0;display:inline-block;position:relative;border-top:1px solid transparent;border-bottom:1px solid transparent;outline:0;background-repeat:no-repeat;line-height:27px;width:100%}.mw-tree-nav-skin-default .has-children>.mw-tree-item-content{width:-webkit-calc(100% - 21px);width:calc(100% - 21px)}.mw-tree-nav-skin-default .mw-tree-context-menu{display:inline-block;position:absolute;top:1px;right:5px}.mw-tree-nav-skin-default .mw-tree-item-title [class*=mai-],.mw-tree-nav-skin-default .mw-tree-item-title [class*=mw-icon-],.mw-tree-nav-skin-default .mw-tree-item-title:before{color:#999;font-size:19px;display:inline-block;position:relative;top:3px;margin-right:3px}.mw-tree-nav-skin-default .mw-tree-item-title:before{font-family:Microweber}.mw-tree-nav-skin-default li.type-category>.mw-tree-item-content .mw-tree-item-title:before{content:'c';text-shadow:0 0 1px #000}.mw-tree-nav-skin-default li.type-page>.mw-tree-item-content .mw-tree-item-title:before{content:'q'}.mw-tree-nav-skin-default li.type-page.subtype-home>.mw-tree-item-content .mw-tree-item-title:before{content:"\0070";font-family:admin}.mw-tree-nav-skin-default li.type-page.subtype-shop>.mw-tree-item-content .mw-tree-item-title:before{content:'\0053';font-family:admin}.mw-tree-nav-skin-default li.type-page.subtype-dynamic>.mw-tree-item-content .mw-tree-item-title:before{content:'B';font-family:inherit;font-size:20px;top:3px;color:#2b2b2b;font-weight:400;z-index:1}.mw-tree-nav-skin-default .mw-tree-item-hidden{display:none}html[dir=rtl] .mw-tree-nav-skin-default{padding-right:20px;padding-left:0}html[dir=rtl] .mw-tree-nav-skin-default .mw-tree-toggler{margin-right:0;margin-left:7px}html[dir=rtl] .mw-tree-nav-skin-default .mw-tree-toggler:not(.opened){transform:rotate(180deg)}html[dir=rtl] .mw-tree-nav-skin-default .mw-tree-item-title{padding-left:42px;padding-right:5px}html[dir=rtl] .mw-tree-nav-skin-default .mw-tree-item-title [class*=mai-],html[dir=rtl] .mw-tree-nav-skin-default .mw-tree-item-title [class*=mw-icon-],html[dir=rtl] .mw-tree-nav-skin-default .mw-tree-item-title:before{margin-left:3px;margin-right:0}html[dir=rtl] .mw-tree-nav-skin-default li:before{left:auto;right:8px}html[dir=rtl] .mw-tree-nav-skin-default li:after{left:auto;right:7px;bottom:0}html[dir=rtl] .mw-tree-nav-skin-default li li{padding-right:30px;padding-left:0}html[dir=rtl] .mw-tree-nav-skin-default .mw-tree-context-menu{right:auto;left:5px}.mw-ui-box{border:1px solid #e5e5e5;border-radius:2px;clear:both;background-color:#fff;box-shadow:0 .126rem .26rem rgba(0,0,0,.066)!important}.mw-ui-box,.mw-ui-box-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mw-ui-box-header{background:#fafafa;overflow:hidden;padding:10px;border-bottom:1px solid #e5e5e5;border-top-left-radius:2px;border-top-right-radius:2px}.mw-ui-box-header a{text-decoration:none}.mw-ui-box-header>[class*=mw-icon-]{font-size:20px;line-height:20px;float:left;margin-right:12px}.mw-ui-box-header h2{padding:0}.mw-ui-box-content.mw-accordion-content{overflow:auto}.mw-ui-box-content{padding:12px;position:relative}.mw-ui-box-content:after,.mw-ui-box:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0;font-size:0}.mw-ui-box-invert{background-color:#2b2b2b;color:#fff;border-color:transparent}.mw-ui-box-info{background-color:#009cff;color:#fff;border-color:transparent}.mw-ui-box-warn{background-color:#fa8e36;color:#fff;border-color:transparent}.mw-ui-box-important{background-color:#f12b1c;color:#fff;border-color:transparent}.mw-ui-box-notification{background-color:#469a36;color:#fff;border-color:transparent}.mw-ui-box-invert>.mw-ui-box-header{background-color:#454545;color:#fff}.mw-ui-box-info>.mw-ui-box-header{background-color:#33b0ff;color:#fff}.mw-ui-box-warn>.mw-ui-box-header{background-color:#fbaa68;color:#fff}.mw-ui-box-important>.mw-ui-box-header{background-color:#f4584c;color:#fff}.mw-ui-box-notification>.mw-ui-box-header{background-color:#58be45;color:#fff}.mw-ui-box-accordion-content{overflow:hidden;background:#fafafa}.mw-accordion-active>.mw-ui-box-content,.mw-ui-box-accordion>.mw-ui-box-content{display:none}.mw-flex-row{box-sizing:border-box;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-.5rem;margin-left:-.5rem;clear:both}.mw-flex-row.reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.mw-flex-col.reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.mw-flex-col-xs,.mw-flex-col-xs-1,.mw-flex-col-xs-10,.mw-flex-col-xs-11,.mw-flex-col-xs-12,.mw-flex-col-xs-2,.mw-flex-col-xs-3,.mw-flex-col-xs-4,.mw-flex-col-xs-5,.mw-flex-col-xs-6,.mw-flex-col-xs-7,.mw-flex-col-xs-8,.mw-flex-col-xs-9,.mw-flex-col-xs-offset-0,.mw-flex-col-xs-offset-1,.mw-flex-col-xs-offset-10,.mw-flex-col-xs-offset-11,.mw-flex-col-xs-offset-12,.mw-flex-col-xs-offset-2,.mw-flex-col-xs-offset-3,.mw-flex-col-xs-offset-4,.mw-flex-col-xs-offset-5,.mw-flex-col-xs-offset-6,.mw-flex-col-xs-offset-7,.mw-flex-col-xs-offset-8,.mw-flex-col-xs-offset-9{box-sizing:border-box;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:.5rem;padding-left:.5rem}.mw-flex-col-xs{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.mw-flex-col-xs-1{-ms-flex-preferred-size:8.33333333%;flex-basis:8.33333333%;max-width:8.33333333%}.mw-flex-col-xs-2{-ms-flex-preferred-size:16.66666667%;flex-basis:16.66666667%;max-width:16.66666667%}.mw-flex-col-xs-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.mw-flex-col-xs-4{-ms-flex-preferred-size:33.33333333%;flex-basis:33.33333333%;max-width:33.33333333%}.mw-flex-col-xs-5{-ms-flex-preferred-size:41.66666667%;flex-basis:41.66666667%;max-width:41.66666667%}.mw-flex-col-xs-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.mw-flex-col-xs-7{-ms-flex-preferred-size:58.33333333%;flex-basis:58.33333333%;max-width:58.33333333%}.mw-flex-col-xs-8{-ms-flex-preferred-size:66.66666667%;flex-basis:66.66666667%;max-width:66.66666667%}.mw-flex-col-xs-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.mw-flex-col-xs-10{-ms-flex-preferred-size:83.33333333%;flex-basis:83.33333333%;max-width:83.33333333%}.mw-flex-col-xs-11{-ms-flex-preferred-size:91.66666667%;flex-basis:91.66666667%;max-width:91.66666667%}.mw-flex-col-xs-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.mw-flex-col-xs-offset-0{margin-left:0}.mw-flex-col-xs-offset-1{margin-left:8.33333333%}.mw-flex-col-xs-offset-2{margin-left:16.66666667%}.mw-flex-col-xs-offset-3{margin-left:25%}.mw-flex-col-xs-offset-4{margin-left:33.33333333%}.mw-flex-col-xs-offset-5{margin-left:41.66666667%}.mw-flex-col-xs-offset-6{margin-left:50%}.mw-flex-col-xs-offset-7{margin-left:58.33333333%}.mw-flex-col-xs-offset-8{margin-left:66.66666667%}.mw-flex-col-xs-offset-9{margin-left:75%}.mw-flex-col-xs-offset-10{margin-left:83.33333333%}.mw-flex-col-xs-offset-11{margin-left:91.66666667%}.mw-flex-start-xs{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:start}.mw-flex-center-xs{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.mw-flex-end-xs{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:end}.mw-flex-top-xs{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mw-flex-middle-xs{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mw-flex-bottom-xs{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.mw-flex-around-xs{-ms-flex-pack:distribute;justify-content:space-around}.mw-flex-between-xs{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mw-flex-first-xs{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.mw-flex-last-xs{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}@media only screen and (min-width:48em){.mw-flex-col-sm,.mw-flex-col-sm-1,.mw-flex-col-sm-10,.mw-flex-col-sm-11,.mw-flex-col-sm-12,.mw-flex-col-sm-2,.mw-flex-col-sm-3,.mw-flex-col-sm-4,.mw-flex-col-sm-5,.mw-flex-col-sm-6,.mw-flex-col-sm-7,.mw-flex-col-sm-8,.mw-flex-col-sm-9,.mw-flex-col-sm-offset-0,.mw-flex-col-sm-offset-1,.mw-flex-col-sm-offset-10,.mw-flex-col-sm-offset-11,.mw-flex-col-sm-offset-12,.mw-flex-col-sm-offset-2,.mw-flex-col-sm-offset-3,.mw-flex-col-sm-offset-4,.mw-flex-col-sm-offset-5,.mw-flex-col-sm-offset-6,.mw-flex-col-sm-offset-7,.mw-flex-col-sm-offset-8,.mw-flex-col-sm-offset-9{box-sizing:border-box;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:.5rem;padding-left:.5rem}.mw-flex-col-sm{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.mw-flex-col-sm-1{-ms-flex-preferred-size:8.33333333%;flex-basis:8.33333333%;max-width:8.33333333%}.mw-flex-col-sm-2{-ms-flex-preferred-size:16.66666667%;flex-basis:16.66666667%;max-width:16.66666667%}.mw-flex-col-sm-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.mw-flex-col-sm-4{-ms-flex-preferred-size:33.33333333%;flex-basis:33.33333333%;max-width:33.33333333%}.mw-flex-col-sm-5{-ms-flex-preferred-size:41.66666667%;flex-basis:41.66666667%;max-width:41.66666667%}.mw-flex-col-sm-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.mw-flex-col-sm-7{-ms-flex-preferred-size:58.33333333%;flex-basis:58.33333333%;max-width:58.33333333%}.mw-flex-col-sm-8{-ms-flex-preferred-size:66.66666667%;flex-basis:66.66666667%;max-width:66.66666667%}.mw-flex-col-sm-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.mw-flex-col-sm-10{-ms-flex-preferred-size:83.33333333%;flex-basis:83.33333333%;max-width:83.33333333%}.mw-flex-col-sm-11{-ms-flex-preferred-size:91.66666667%;flex-basis:91.66666667%;max-width:91.66666667%}.mw-flex-col-sm-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.mw-flex-col-sm-offset-0{margin-left:0}.mw-flex-col-sm-offset-1{margin-left:8.33333333%}.mw-flex-col-sm-offset-2{margin-left:16.66666667%}.mw-flex-col-sm-offset-3{margin-left:25%}.mw-flex-col-sm-offset-4{margin-left:33.33333333%}.mw-flex-col-sm-offset-5{margin-left:41.66666667%}.mw-flex-col-sm-offset-6{margin-left:50%}.mw-flex-col-sm-offset-7{margin-left:58.33333333%}.mw-flex-col-sm-offset-8{margin-left:66.66666667%}.mw-flex-col-sm-offset-9{margin-left:75%}.mw-flex-col-sm-offset-10{margin-left:83.33333333%}.mw-flex-col-sm-offset-11{margin-left:91.66666667%}.mw-flex-start-sm{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:start}.mw-flex-center-sm{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.mw-flex-end-sm{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:end}.mw-flex-top-sm{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mw-flex-middle-sm{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mw-flex-bottom-sm{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.mw-flex-around-sm{-ms-flex-pack:distribute;justify-content:space-around}.mw-flex-between-sm{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mw-flex-first-sm{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.mw-flex-last-sm{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}@media only screen and (min-width:64em){.mw-flex-col-md,.mw-flex-col-md-1,.mw-flex-col-md-10,.mw-flex-col-md-11,.mw-flex-col-md-12,.mw-flex-col-md-2,.mw-flex-col-md-3,.mw-flex-col-md-4,.mw-flex-col-md-5,.mw-flex-col-md-6,.mw-flex-col-md-7,.mw-flex-col-md-8,.mw-flex-col-md-9,.mw-flex-col-md-offset-0,.mw-flex-col-md-offset-1,.mw-flex-col-md-offset-10,.mw-flex-col-md-offset-11,.mw-flex-col-md-offset-12,.mw-flex-col-md-offset-2,.mw-flex-col-md-offset-3,.mw-flex-col-md-offset-4,.mw-flex-col-md-offset-5,.mw-flex-col-md-offset-6,.mw-flex-col-md-offset-7,.mw-flex-col-md-offset-8,.mw-flex-col-md-offset-9{box-sizing:border-box;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:.5rem;padding-left:.5rem}.mw-flex-col-md{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.mw-flex-col-md-1{-ms-flex-preferred-size:8.33333333%;flex-basis:8.33333333%;max-width:8.33333333%}.mw-flex-col-md-2{-ms-flex-preferred-size:16.66666667%;flex-basis:16.66666667%;max-width:16.66666667%}.mw-flex-col-md-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.mw-flex-col-md-4{-ms-flex-preferred-size:33.33333333%;flex-basis:33.33333333%;max-width:33.33333333%}.mw-flex-col-md-5{-ms-flex-preferred-size:41.66666667%;flex-basis:41.66666667%;max-width:41.66666667%}.mw-flex-col-md-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.mw-flex-col-md-7{-ms-flex-preferred-size:58.33333333%;flex-basis:58.33333333%;max-width:58.33333333%}.mw-flex-col-md-8{-ms-flex-preferred-size:66.66666667%;flex-basis:66.66666667%;max-width:66.66666667%}.mw-flex-col-md-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.mw-flex-col-md-10{-ms-flex-preferred-size:83.33333333%;flex-basis:83.33333333%;max-width:83.33333333%}.mw-flex-col-md-11{-ms-flex-preferred-size:91.66666667%;flex-basis:91.66666667%;max-width:91.66666667%}.mw-flex-col-md-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.mw-flex-col-md-offset-0{margin-left:0}.mw-flex-col-md-offset-1{margin-left:8.33333333%}.mw-flex-col-md-offset-2{margin-left:16.66666667%}.mw-flex-col-md-offset-3{margin-left:25%}.mw-flex-col-md-offset-4{margin-left:33.33333333%}.mw-flex-col-md-offset-5{margin-left:41.66666667%}.mw-flex-col-md-offset-6{margin-left:50%}.mw-flex-col-md-offset-7{margin-left:58.33333333%}.mw-flex-col-md-offset-8{margin-left:66.66666667%}.mw-flex-col-md-offset-9{margin-left:75%}.mw-flex-col-md-offset-10{margin-left:83.33333333%}.mw-flex-col-md-offset-11{margin-left:91.66666667%}.mw-flex-start-md{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:start}.mw-flex-center-md{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.mw-flex-end-md{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:end}.mw-flex-top-md{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mw-flex-middle-md{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mw-flex-bottom-md{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.mw-flex-around-md{-ms-flex-pack:distribute;justify-content:space-around}.mw-flex-between-md{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mw-flex-first-md{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.mw-flex-last-md{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}@media only screen and (min-width:75em){.mw-flex-col-lg,.mw-flex-col-lg-1,.mw-flex-col-lg-10,.mw-flex-col-lg-11,.mw-flex-col-lg-12,.mw-flex-col-lg-2,.mw-flex-col-lg-3,.mw-flex-col-lg-4,.mw-flex-col-lg-5,.mw-flex-col-lg-6,.mw-flex-col-lg-7,.mw-flex-col-lg-8,.mw-flex-col-lg-9,.mw-flex-col-lg-offset-0,.mw-flex-col-lg-offset-1,.mw-flex-col-lg-offset-10,.mw-flex-col-lg-offset-11,.mw-flex-col-lg-offset-12,.mw-flex-col-lg-offset-2,.mw-flex-col-lg-offset-3,.mw-flex-col-lg-offset-4,.mw-flex-col-lg-offset-5,.mw-flex-col-lg-offset-6,.mw-flex-col-lg-offset-7,.mw-flex-col-lg-offset-8,.mw-flex-col-lg-offset-9{box-sizing:border-box;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:.5rem;padding-left:.5rem}.mw-flex-col-lg{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;max-width:100%}.mw-flex-col-lg-1{-ms-flex-preferred-size:8.33333333%;flex-basis:8.33333333%;max-width:8.33333333%}.mw-flex-col-lg-2{-ms-flex-preferred-size:16.66666667%;flex-basis:16.66666667%;max-width:16.66666667%}.mw-flex-col-lg-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.mw-flex-col-lg-4{-ms-flex-preferred-size:33.33333333%;flex-basis:33.33333333%;max-width:33.33333333%}.mw-flex-col-lg-5{-ms-flex-preferred-size:41.66666667%;flex-basis:41.66666667%;max-width:41.66666667%}.mw-flex-col-lg-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.mw-flex-col-lg-7{-ms-flex-preferred-size:58.33333333%;flex-basis:58.33333333%;max-width:58.33333333%}.mw-flex-col-lg-8{-ms-flex-preferred-size:66.66666667%;flex-basis:66.66666667%;max-width:66.66666667%}.mw-flex-col-lg-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.mw-flex-col-lg-10{-ms-flex-preferred-size:83.33333333%;flex-basis:83.33333333%;max-width:83.33333333%}.mw-flex-col-lg-11{-ms-flex-preferred-size:91.66666667%;flex-basis:91.66666667%;max-width:91.66666667%}.mw-flex-col-lg-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.mw-flex-col-lg-offset-0{margin-left:0}.mw-flex-col-lg-offset-1{margin-left:8.33333333%}.mw-flex-col-lg-offset-2{margin-left:16.66666667%}.mw-flex-col-lg-offset-3{margin-left:25%}.mw-flex-col-lg-offset-4{margin-left:33.33333333%}.mw-flex-col-lg-offset-5{margin-left:41.66666667%}.mw-flex-col-lg-offset-6{margin-left:50%}.mw-flex-col-lg-offset-7{margin-left:58.33333333%}.mw-flex-col-lg-offset-8{margin-left:66.66666667%}.mw-flex-col-lg-offset-9{margin-left:75%}.mw-flex-col-lg-offset-10{margin-left:83.33333333%}.mw-flex-col-lg-offset-11{margin-left:91.66666667%}.mw-flex-start-lg{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:start}.mw-flex-center-lg{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.mw-flex-end-lg{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:end}.mw-flex-top-lg{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mw-flex-middle-lg{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mw-flex-bottom-lg{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.mw-flex-around-lg{-ms-flex-pack:distribute;justify-content:space-around}.mw-flex-between-lg{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mw-flex-first-lg{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.mw-flex-last-lg{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}.mw-ui-label{display:block;padding-bottom:3px}.mw-ui-inline-label,.mw-ui-label{font-weight:700}.mw-ui-inline-label small,.mw-ui-label small{font-weight:400;font-size:80%}.mw-ui-inline-label{display:inline-block;padding:8px;margin-right:8px;height:36px}.mw-ui-invisible-field{background:0 0;border-color:transparent;border-width:1px;border-style:solid;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:8px 0;position:relative;outline:0}select.mw-ui-invisible-field{opacity:0}.mw-ui-field .mw-ui-invisible-field{padding:3px 0}.mw-ui-invisible-field,.mw-ui-invisible-field[class*=mw-ui-field]{padding-left:0;padding-right:0}.mw-ui-field{border:1px solid #cfcfcf;padding:8px;max-width:100%;border-radius:2px;background-color:#fff;outline:0;cursor:text;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;box-shadow:inset 0 0 3px rgba(0,0,0,.2);transition:border-color .3s,box-shadow,.3s}div.mw-ui-field,span.mw-ui-field{display:inline-block}select.mw-ui-field{-webkit-appearance:menulist;padding-top:0;padding-bottom:0}.mw-ui-field-medium{padding:6px}.mw-ui-field-big{padding:9px;font-size:140%}.mw-ui-field-small{padding:2px;font-size:80%}input.mw-ui-field,select.mw-ui-field{height:2.923rem}input.mw-ui-field-medium,select.mw-ui-field-medium{height:2.308rem}input.mw-ui-field-big,select.mw-ui-field-big{height:3.385rem}input.mw-ui-field-small,select.mw-ui-field-small{height:1.538rem}select.mw-ui-field{cursor:default}.mw-ui-field.form-control{height:auto}.mw-ui-field optgroup,.mw-ui-field option{padding:4px 8px}.mw-ui-field optgroup option{padding:4px 16px}.mw-ui-field:focus,.mw-ui-field:hover{border-color:#0086db;box-shadow:0 0 3px rgba(0,134,219,.4)}.mw-ui-field:focus{box-shadow:inset 0 0 3px rgba(0,134,219,.4);-webkit-box-shadow:inset 0 0 3px rgba(0,134,219,.4)}input.mw-ui-field{-webkit-appearance:textfield;appearance:textfield}div.mw-ui-field{display:inline-block}div.mw-ui-field:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.mw-ui-field-holder{padding:10px 0;position:relative;clear:both}.mw-ui-field-holder:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.mw-ui-searchfield{background:url(../images/magnifier.svg) left center no-repeat #fff!important;width:1px;border:1px solid #E6E6E6;border-radius:3px;box-sizing:border-box;cursor:text;outline:0;padding:8px;padding-left:33px!important;opacity:.5;height:36px;-webkit-transition:width .1s,opacity .2s;-moz-transition:width .1s,opacity .2s;-o-transition:width .1s,opacity .2s;transition:width .1s,opacity .2s}.mw-ui-searchfield::-webkit-input-placeholder{color:transparent}.mw-ui-searchfield:-moz-placeholder{color:transparent}.mw-ui-searchfield::-moz-placeholder{color:transparent}.mw-ui-searchfield:-ms-input-placeholder{color:transparent}.mw-ui-searchfield:focus::-webkit-input-placeholder{color:inherit}.mw-ui-searchfield:focus:-moz-placeholder{color:inherit}.mw-ui-searchfield:focus::-moz-placeholder{color:inherit}.mw-ui-searchfield:focus:-ms-input-placeholder{color:inherit}.mw-ui-searchfield:hover::-webkit-input-placeholder{color:inherit}.mw-ui-searchfield:hover:-moz-placeholder{color:inherit}.mw-ui-searchfield:hover::-moz-placeholder{color:inherit}.mw-ui-searchfield:hover:-ms-input-placeholder{color:inherit}.mw-ui-searchfield.active::-webkit-input-placeholder{color:inherit}.mw-ui-searchfield.active:-moz-placeholder{color:inherit}.mw-ui-searchfield.active::-moz-placeholder{color:inherit}.mw-ui-searchfield.active:-ms-input-placeholder{color:inherit}.mw-ui-searchfield.active,.mw-ui-searchfield:focus,.mw-ui-searchfield:focus:hover{border-color:#c6c6c6;width:200px;opacity:1}.mw-ui-searchfield:hover{border-color:#E6E6E6;width:200px;opacity:1}.mw-ui-check,.mw-ui-check>*,.mw-ui-check>:before{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}.mw-ui-check{cursor:pointer;vertical-align:middle;display:inline-block}.mw-ui-check:hover input+span{box-shadow:0 1px 3px #ccebff}.mw-ui-check input:checked+span{box-shadow:0 1px 3px #ccebff}.mw-ui-check input{position:absolute;opacity:0}.mw-ui-check input+span{display:inline-block;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;line-height:normal;text-align:center;vertical-align:middle;margin-right:8px;font-weight:400;width:17px;height:17px;transition:all .3s;border:1px solid #cfcfcf;background-color:#fff}.mw-ui-check input+span:after{position:absolute;transition:all .3s;visibility:hidden;opacity:0;transform:scale(.3);content:''}.mw-ui-check input:checked+span{border-color:#009cff}.mw-ui-check input:checked+span:after{visibility:visible;opacity:1;transform:scale(1)}.mw-ui-check input[type=radio]+span:first-of-type{border-radius:30px}.mw-ui-check input[type=radio]+span:first-of-type:after{background-color:#009cff;top:20%;left:20%;width:60%;height:60%;border-radius:30px}.mw-ui-check input[type=checkbox]+span{border-radius:2px}.mw-ui-check input[type=checkbox]+span:after{display:inline-block;font-family:Microweber;text-transform:none;top:10%;left:10%;width:80%;height:80%;line-height:100%;content:"\0101";color:#009cff;text-align:center}.mw-disabled,.mw-ui-field:disabled,.mw-ui-field[disabled]{opacity:.6;cursor:not-allowed;-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;-khtml-user-select:none;user-select:none}.mw-ui-field-icon{display:inline-block;text-align:center;font-size:30px;height:2.923rem;width:2.923rem;border:1px solid #cfcfcf;border-radius:2px 0 0 2px;vertical-align:top;line-height:-webkit-calc(2.923rem - 4px);line-height:calc(2.923rem - 4px)}.mw-ui-field-icon .fa,.mw-ui-field-icon .ico,.mw-ui-field-icon .material-icons,.mw-ui-field-icon [class*=icon-]{line-height:-webkit-calc(2.923rem - 4px);line-height:calc(2.923rem - 4px)}.mw-ui-field-icon+input{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0;max-width:-webkit-calc(64%);max-width:calc(64%)}.range-slider input[type=range]{-webkit-appearance:none;margin:10px 0;width:100%}.range-slider input[type=range]:focus{outline:0}.range-slider input[type=range]::-webkit-slider-runnable-track{width:100%;height:3px;cursor:pointer;transition:.2s;box-shadow:0 0 0 #000,0 0 0 #0d0d0d;background:#009cff;border-radius:0;border:0 solid #000101}.range-slider input[type=range]::-webkit-slider-thumb{border:1px solid #e1e1e1;height:20px;width:20px;border-radius:20px;background:#fff;cursor:pointer;-webkit-appearance:none;margin-top:-10px}.range-slider input[type=range]:focus::-webkit-slider-runnable-track{background:#009cff}.range-slider input[type=range]::-moz-range-track{width:100%;height:12.8px;cursor:pointer;transition:.2s;box-shadow:0 0 0 #000,0 0 0 #0d0d0d;background:#009cff;border-radius:25px;border:0 solid #000101}.range-slider input[type=range]::-moz-range-thumb{box-shadow:0 0 0 #000,0 0 0 #0d0d0d;border:0 solid #000;height:20px;width:39px;border-radius:7px;background:#65001c;cursor:pointer}.range-slider input[type=range]::-ms-track{width:100%;height:12.8px;cursor:pointer;transition:.2s;background:0 0;border-color:transparent;border-width:39px 0;color:transparent}.range-slider input[type=range]::-ms-fill-lower{background:#009cff;border:0 solid #000101;border-radius:50px;box-shadow:0 0 0 #000,0 0 0 #0d0d0d}.range-slider input[type=range]::-ms-fill-upper{background:#009cff;border:0 solid #000101;border-radius:50px;box-shadow:0 0 0 #000,0 0 0 #0d0d0d}.range-slider input[type=range]::-ms-thumb{box-shadow:0 0 0 #000,0 0 0 #0d0d0d;border:0 solid #000;height:20px;width:39px;border-radius:7px;background:#65001c;cursor:pointer}.range-slider input[type=range]:focus::-ms-fill-lower{background:#009cff}.range-slider input[type=range]:focus::-ms-fill-upper{background:#009cff}.mw-ui-field-group-check *{vertical-align:bottom}.mw-ui-field-group-check>*+*{margin-left:12px}.mw-ui-field-group-check .mw-ui-field-holder{display:inline-block;padding:0}.mw-ui-field-group-check .mw-ui-check{transform:translateY(50%);position:relative;bottom:1.4615rem}.mw-ui-field-group-check.mw-ui-field-group-check-medium .mw-ui-check{bottom:1.154rem}.mw-ui-field-group-check.mw-ui-field-group-check-small .mw-ui-check{bottom:.769rem}.mw-ui-field-group-check.mw-ui-field-group-check-big .mw-ui-check{bottom:1.6925rem}.mw-ui-field-append,.mw-ui-field-prepend{display:inline-block;background-color:#e1e1e1;padding:0 12px}.mw-field,mw-field{display:inline-flex;position:relative;vertical-align:top}.mw-field input,.mw-field select,.mw-field textarea,mw-field input,mw-field select,mw-field textarea{border:1px solid #cfcfcf;padding:0 8px;width:100%;max-width:100%;border-radius:2px;background-color:#fff;outline:0;cursor:text;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;box-shadow:inset 0 0 3px rgba(0,0,0,.2);transition:border-color .3s,box-shadow,.3s;order:2}.mw-field input:focus,.mw-field input:hover,.mw-field select:focus,.mw-field select:hover,.mw-field textarea:focus,.mw-field textarea:hover,mw-field input:focus,mw-field input:hover,mw-field select:focus,mw-field select:hover,mw-field textarea:focus,mw-field textarea:hover{border-color:#0086db;box-shadow:0 0 3px rgba(0,134,219,.4)}.mw-field input:focus,.mw-field select:focus,.mw-field textarea:focus,mw-field input:focus,mw-field select:focus,mw-field textarea:focus{box-shadow:inset 0 0 3px rgba(0,134,219,.4);-webkit-box-shadow:inset 0 0 3px rgba(0,134,219,.4)}.mw-field .mw-field-append,.mw-field .mw-field-prepend,.mw-field[data-after]:after,.mw-field[data-before]:before,mw-field .mw-field-append,mw-field .mw-field-prepend,mw-field[data-after]:after,mw-field[data-before]:before{display:block;white-space:nowrap}.mw-field [class=mw-field-append],.mw-field [class=mw-field-prepend],.mw-field[data-after]:after,.mw-field[data-before]:before,mw-field [class=mw-field-append],mw-field [class=mw-field-prepend],mw-field[data-after]:after,mw-field[data-before]:before{border:1px solid #cfcfcf;box-shadow:inset 1px 1px 4px 0 rgba(0,0,0,.1);background-color:#e1e1e1;padding:0 12px}.mw-field[data-before]:before,mw-field[data-before]:before{content:attr(data-before)}.mw-field[data-after]:after,mw-field[data-after]:after{content:attr(data-after)}.mw-field[data-before] input,.mw-field[data-before] select,.mw-field[data-before] textarea,mw-field[data-before] input,mw-field[data-before] select,mw-field[data-before] textarea{border-top-left-radius:0;border-bottom-left-radius:0}.mw-field[data-after] input,.mw-field[data-after] select,.mw-field[data-after] textarea,mw-field[data-after] input,mw-field[data-after] select,mw-field[data-after] textarea{border-top-right-radius:0;border-bottom-right-radius:0}.mw-field .mw-field-append,.mw-field[data-after]:after,mw-field .mw-field-append,mw-field[data-after]:after{order:5;border-radius:0 2px 2px 0;border-left:none}.mw-field .mw-field-prepend,.mw-field[data-before]:before,mw-field .mw-field-prepend,mw-field[data-before]:before{order:1;border-radius:2px 0 0 2px;border-right:none}.mw-field .mw-field-append,.mw-field .mw-field-prepend,.mw-field input,.mw-field select,.mw-field[data-after]:after,.mw-field[data-before]:before,mw-field .mw-field-append,mw-field .mw-field-prepend,mw-field input,mw-field select,mw-field[data-after]:after,mw-field[data-before]:before{height:2.923rem;line-height:2.923rem}.mw-field select,mw-field select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-position:calc(100% - 10px) 50%;background-repeat:no-repeat;background-size:8px auto;padding-right:25px;cursor:default;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 284.929 284.929' style='enable-background:new 0 0 284.929 284.929;' %3E%3Cpath fill='%23777' d='M282.082,76.511l-14.274-14.273c-1.902-1.906-4.093-2.856-6.57-2.856c-2.471,0-4.661,0.95-6.563,2.856L142.466,174.441 L30.262,62.241c-1.903-1.906-4.093-2.856-6.567-2.856c-2.475,0-4.665,0.95-6.567,2.856L2.856,76.515C0.95,78.417,0,80.607,0,83.082 c0,2.473,0.953,4.663,2.856,6.565l133.043,133.046c1.902,1.903,4.093,2.854,6.567,2.854s4.661-0.951,6.562-2.854L282.082,89.647 c1.902-1.903,2.847-4.093,2.847-6.565C284.929,80.607,283.984,78.417,282.082,76.511z'/%3E%3C/svg%3E%0A")}.mw-field select::-ms-expand,mw-field select::-ms-expand{display:none}.mw-field[data-size=medium] .mw-field-append,.mw-field[data-size=medium] .mw-field-prepend,.mw-field[data-size=medium] input,.mw-field[data-size=medium] select,.mw-field[data-size=medium][data-after]:after,.mw-field[data-size=medium][data-before]:before,.mw-field[size=medium] .mw-field-append,.mw-field[size=medium] .mw-field-prepend,.mw-field[size=medium] input,.mw-field[size=medium] select,.mw-field[size=medium][data-after]:after,.mw-field[size=medium][data-before]:before,mw-field[data-size=medium] .mw-field-append,mw-field[data-size=medium] .mw-field-prepend,mw-field[data-size=medium] input,mw-field[data-size=medium] select,mw-field[data-size=medium][data-after]:after,mw-field[data-size=medium][data-before]:before,mw-field[size=medium] .mw-field-append,mw-field[size=medium] .mw-field-prepend,mw-field[size=medium] input,mw-field[size=medium] select,mw-field[size=medium][data-after]:after,mw-field[size=medium][data-before]:before{line-height:2.308rem;height:2.308rem}.mw-field[data-size=small] .mw-field-append,.mw-field[data-size=small] .mw-field-prepend,.mw-field[data-size=small] input,.mw-field[data-size=small] select,.mw-field[data-size=small][data-after]:after,.mw-field[data-size=small][data-before]:before,.mw-field[size=small] .mw-field-append,.mw-field[size=small] .mw-field-prepend,.mw-field[size=small] input,.mw-field[size=small] select,.mw-field[size=small][data-after]:after,.mw-field[size=small][data-before]:before,mw-field[data-size=small] .mw-field-append,mw-field[data-size=small] .mw-field-prepend,mw-field[data-size=small] input,mw-field[data-size=small] select,mw-field[data-size=small][data-after]:after,mw-field[data-size=small][data-before]:before,mw-field[size=small] .mw-field-append,mw-field[size=small] .mw-field-prepend,mw-field[size=small] input,mw-field[size=small] select,mw-field[size=small][data-after]:after,mw-field[size=small][data-before]:before{height:1.538rem;line-height:1.538rem}.mw-field[data-size=large] .mw-field-append,.mw-field[data-size=large] .mw-field-prepend,.mw-field[data-size=large] input,.mw-field[data-size=large] select,.mw-field[data-size=large][data-after]:after,.mw-field[data-size=large][data-before]:before,.mw-field[size=large] .mw-field-append,.mw-field[size=large] .mw-field-prepend,.mw-field[size=large] input,.mw-field[size=large] select,.mw-field[size=large][data-after]:after,.mw-field[size=large][data-before]:before,mw-field[data-size=large] .mw-field-append,mw-field[data-size=large] .mw-field-prepend,mw-field[data-size=large] input,mw-field[data-size=large] select,mw-field[data-size=large][data-after]:after,mw-field[data-size=large][data-before]:before,mw-field[size=large] .mw-field-append,mw-field[size=large] .mw-field-prepend,mw-field[size=large] input,mw-field[size=large] select,mw-field[size=large][data-after]:after,mw-field[size=large][data-before]:before{height:3.385rem;line-height:3.385rem}.mw-ui-link{text-decoration:none;color:#009cff;position:relative;display:inline-block;cursor:pointer}.mw-ui-link-nav>:after{display:inline;position:absolute;top:0;left:100%;color:#009cff;font-size:80%;content:"/";margin:3px 5px;text-decoration:none!important;pointer-events:none}.mw-ui-link-nav>:last-child:after{display:none}.mw-ui-link-nav>*{position:relative;margin-right:11px;text-decoration:none;cursor:pointer}.mw-ui-link:focus,.mw-ui-link:hover{text-decoration:underline}.mw-ui-link:active{opacity:.8}.mw-ui-btn{display:inline-flex;align-items:center;justify-content:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 1.308rem;cursor:pointer;text-align:center;position:relative;text-decoration:none;font-size:1.154rem;height:2.923rem;border-radius:2px;color:#686868;background-color:#f5f5f5;border:1px solid #cfcfcf;outline:0;transition:.3s;white-space:nowrap;vertical-align:middle}.mw-ui-link{border:0!important;background:0 0}input.mw-ui-btn{-webkit-appearance:none}.mw-ui-btn-hover{border-color:transparent;background-color:transparent}.mw-ui-btn-invert{color:#fff;background-color:#2b2b2b;border-color:#2b2b2b}.mw-ui-btn-outline.mw-ui-btn-invert{color:#2b2b2b}.mw-ui-btn .material-icons{vertical-align:top;line-height:inherit}.mw-ui-btn-important,.mw-ui-btn.active-important{color:#fff;background-color:#f12b1c;border-color:#f12b1c}.mw-ui-btn-outline.mw-ui-btn-important{color:#f12b1c}.mw-ui-btn-info,.mw-ui-btn.active-info{color:#fff;background-color:#009cff;border-color:#009cff}.mw-ui-btn-outline.mw-ui-btn-info{color:#009cff}.mw-ui-btn-notification,.mw-ui-btn.active-notification{color:#fff;background-color:#469a36;border-color:#469a36}.mw-ui-btn-outline.mw-ui-btn-notification{color:#469a36}.mw-ui-btn-warn,.mw-ui-btn.active-warn{color:#fff;background-color:#fa8e36;border-color:#fa8e36}.mw-ui-btn-outline.mw-ui-btn-warn{color:#fa8e36}.mw-ui-btn-outline{background-color:transparent}.mw-ui-btn.mw-ui-btn-outline:not(.mw-ui-btn-invert):not(.mw-ui-btn-important):not(.mw-ui-btn-info):not(.mw-ui-btn-warn):not(.mw-ui-btn-notification).active,.mw-ui-btn.mw-ui-btn-outline:not(.mw-ui-btn-invert):not(.mw-ui-btn-important):not(.mw-ui-btn-info):not(.mw-ui-btn-warn):not(.mw-ui-btn-notification):active,.mw-ui-btn.mw-ui-btn-outline:not(.mw-ui-btn-invert):not(.mw-ui-btn-important):not(.mw-ui-btn-info):not(.mw-ui-btn-warn):not(.mw-ui-btn-notification):hover{background-color:#f5f5f5}.mw-ui-btn.mw-ui-btn-outline.active,.mw-ui-btn.mw-ui-btn-outline:active,.mw-ui-btn.mw-ui-btn-outline:hover{color:#686868}.mw-ui-btn-outline.mw-ui-btn-important.active,.mw-ui-btn-outline.mw-ui-btn-important:active,.mw-ui-btn-outline.mw-ui-btn-important:hover,.mw-ui-btn-outline.mw-ui-btn-info.active,.mw-ui-btn-outline.mw-ui-btn-info:active,.mw-ui-btn-outline.mw-ui-btn-info:hover,.mw-ui-btn-outline.mw-ui-btn-invert.active,.mw-ui-btn-outline.mw-ui-btn-invert:active,.mw-ui-btn-outline.mw-ui-btn-invert:hover,.mw-ui-btn-outline.mw-ui-btn-notification.active,.mw-ui-btn-outline.mw-ui-btn-notification:active,.mw-ui-btn-outline.mw-ui-btn-notification:hover,.mw-ui-btn-outline.mw-ui-btn-warn.active,.mw-ui-btn-outline.mw-ui-btn-warn:active,.mw-ui-btn-outline.mw-ui-btn-warn:hover{color:#fff}.mw-ui-btn:not(:active):not(:hover):not(.active):not([class*=active-]):focus{outline:#009cff dotted 1px;outline-offset:-3px;z-index:1}.mw-ui-btn-big,.mw-ui-btn-large{font-size:1.385rem;height:3.385rem;padding:0 1.538rem}.mw-ui-btn-medium{font-size:1rem;height:2.308rem;padding:0 1rem}.mw-ui-btn-mini,.mw-ui-btn-small,.mw-ui-btn-tiny{font-size:.8462rem;height:1.538rem;padding:0 .7692rem}.mw-ui-btn:hover:not([class*=active-]):not(.active){outline:0;text-decoration:none}.mw-ui-btn-invert.active,.mw-ui-btn-invert:hover{background-color:#5e5e5e;border-color:#5e5e5e}.mw-ui-btn-important.active,.mw-ui-btn-important:hover{background-color:#f7857c;border-color:#f7857c}.mw-ui-btn-info.active,.mw-ui-btn-info:hover{background-color:#66c4ff;border-color:#66c4ff}.mw-ui-btn-notification.active,.mw-ui-btn-notification:hover{background-color:#7acb6b;border-color:#7acb6b}.mw-ui-btn-warn.active,.mw-ui-btn-warn:hover{background-color:#fcc69a;border-color:#fcc69a}.mw-ui-btn.active,.mw-ui-btn.active:hover,.mw-ui-btn:active{box-shadow:inset 0 0 3px rgba(0,0,0,.2)}.mw-ui-btn-rounded{-webkit-border-radius:30px;-moz-border-radius:30px;border-radius:30px}.mw-ui-btn>[class*=mai-],.mw-ui-btn>[class*=mw-micon-],.mw-ui-btn>[class*=mw-icon-]{font-size:1.4em;text-align:center;vertical-align:middle;display:inline-block}.mw-ui-btn>.mw-icon-dropdown{font-size:12px;margin-right:0;margin-left:7px}.mw-ui-btn>.mw-icon-right{margin:0 0 0 7px}.mw-ui-btn.active>[class*=mw-icon-],.mw-ui-btn:focus>[class*=mw-icon-],.mw-ui-btn:hover>[class*=mw-icon-]{opacity:1}.mw-ui-btn-nav,.mw-ui-btn-vertical-nav{position:relative;display:inline-block;vertical-align:middle}.mw-ui-btn-nav:not(.mw-ui-btn-nav-fluid):after,.mw-ui-btn-vertical-nav:not(.mw-ui-btn-nav-fluid):after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.mw-ui-btn-nav>li{list-style:none;float:left}.mw-ui-btn-vertical-nav>li{float:none;list-style:none}.mw-ui-btn-nav>.mw-dropdown,.mw-ui-btn-nav>.mw-dropdown .mw-ui-btn,.mw-ui-btn-nav>.mw-ui-btn,.mw-ui-btn-nav>.mw-ui-field,.mw-ui-btn-nav>li>.mw-ui-btn{border-width:1px 1px 1px 0;float:left;border-radius:0}.mw-ui-btn-nav>.mw-dropdown:first-child .mw-ui-btn,.mw-ui-btn-nav>.mw-ui-btn:first-child,.mw-ui-btn-nav>.mw-ui-field:first-child,.mw-ui-btn-nav>li:first-child>.mw-ui-btn{border-left-width:1px;border-top-left-radius:2px;border-bottom-left-radius:2px}.mw-ui-btn-nav>.mw-dropdown:last-child .mw-ui-btn,.mw-ui-btn-nav>.mw-ui-btn:last-child,.mw-ui-btn-nav>.mw-ui-field:last-child,.mw-ui-btn-nav>li:last-child>.mw-ui-btn{border-top-right-radius:2px;border-bottom-right-radius:2px}.mw-ui-btn-nav-fluid{display:flex;width:100%;vertical-align:top}.mw-ui-btn-nav-fluid>li{float:none;display:flex;vertical-align:top;flex:1;align-items:center}.mw-ui-btn-nav-fluid>li>.mw-ui-btn{float:none;display:flex;width:100%;white-space:nowrap;align-items:center;justify-content:center}.mw-ui-btn-vertical-nav .mw-ui-btn{border-width:1px 1px 0;border-radius:0;display:flex;text-align:left}.mw-ui-btn-vertical-nav>.mw-ui-btn:last-child,.mw-ui-btn-vertical-nav>li:last-child>.mw-ui-btn{border-radius:0 0 2px 2px;border-bottom-width:1px}.mw-ui-btn-img{display:inline-block;vertical-align:top;width:-webkit-calc(2.923rem - 12px);height:-webkit-calc(2.923rem - 12px);background-position:center;background-repeat:no-repeat;background-size:cover;border-radius:3px;transform:translateX(-20%);position:relative}.mw-ui-btn-big .mw-ui-btn-img,.mw-ui-btn-large .mw-ui-btn-img{width:-webkit-calc(3.385rem - 12px);height:-webkit-calc(3.385rem - 12px)}.mw-ui-btn-medium .mw-ui-btn-img{width:-webkit-calc(2.308rem - 12px);height:-webkit-calc(2.308rem - 12px)}.mw-ui-btn-small .mw-ui-btn-img{width:-webkit-calc(1.538rem - 6px);height:-webkit-calc(1.538rem - 6px)}.mw-ui-btn-rounded .mw-ui-btn-img{border-radius:33px}.mw-ui-btn.disabled,.mw-ui-btn:disabled{cursor:default!important;opacity:.55}.mw-paging{height:36px}.mw-paging>*{list-style:none;display:inline-block;float:left}.mw-paging a{display:inline-block;padding:9px 15px;height:36px;background:#f5f5f5;border-color:#cfcfcf;border-width:1px 0 1px 1px;border-style:solid}.mw-paging-big{height:46px}.mw-paging-big a{height:46px;padding:10px 20px;font-size:140%}.mw-paging-small{height:20px}.mw-paging-small a{height:20px;padding:2px 8px;font-size:11px}.mw-paging-medium{height:31px}.mw-paging-medium a{height:31px;padding:6px 9px}.mw-paging a:focus,.mw-paging a:hover{background-color:#fafafa}.mw-paging>:first-child a,.mw-paging>a:first-child{border-radius:3px 0 0 3px}.mw-paging>:last-child a,.mw-paging>a:last-child{border-radius:0 3px 3px 0;border-right-width:1px}.mw-paging a.active,.mw-paging a.active:focus,.mw-paging a.active:hover,.mw-paging a:active{background-color:#fafafa;box-shadow:inset 0 0 3px rgba(0,0,0,.2)}.mw-paging-invert a{background-color:#2b2b2b;border-color:#2b2b2b;color:#fff}.mw-paging-invert a.active,.mw-paging-invert a:active,.mw-paging-invert a:focus,.mw-paging-invert a:hover{color:#262626}.mw-paging-info a{background-color:#009cff;border-color:#009cff;color:#fff}.mw-paging-info a.active,.mw-paging-info a:active,.mw-paging-info a:focus,.mw-paging-info a:hover{color:#262626}.mw-paging-warn a{background-color:#fa8e36;border-color:#fa8e36;color:#fff}.mw-paging-warn a.active,.mw-paging-warn a:active,.mw-paging-warn a:focus,.mw-paging-warn a:hover{color:#262626}.mw-paging-important a{background-color:#f12b1c;border-color:#f12b1c;color:#fff}.mw-paging-important a.active,.mw-paging-important a:active,.mw-paging-important a:focus,.mw-paging-important a:hover{color:#262626}.mw-paging-notification a{background-color:#469a36;border-color:#469a36;color:#fff}.mw-paging-notification a.active,.mw-paging-notification a:active,.mw-paging-notification a:focus,.mw-paging-notification a:hover{color:#262626}.mw-ui-navigation{position:relative}.mw-ui-box.mw-ui-navigation{background-color:#fff}.mw-ui-navigation:hover{z-index:9}.mw-ui-navigation li{list-style:none;position:relative}.mw-ui-navigation>li{margin-bottom:10px}.mw-ui-navigation>li:last-child{margin-bottom:0}.mw-ui-navigation [class*=mw-icon-]{font-size:21px;opacity:.777}.mw-ui-navigation a,.mw-ui-navigation-item{display:block;position:relative;padding:9px 12px;height:36px;border:1px solid transparent;border-radius:2px;white-space:nowrap}.mw-ui-navigation a>[class*=mw-icon-]{margin:-5px 8px 0 0}.mw-ui-navigation a>.mw-icon-dropdown:last-child{margin:-5px -4px 0 7px}.mw-ui-navigation .mw-icon-dropdown{font-size:12px;line-height:12px}.mw-ui-navigation a:focus,.mw-ui-navigation a:hover,.mw-ui-navigation li:hover>a{border-color:#e5e5e5;background-color:#fafafa}.mw-ui-navigation a.active,.mw-ui-navigation a:active,.mw-ui-navigation li.active>a{box-shadow:inset 0 0 5px -2px rgba(0,0,0,.2);border-color:#e5e5e5;background-color:#fafafa}.mw-ui-navigation a:focus>[class*=mw-icon-],.mw-ui-navigation a:hover>[class*=mw-icon-],.mw-ui-navigation li:hover>a>[class*=mw-icon-]{opacity:1}.mw-ui-navigation-horizontal>li,.mw-ui-navigation-horizontal>ul>li{float:left;margin-right:12px;margin-bottom:0}.mw-ui-navigation-horizontal>li:last-child{margin-right:0}.mw-ui-navigation li ul,.mw-ui-navigation-horizontal>li>ul ul{position:absolute;display:none;top:0;left:100%;min-width:100%;border-radius:2px;background:#fff;border:1px solid #e5e5e5}.mw-ui-navigation-horizontal>li>ul{position:absolute;display:none;top:100%;left:0;min-width:100%;border-radius:0 0 2px 2px;background:#fff;border:1px solid #e5e5e5}.mw-ui-navigation-horizontal>li:first-child>ul{left:-1px}.mw-ui-box.mw-ui-navigation a,.mw-ui-navigation li ul a{border-width:0;border-radius:0}.mw-ui-box.mw-ui-navigation>li:first-child>a{border-top-width:0}.mw-ui-navigation li:hover>ul{display:block}.mw-paging{position:relative;overflow:hidden;text-align:center;list-style:none}.mw-paging>*{border-radius:0}.mw-paging>:first-child{border-radius:2px 0 0 2px}.mw-paging>:last-child{border-radius:0 2px 2px 0}.mw-ui-table{clear:both;border-radius:2px;width:100%;border-spacing:0;border-collapse:collapse;border:1px solid #e5e5e5}.mw-ui-table-fixed{table-layout:fixed}.mw-ui-table>tbody:first-child>tr:first-child>td:first-child,.mw-ui-table>thead>tr:first-child>th:first-child{border-radius:2px 0 0}.mw-ui-table>tbody:first-child>tr:first-child>td:last-child,.mw-ui-table>thead>tr:first-child>th:last-child{border-radius:0 2px 0 0}.mw-ui-table>tbody>tr:last-child>td:first-child,.mw-ui-table>tfoot>tr:last-child>td:first-child{border-radius:0 0 0 2px}.mw-ui-table>tbody>tr:last-child>td:last-child,.mw-ui-table>tfoot>tr:last-child>td:last-child{border-radius:0 0 2px}.mw-ui-table>tfoot+tbody>tr:last-child>td:last-child{border-radius:0}.mw-ui-table td,.mw-ui-table tfoot td,.mw-ui-table thead th{padding:10px;border:1px solid #e5e5e5}.mw-ui-table tfoot td,.mw-ui-table thead th{font-weight:400;font-size:inherit;text-align:inherit;background-color:#fafafa}.mw-ui-table tbody tr:last-child td,.mw-ui-table tfoot tr:last-child td,.mw-ui-table thead tr:last-child td{border-bottom:none}.show-on-hover{visibility:hidden}.mw-ui-table tr.active>td>.show-on-hover,.mw-ui-table tr:hover>td>.show-on-hover,.show-on-hover-root .show-on-hover,div:hover>.show-on-hover,li:hover>.show-on-hover{visibility:visible}.mw-ui-table td>[class*=mw-icon-]{font-size:17px}.mw-ui-table-basic{border:none}.mw-ui-table-basic td,.mw-ui-table-basic tfoot td,.mw-ui-table-basic thead th{border-right:none;border-left:none}.mw-ui-table-basic>tfoot>tr>td,.mw-ui-table-basic>thead>tr>th{background-color:transparent;color:#ababab}.mw-ui-table-basic>thead>tr>th{border-top:none}.mw-ui-table-spacious{background-color:#fff}.mw-ui-table-spacious tr td{padding-top:15px;padding-bottom:15px;background:#fff;color:#1b1b1b;font-size:14px;font-weight:700;border:0;border-bottom:3px solid #f1f1f1}.mw-ui-table-spacious tfoot td,.mw-ui-table-spacious thead th{padding-top:15px;padding-bottom:15px;background:#fff;border:0;color:#878787;font-size:13px;font-weight:700;text-transform:uppercase}.mw-ui-table tr.ui-sortable-helper{display:table;width:100%;table-layout:fixed;position:relative}.mw-ui-progress{position:relative;height:19px;min-width:50px;overflow:hidden;white-space:nowrap;background-color:#EEE;border-radius:2px}.mw-ui-progress .mw-ui-progress-bar{max-width:100%;height:100%;background-color:#575757;position:absolute;top:0;left:0;border-radius:2px}.mw-ui-progress-info{color:rgba(255,255,255,.43);font-size:9px;position:relative;display:inline-block;max-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;padding:3px 0 0 6px;float:left;z-index:2}.mw-ui-progress-percent{font-weight:700;color:#fff;margin-left:5px;font-size:9px;position:relative;display:inline-block;z-index:2}.mw-ui-progress-small,.mw-ui-progress-small .mw-ui-progress-bar{height:8px;overflow:hidden;position:relative;border-radius:5px;max-width:100%}.mw-ui-progress-small{background-color:#EEE}.mw-ui-progress-small .mw-ui-progress-bar{background-color:#575757}.mw-ui-progress-small .mw-ui-progress-info,.mw-ui-progress-small .mw-ui-progress-percent{display:none}.mw-tooltip{position:absolute;z-index:1200;left:-9999px;top:-9999px}.mw-tooltip-content{position:relative;line-height:normal}.mw-tooltip-content:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0;overflow:hidden}.mw-tooltip-arrow{position:absolute;display:inline-block;z-index:0}.mw-tooltip-circle,.mw-tooltip-circle .mw-tooltip-content{border-radius:555px!important}.mw-tooltip-default{background-color:#fff;color:#434343;box-shadow:0 0 4px rgba(0,0,0,.2);border-radius:2px}.mw-tooltip-default .mw-tooltip-content{padding:10px;position:relative;background:#fff;z-index:1;border-radius:2px}.mw-tooltip-default .mw-tooltip-arrow{display:block;width:10px;height:10px}.mw-tooltip-default .mw-tooltip-arrow:after{display:block;overflow:hidden;width:10px;height:10px;background:#fff;box-shadow:0 0 4px rgba(0,0,0,.2);content:"";transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg)}.mw-tooltip-insert-module{font-size:12px}.mw-tooltip-default.bottom-center .mw-tooltip-arrow,.mw-tooltip-default.bottom-left .mw-tooltip-arrow,.mw-tooltip-default.bottom-right .mw-tooltip-arrow{top:-5px}.mw-tooltip-default.top-center .mw-tooltip-arrow,.mw-tooltip-default.top-left .mw-tooltip-arrow,.mw-tooltip-default.top-right .mw-tooltip-arrow{bottom:-5px}.mw-tooltip-default.bottom-left .mw-tooltip-arrow,.mw-tooltip-default.top-left .mw-tooltip-arrow{left:12px}.mw-tooltip-default.bottom-right .mw-tooltip-arrow,.mw-tooltip-default.top-right .mw-tooltip-arrow{right:12px}.mw-tooltip-default.bottom-center .mw-tooltip-arrow,.mw-tooltip-default.top-center .mw-tooltip-arrow{left:50%;margin-left:-5px}.mw-tooltip-default.left-bottom .mw-tooltip-arrow,.mw-tooltip-default.left-center .mw-tooltip-arrow,.mw-tooltip-default.left-top .mw-tooltip-arrow{right:-5px}.mw-tooltip-default.right-bottom .mw-tooltip-arrow,.mw-tooltip-default.right-center .mw-tooltip-arrow,.mw-tooltip-default.right-top .mw-tooltip-arrow{left:-5px}.mw-tooltip-default.left-top .mw-tooltip-arrow,.mw-tooltip-default.right-top .mw-tooltip-arrow{top:12px}.mw-tooltip-default.left-bottom .mw-tooltip-arrow,.mw-tooltip-default.right-bottom .mw-tooltip-arrow{bottom:12px}.mw-tooltip-default.left-center .mw-tooltip-arrow,.mw-tooltip-default.right-center .mw-tooltip-arrow{top:50%;margin-top:-5px}.mw-tooltip-dark{background-color:#000;color:#F2F2F2;border-radius:3px}.mw-tooltip-dark .mw-tooltip-content{padding:7px;position:relative;background:#000;z-index:1;border-radius:3px}.mw-tooltip-dark .mw-tooltip-arrow{display:block;width:10px;height:10px}.mw-tooltip-dark .mw-tooltip-arrow:after{display:block;overflow:hidden;width:10px;height:10px;background:#000;content:"";transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg)}.mw-tooltip-dark.bottom-center .mw-tooltip-arrow,.mw-tooltip-dark.bottom-left .mw-tooltip-arrow,.mw-tooltip-dark.bottom-right .mw-tooltip-arrow{top:-5px}.mw-tooltip-dark.top-center .mw-tooltip-arrow,.mw-tooltip-dark.top-left .mw-tooltip-arrow,.mw-tooltip-dark.top-right .mw-tooltip-arrow{bottom:-5px}.mw-tooltip-dark.bottom-left .mw-tooltip-arrow,.mw-tooltip-dark.top-left .mw-tooltip-arrow{left:12px}.mw-tooltip-dark.bottom-right .mw-tooltip-arrow,.mw-tooltip-dark.top-right .mw-tooltip-arrow{right:12px}.mw-tooltip-dark.bottom-center .mw-tooltip-arrow,.mw-tooltip-dark.top-center .mw-tooltip-arrow{left:50%;margin-left:-5px}.mw-tooltip-dark.left-bottom .mw-tooltip-arrow,.mw-tooltip-dark.left-center .mw-tooltip-arrow,.mw-tooltip-dark.left-top .mw-tooltip-arrow{right:-5px}.mw-tooltip-dark.right-bottom .mw-tooltip-arrow,.mw-tooltip-dark.right-center .mw-tooltip-arrow,.mw-tooltip-dark.right-top .mw-tooltip-arrow{left:-5px}.mw-tooltip-dark.left-top .mw-tooltip-arrow,.mw-tooltip-dark.right-top .mw-tooltip-arrow{top:12px}.mw-tooltip-dark.left-bottom .mw-tooltip-arrow,.mw-tooltip-dark.right-bottom .mw-tooltip-arrow{bottom:12px}.mw-tooltip-dark.left-center .mw-tooltip-arrow,.mw-tooltip-dark.right-center .mw-tooltip-arrow{top:50%;margin-top:-5px}.mw-tooltip-warning{color:#fa8e36;box-shadow:0 0 4px #fa8e36}.mw-tooltip-warning .mw-tooltip-content{background:#fa8e36;color:#fff}.mw-tooltip-warning .mw-tooltip-arrow:after{background:#fa8e36}.mw_modal{position:fixed;z-index:1102;top:0;left:0;display:none;background:#fff;overflow:hidden;box-shadow:0 0 27px -20px #111}.mw_modal.ui-draggable-dragging{transition:none;-moz-transition:none;-webkit-transition:none;-o-transition:none}.mw_modal_title .mw_modal_title{margin-left:14px;margin-top:9px}.mw_modal_basic .mw-modal-close,.mw_modal_simple .mw-modal-close{position:absolute;display:block;width:14px;height:14px;right:8px;top:8px;cursor:pointer;font-size:15px;color:#444}.mw_modal_basic .mw-modal-close{padding:0}.mw_modal_basic .mw-modal-close:hover,.mw_modal_simple .mw-modal-close:hover{color:#000}.mw_modal_title{display:inline-block;float:left;font-size:11px;height:15px;line-height:15px;white-space:nowrap;margin-left:6px;margin-top:3px;overflow:hidden;color:#fff;text-overflow:ellipsis;text-shadow:0 1px 0 #255F85;text-shadow:none;min-height:18px}.mw_modal_simple .mw_modal_title{margin-top:2px}.mw_modal_minimize{position:absolute;top:1px;right:30px;text-indent:-9999px;display:block;background:url(../img/popup_ctrls.png) 0 -20px no-repeat;cursor:pointer;width:27px;height:20px}.mw_modal.is_minimized .mw_modal_minimize{background-position:0 -40px}.mw_modal_container{padding:15px;position:relative;overflow-y:auto;overflow-x:hidden}.iframe_fix{position:absolute;top:0;left:0;z-index:995;width:100%;height:100%;background:0 0;display:none}.mw_overlay{position:fixed;top:0;left:0;z-index:1101;width:100%;height:100%;background:#000;opacity:.7}.mw_modal_type_iframe .mw_modal_container{padding:0;width:100%}.mw_modal_maximized{overflow:hidden}.mw_modal_default .mw-modal-close{cursor:pointer;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:11px;position:absolute;right:5px;text-indent:0;top:5px;width:26px;height:21px;text-align:center;color:#7b7b7b;line-height:21px;background:#000}.mw_modal_default .mw-modal-close:focus,.mw_modal_default .mw-modal-close:hover{background-color:#fff;color:#000;border-bottom-color:#000}.mw_modal_basic .mw-modal-close:after,.mw_modal_default .mw-modal-close:after{content:"\0111";font-family:Microweber;font-size:12px}.mw_modal_default .mw_modal_toolbar{height:31px;width:100%;cursor:move;position:relative;z-index:2;background-repeat:no-repeat;background-position:center center;background-color:#2b2b2b}.mw_modal_default{overflow:visible;background:0 0}.mw_modal_default .mw_modal_container{box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22);border-radius:0 0 2px 2px;background:#fafafa;border:1px solid #2b2b2b}.mw-modal-draggable.mw_modal_default .mw_modal_toolbar{background-image:url(../img/popup_settings_bar.png);border-radius:2px 2px 0 0;cursor:move;cursor:-moz-grab;cursor:-webkit-grab;cursor:grab}.mw_modal_primary .mw-modal-close{cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:11px;position:absolute;right:0;text-indent:0;top:0;width:40px;height:100%;text-align:center;color:#bababa}.mw_modal_primary .mw-modal-close:focus,.mw_modal_primary .mw-modal-close:hover{color:#bababa}.mw_modal_primary .mw-modal-close:active{box-shadow:inset 0 0 4px #CCC}.mw_modal_primary .mw_modal_icon{cursor:pointer;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:24px;position:absolute;left:15px;text-indent:0;top:0;width:28px;height:24px;text-align:center;color:#bababa;line-height:21px;margin-top:7px}.mw_modal_primary .mw-ui-box-content{border:0!important}.mw_modal_basic .mw-modal-close:after,.mw_modal_primary .mw-modal-close:after{content:"\f2d7";font-family:Microweber;font-size:15px}.mw_modal_primary .mw_modal_title{color:#fff;margin:8px 0 0 14px;font-size:15px;font-weight:700;float:none;line-height:20px;height:auto;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.mw_modal_primary .mw_modal_toolbar{height:31px;width:100%;cursor:move;position:relative;z-index:2;background-repeat:no-repeat;background-position:center center;background-color:#2b2b2b}.mw_modal_primary{background:0 0;border:1px solid #e8e8e8;-webkit-box-shadow:0 0 10px #e8e8e8;-moz-box-shadow:0 0 10px #e8e8e8;box-shadow:0 0 10px #e8e8e8;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;overflow:hidden}.mw_modal_primary .mw_modal_container iframe{background:#fff}.mw_modal_primary .mw_modal_container{border-radius:0 0 2px 2px;background:#fff}.mw-modal-draggable.mw_modal_primary .mw_modal_toolbar{background:#2b2b2b;border-radius:0;cursor:move;cursor:-moz-grab;cursor:-webkit-grab;cursor:grab;text-align:center;padding:3px 10px;height:auto}.mw_modal_simple .mw_modal_toolbar{height:30px;width:100%;top:0;left:0;position:relative;background:#EEE;cursor:move;cursor:-moz-grab;cursor:grab}.mw_modal_basic{box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22)}.mw_modal_basic .mw_modal_toolbar{top:0;left:0;background:#fff}.mw_modal_basic .mw_modal_toolbar .mw_modal_title{color:#2b2b2b}.mw_modal_gallery .mw_modal_toolbar{height:0}.mw_modal_basic .mw-modal-close{cursor:pointer;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:11px;position:absolute;right:5px;text-indent:0;top:5px;width:26px;height:21px;text-align:center;color:#7b7b7b;line-height:21px}.mw_modal_basic .mw-modal-close:after{content:"\0111";font-family:Microweber;font-size:12px}.mw_modal_default .mw-modal-close:active{box-shadow:inset 0 0 4px #CCC}.mw_modal_default .mw_modal_title{color:#fff;margin:8px 0 0 14px}.mw_modal_basic .mw_modal_toolbar{height:31px;width:100%;cursor:move;position:relative;z-index:2;background-repeat:no-repeat;background-position:center center}.mw_modal_gallery{background:0 0;border:none}.mw_modal_gallery .mw-modal-close{position:absolute;top:20px;right:20px;display:block;width:20px;height:20px;background:url(../img/galleryclose.png) right top no-repeat #fff;text-indent:-9999px;overflow:hidden;cursor:pointer;box-shadow:1px 1px 2px #000}.mw_modal_gallery .mw-modal-close:hover{background-color:#CCC}.mw_modal_gallery .mw-modal-close:active{box-shadow:inset 0 0 3px #707070}.mw_modal_gallery .mw_modal_container{padding:0}.mw_modal_gallery .mw_modal_toolbar{position:absolute;z-index:12;top:0;right:0}.mw-modal-frame{position:absolute;width:100%;min-width:100%;max-width:100%;height:100%;min-height:100%;max-height:100%;left:0;bottom:0}.mw-inline-modal,.mw-inline-modal-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.mw-inline-modal-overlay{background-color:rgba(249,249,249,.8)}.mw-inline-modal-container{position:relative;max-width:90%;max-height:90%;margin:0 auto}.mw-inline-modal-default .mw-inline-modal-container{background-color:#FFF;border:1px solid #EDEDED;box-shadow:0 0 6px #F3F3F3;margin-top:5px;overflow:auto;padding:10px}.mw-inline-modal-default .mw-inline-modal-container-close{display:block;cursor:pointer;position:absolute;top:10px;right:10px;width:20px;height:20px;background:url(../img/galleryclose.png) no-repeat}.mw_modal_gallery,.mw_modal_gallery>*{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;-khtml-user-select:none;user-select:none}.mw_modal_gallery .mwf-gallery-description{position:absolute;z-index:9;bottom:0;left:0;width:100%;font-size:13px;color:#fff;background:#000;background:rgba(10,0,0,.8)}.mwf-gallery-description-holder{padding:20px;max-height:75px;overflow:auto}.mwf-gallery{height:100%;width:100%;text-align:center}.mw_modal_gallery .mwf-gallery-modeHTML{display:inline-block;box-shadow:0 0 6px #111;position:absolute;overflow:auto;background:#111;color:#fff}.mwf-single-holder{position:absolute;margin:auto;display:inline-block}.mwf-single{box-shadow:0 0 6px #111;position:relative;display:block;background-color:#E0E0E0;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f2f2f2),color-stop(1,#e0e0e0));background-image:-o-linear-gradient(bottom,#f2f2f2 0,#e0e0e0 100%);background-image:-moz-linear-gradient(bottom,#f2f2f2 0,#e0e0e0 100%);background-image:-webkit-linear-gradient(bottom,#f2f2f2 0,#e0e0e0 100%);background-image:-ms-linear-gradient(bottom,#f2f2f2 0,#e0e0e0 100%);background-image:linear-gradient(to bottom,#f2f2f2 0,#e0e0e0 100%);margin:auto;max-height:100%;max-width:100%;min-height:200px;min-width:200px;width:auto;height:auto;cursor:pointer}.mw_gallery_loading .mwf-single-holder *{visibility:hidden!important}.semi_hidden{position:absolute;left:-9999px;top:-9999px}.mw_modal_gallery .mwf-next,.mw_modal_gallery .mwf-prev{font-size:60px;color:#ccc;text-align:center;position:absolute;top:50%;margin-top:-27px;right:20px;cursor:pointer;height:55px;width:50px;text-shadow:0 0 1px #777;line-height:40px;font-family:Microweber;border-radius:1px}.mwf-play:after{content:"\f215"}.mwf-play.active:after{content:"\f210"}.mw_modal_gallery .mwf-play{display:block;width:20px;height:20px;overflow:hidden;position:absolute;background:no-repeat #fff;box-shadow:1px 1px 2px #000;top:20px;right:62px;cursor:pointer;color:#000;font-family:Microweber}.mw_modal_gallery .mwf-next:focus,.mw_modal_gallery .mwf-next:hover,.mw_modal_gallery .mwf-prev:focus,.mw_modal_gallery .mwf-prev:hover{background:#fff;background:rgba(255,255,255,.5);color:#111}.mwf-loader{width:0;height:2px;background:rgba(74,164,191,.91);display:block;overflow:hidden;position:absolute;top:0;left:0}.mw_modal_gallery .mwf-next:active,.mw_modal_gallery .mwf-prev:active{box-shadow:inset 2px 2px 2px -2px #333,inset -2px -2px 2px -2px #333}.mw_modal_gallery .mwf-prev{left:20px;right:auto}.mwf-gallery-container{overflow:hidden;position:absolute;top:0;left:0;width:100%;height:100%}.mwf-fullscreen{display:block;width:20px;height:20px;overflow:hidden;text-indent:-9999px;position:absolute;background:url(../img/enter_fullscreen.png) no-repeat #fff;box-shadow:1px 1px 2px #000;top:20px;right:41px;cursor:pointer}.fullscreen-mode .mwf-fullscreen{background:url(../img/cancel_fullscreen.png) no-repeat #fff}.mw-dialog{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1200}.mw-dialog.mw-dialog-scroll-mode-window{overflow:auto}.mw-dialog.mw-dialog-scroll-mode-inside{overflow:hidden}.mw-dialog.mw-dialog-scroll-mode-inside .mw-dialog-holder{max-height:96%}.mw-dialog.mw-dialog-scroll-mode-inside .mw-dialog-container{overflow:hidden auto}.mw-dialog .mw-dialog-container{position:relative}.mw-dialog .mw-dialog-overlay{position:fixed;z-index:1;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.2)}.mw-dialog .mw-dialog-holder{position:absolute!important;z-index:2}.mw-dialog.mw-dialog-iframe iframe{position:absolute;top:0;left:0;width:100%;height:100%;background-color:transparent}.mw-dialog.mw-dialog-iframe-autoheight iframe{position:relative}.mw-dialog-skin-default{visibility:hidden}.mw-dialog-skin-default .mw-dialog-header{min-height:40px;background-color:#2b2b2b;color:#fff;padding:10px;display:flex;align-items:center;position:relative;top:0;z-index:2}.mw-dialog-skin-default .mw-dialog-header .mw-dialog-title{max-width:calc(100% - 30px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mw-dialog-skin-default .mw-dialog-header .mw-dropdown-content{background-color:#2b2b2b}.mw-dialog-skin-default .mw-dialog-footer{padding:10px;overflow:hidden;position:relative;text-align:right;border-top:1px solid #eee}.mw-dialog-skin-default .mw-dialog-footer .mw-ui-btn+.mw-ui-btn{margin-left:10px}.mw-dialog-skin-default .mw-dialog-footer:empty{display:none}.mw-dialog-skin-default.mw-dialog-scroll-mode-window .mw-dialog-header{position:sticky}.mw-dialog-skin-default .mw-dialog-holder{max-width:98%;background-color:#fff;box-shadow:0 3px 9px rgba(0,0,0,.15);visibility:hidden;opacity:0;transform:translateY(20px);transition:none}.mw-dialog-skin-default .mw-dialog-holder.mw-dialog-drag-start{transition:none}.mw-dialog-skin-default .mw-dialog-overlay{opacity:0;visibility:hidden}.mw-dialog-skin-default.active{visibility:visible}.mw-dialog-skin-default.active .mw-dialog-holder{visibility:visible;opacity:1;transform:translateY(0)}.mw-dialog-skin-default.active .mw-dialog-overlay{opacity:1;visibility:visible}.mw-dialog-skin-default .mw-dialog-close{position:absolute;top:0;right:0;width:40px;height:40px;display:flex;align-items:center;text-align:center;justify-content:center;color:#bababa;cursor:pointer;transition:background-color .3s}.mw-dialog-skin-default .mw-dialog-close:hover{background-color:rgba(255,255,255,.2)}.mw-dialog-skin-default .mw-dialog-close:after{content:"\f2d7";font-family:Microweber;font-size:15px}.mw-dialog-skin-default .mw-dialog-header .mw-dialog-close{height:100%}.mw-dialog-skin-default .mw-dialog-container{padding:10px}.mw-dialog-skin-default.mw-dialog-iframe-loading iframe{opacity:0;min-height:100px}html[dir=rtl] .mw-dialog-close{right:auto;left:0}.mw-dialog-module-settings .mw-dialog-overlay{pointer-events:none}.mw-switch{display:inline-block;direction:ltr;white-space:nowrap;position:relative;height:24px;border-radius:2px;cursor:pointer;font-size:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mw-switch [class*=mw-switch-]{display:inline-block;vertical-align:top;font-weight:700;font-size:12px;line-height:22px;height:24px;padding:0 5px;text-transform:uppercase;color:#8d8d8d;background:#d3d3d3;text-align:center;min-width:40px;border-top:1px solid #cbcbcb;border-bottom:1px solid #b8b8b8;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1)}.mw-switch-off{border-left:1px solid #bfbfbf;border-radius:2px 0 0 2px;padding-right:2px}.mw-switch-on{border-right:1px solid #bfbfbf;border-radius:0 2px 2px 0;padding-left:2px}.mw-switch input{visibility:hidden;position:absolute}.mw-switcher{position:absolute;display:block;width:40px;height:27px;line-height:27px;border-radius:2px;top:-2px;right:-2px;background:#f9f9f9;background:-moz-linear-gradient(left,#f9f9f9 0,#ececec 100%);background:-webkit-linear-gradient(left,#f9f9f9 0,#ececec 100%);background:linear-gradient(to right,#f9f9f9 0,#ececec 100%);z-index:2;border-width:1px;border-style:solid;border-color:#cbcbcb #bdbdbd #b8b8b8 #a1a1a1;box-shadow:0 1px 1px rgba(0,0,0,.2);-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1)}.mw-switcher:after,.mw-switcher:before{position:absolute;display:block;content:'';top:7px;left:50%;height:11px}.mw-switcher:before{width:4px;border-left:1px solid #c6c6c6;border-right:1px solid #c6c6c6;margin-left:-4px}.mw-switcher:after{width:1px;background:#c6c6c6;margin-left:3px}.mw-switch :checked~.mw-switcher{right:100%;margin-right:-39px}.mw-switch :checked~[class*=mw-switch-]{background:#0086db;border-top-color:#0080d2;border-bottom-color:#005992}.mw-switch input:checked~.mw-switch-off,.mw-switch input:not(:checked)~.mw-switch-on{color:transparent!important;font-size:1px;overflow:hidden!important;text-indent:20px}.mw-switch :checked~.mw-switch-off{border-left-color:#006cb1}.mw-switch :checked~.mw-switch-on{border-right-color:#006cb1;color:#f5f5f5}.mw-switch-action [class*=mw-switch-]{color:#db0000;background:#ffc0d2}.mw-switch-action :checked~[class*=mw-switch-]{color:#237100;background:#aaed9a}.mw-switch-action .mw-switch-off{border-left:1px solid #d87272;border-top:1px solid #d87272;border-bottom:1px solid #d87272}.mw-switch-action .mw-switch-on{border-right:1px solid #d87272;border-top:1px solid #d87272;border-bottom:1px solid #d87272}.mw-switch-action :checked~.mw-switch-off{border-left:1px solid #669000;border-top:1px solid #669000;border-bottom:1px solid #669000}.mw-switch-action :checked~.mw-switch-on{border-right:1px solid #669000;border-top:1px solid #669000;border-bottom:1px solid #669000}.mw-dropdown,.mw-ui-dropdown{position:relative;z-index:9;display:inline-block;-moz-user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-o-user-select:none;-khtml-user-select:none;user-select:none}.mw-dropdown ul,.mw-ui-dropdown ul{padding:0;white-space:nowrap}.mw-dropdown.active,.mw-dropdown:hover,.mw-ui-dropdown.active,.mw-ui-dropdown:hover{z-index:10}.mw-dropdown-content{position:absolute;display:none;left:0;top:100%;min-width:100%;padding-top:0}.mw-dropdown-pop>.mw-dropdown-content{max-height:200px;overflow:auto}.mw-dropdown>.mw-ui-field{width:100%}.mw-dropdown>.mw-ui-field+.mw-icon-dropdown{position:absolute;right:10px;top:50%;margin-top:-7px}.mw-ui-dropdown .mw-dropdown-content,.mw-ui-dropdown .mw-ui-dropdown-content{visibility:hidden;cursor:default;position:absolute;top:100%;left:0;min-width:100%}.mw-ui-dropdown-content>.mw-ui-btn-vertical-nav{margin-top:-1px;min-width:100%}.mw-ui-dropdown-content>.mw-ui-btn-vertical-nav>.mw-ui-btn{text-align:left}.mw-ui-dropdown-content>.mw-ui-btn-vertical-nav>.mw-ui-btn:first-child{border-radius:0}.mw-ui-dropdown.active .mw-ui-dropdown-content,.mw-ui-dropdown.active>.mw-dropdown-content,.mw-ui-dropdown:hover .mw-ui-dropdown-content,.mw-ui-dropdown:hover>.mw-dropdown-content{visibility:visible;border-bottom-left-radius:2px;border-bottom-right-radius:2px}.mw-ui-dropdown-click:hover>.mw-dropdown-content{visibility:hidden}.mw-ui-dropdown-click .mw-ui-btn.active+.mw-dropdown-content{visibility:visible}.mw-ui-dropdown .idownarr{float:right;margin:-1px -9px -12px 1px}.mw-ui-dropdown .mw-dropdown-arrow{margin-right:0;margin-top:7px;margin-left:8px}.mw-dropdown-list{list-style:none}.mw-dropdown-list>li a{display:block;font-size:11px;padding:3px 10px}.mw-dropdown-list li li a{padding-left:20px}.mw-dropdown-list li li li a{padding-left:30px}.mw-dropdown-list li li li li a{padding-left:40px}.mw-dropdown-list>li a:hover{background-color:#EEE}.mw-dropdown>.mw-ui-btn.mw-dropdown-val{width:100%;text-align:left;display:flex;justify-content:space-between}.mw-dropdown-content{overflow-x:hidden;overflow-y:auto;background-color:#fff;border-radius:0 0 2px 2px;border:1px solid #e5e5e5}.mw-dropdown-default .mw-dropdown-content li{cursor:pointer;position:relative;text-decoration:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mw-dropdown-default .mw-dropdown-content li,.mw-dropdown-default .mw-dropdown-content li>a{min-height:36px;padding:9px 12px;border-top:1px solid rgba(218,218,218,.35);display:block}.mw-dropdown-default .mw-dropdown-content li:first-child{border-top:none}.mw-dropdown-default .mw-dropdown-content li li>a{padding-left:24px}.mw-dropdown-default .mw-dropdown-content li li li>a{padding-left:48px}.mw-dropdown-default li:hover>:first-child{background-color:#EEE}.mw-dropdown-default>ul>li:first-child{border-top:none}.mw-dropdown-button:after,.mw-dropdown-default .mw-dropdown-value.mw-ui-btn:after{content:"\0118";font-family:Microweber;margin-top:2px;margin-left:5px;position:relative;float:right}.mw-dropdown-button{text-align:left}.mw-dropdown-default .mw-dropdown-content{margin-top:-1px}.mw-notification{display:table;padding:5px;text-align:center;font-size:12px}.mw-notification-lite{display:block;padding:0;text-align:inherit;font-size:inherit}.mw-notification>div{display:table-cell;height:25px;padding:0 11px;vertical-align:middle}.mw-notification>div>*{vertical-align:middle}.mw-success{background-color:#469a36;color:#fff}.mw-warning{background-color:#fa8e36;color:#fff}.mw-error{background-color:#f12b1c;color:#fff}#mw-notifications-holder{position:relative;z-index:9999}#mw-notifications-holder .mw-notification:first-child{border-top-left-radius:0;border-top-right-radius:0}#mw-notifications-holder .mw-notification{left:50%;margin-left:-175px;position:fixed;top:0;transition:opacity 2s;-moz-transition:opacity 2s;-webkit-transition:opacity 2s;-o-transition:opacity 2s}#mw-notifications-holder .mw-notification+.mw-notification{top:40px}#mw-notifications-holder .mw-notification+.mw-notification+.mw-notification{top:80px}#mw-notifications-holder .mw-notification+.mw-notification+.mw-notification+.mw-notification{top:120px}#mw-notifications-holder .mw-notification+.mw-notification+.mw-notification+.mw-notification+.mw-notification{top:160px}#mw-notifications-holder .mw-notification+.mw-notification+.mw-notification+.mw-notification+.mw-notification+.mw-notification{top:200px}#mw-notifications-holder .mw-notification+.mw-notification+.mw-notification+.mw-notification+.mw-notification+.mw-notification+.mw-notification{top:240px}.mw-control-box.active{z-index:100}.mw-control-box{padding:20px}.mw-control-box-default{padding:0;transition:all .5s;background:#fff;box-shadow:0 0 10px rgba(0,0,0,.2)}.mw-control-box-default.mw-control-box-right{transform:translateX(100%)}.mw-control-box-default.mw-control-box-right.active{transform:translateX(0)}.mw-control-box-top{top:0;left:0;width:100%}.mw-control-box-bottom{bottom:0;left:0;width:100%}.mw-control-box-right{top:0;right:0;height:100%}.mw-control-box-left{top:0;left:0;height:100%}.mw-control-box{position:fixed;z-index:12}.mw-control-box-default .mw-control-boxclose:after{content:''}.mw-control-box-default .mw-control-boxclose{position:absolute;z-index:10;width:20px;height:20px;text-align:center}.mw-autocomplete{position:relative;z-index:10;display:flex;padding:5px}.mw-autocomplete .mw-ui-btn{margin:5px}.mw-autocomplete .mw-ui-btn .mw-icon-close{font-size:15px;right:-5px}.mw-autocomplete .mw-autocomplete-list{position:absolute;top:100%;left:0;min-width:100%;max-height:60vh;min-height:120px;overflow:auto}.mw-autocomplete .mw-autocomplete-img{display:inline-block;width:20px;height:20px;background-position:center;background-repeat:no-repeat;background-size:cover;border-radius:3px;vertical-align:middle;margin-right:7px}.mw-autocomplete .mw-autocomplete-value{display:inline-block}.mw-autocomplete.mw-autocomplete-multiple-false input.mw-autocomplete-field{width:100%}.mw-autocomplete.mw-autocomplete-multiple-false .mw-autocomplete-value+input.mw-autocomplete-field{width:-webkit-calc(70%);width:calc(70%)}.mw-ui-btn-nav-tabs{float:left}.mw-ui-btn-nav-tabs .mw-ui-btn{border-width:1px 1px 0 0;float:left;border-radius:0}.mw-ui-btn-nav-tabs .mw-ui-btn:first-child{border-radius:2px 0 0}.mw-ui-btn-nav-tabs .mw-ui-btn:last-child{border-radius:0 2px 0 0}.mw-ui-btn-nav-tabs+.mw-ui-box{border-radius:0 0 2px 2px}.mw-slider{height:8px;position:relative;border-radius:5px;max-width:100%;clear:both;background-color:#EEE}.mw-slider .ui-slider-handle{background-color:#575757;display:block;width:8px;height:16px;top:-4px;position:absolute;border-radius:5px}.mw-ui-sidenav li{list-style:none}.mw-ui-sidenav a{display:block;padding:12px 40px 14px 14px;border-radius:0 2px 2px 0}.mw-ui-sidenav a:focus,.mw-ui-sidenav a:hover{background-color:rgba(139,139,139,.1)}.mw-ui-sidenav a:active{box-shadow:0 1px 6px -4px #000 inset}.mw-ui-sidenav a.active,.mw-ui-sidenav a.active:active,.mw-ui-sidenav a.active:focus,.mw-ui-sidenav a.active:hover{background-color:#8B8B8B;color:#fff;box-shadow:0 1px 5px -2px #000 inset}.mw-ui-richtext-editor{border:1px solid #EEE;min-height:300px;max-width:100%}.mw-wrapper{max-width:1100px;width:90%;margin-left:auto;margin-right:auto}.mw-picker-frame{overflow:hidden;width:280px;height:280px;min-height:280px}.mw-text-upper{text-transform:uppercase}body.bup.dragStart.state-element .edit .element:empty{background-color:#ffffb9;background-image:none;opacity:.6}.th-in-td{display:none}.mw-color-invert{color:#2b2b2b}.mw-color-info{color:#009cff}.mw-color-warn{color:#fa8e36}.mw-color-important{color:#f12b1c}.mw-color-notification{color:#469a36}.mw-progress{position:absolute;top:0;left:0;width:100%;height:3px;z-index:101}.mw-progress-index{width:0;height:3px;max-width:100%;background:#009cff;transition:width 10s}.mw-progress-slow .mw-progress-index{transition-duration:5s}.mw-progress-normal .mw-progress-index{transition-duration:2s}.mw-progress-fast .mw-progress-index{transition-duration:.6s}.mw-component-post-search{position:relative;display:inline-block}.mw-component-post-search ul{position:absolute;z-index:2;top:100%;left:0;min-width:100%;list-style:none;box-shadow:0 4px 15px rgba(0,0,0,.3);background:#fff}.mw-component-post-search ul li{padding:3px 12px}.mw-component-post-search ul li:hover{background:#3363c6;color:#fff}.mw-notif-box{padding:15px}.mw-notif-box i{font-size:20px}.mw-notif-box.mw-notif-box-info{background-color:#009cff;border-left:3px solid #009cff}.mw-notif-box.mw-notif-box-info span{color:#009cff}.mw-hr{display:block;clear:both;height:1px;overflow:hidden;margin:2rem auto;background:#e5e5e5;font-size:0}.mw-hero{position:relative;clear:both;background-position:center 33%;background-repeat:no-repeat;background-size:cover;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;max-height:100vh}.mw-hero .mw-hero-content{max-width:90%;padding:5%;position:relative;display:block;text-align:center;z-index:1;margin-left:auto;margin-right:auto;color:#fff}.mw-hero .mw-hero-content>h1,.mw-hero .mw-hero-content>h2,.mw-hero .mw-hero-content>h3,.mw-hero .mw-hero-content>h4,.mw-hero .mw-hero-content>h5,.mw-hero .mw-hero-content>h6{padding-bottom:.3em}.mw-hero .mw-hero-content>h1+p,.mw-hero .mw-hero-content>h2+p,.mw-hero .mw-hero-content>h3+p,.mw-hero .mw-hero-content>h4+p,.mw-hero .mw-hero-content>h5+p,.mw-hero .mw-hero-content>h6+p{padding-bottom:1rem}.mw-hero:after{position:absolute;display:block;z-index:0;content:'';top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.3)}.mw-color-picker-holder .mw-ui-btn{width:50px}.mw-color-picker-holder .mw-color-picker{max-width:-webkit-calc(100% - 50px);max-width:calc(100% - 50px)}.mw-selector{width:1px;height:1px;position:absolute;background:#0899E6;pointer-events:none;top:-20px;left:-20px;z-index:1}.mw-selector-bottom:after,.mw-selector-bottom:before,.mw-selector-top:after,.mw-selector-top:before{display:block;content:'';width:5px;height:5px;background:#0899E6;position:absolute}.mw-interactor,.mw-interactor:after,.mw-interactor:before{background:#C4D6E8;z-index:0}.mw-selector-top:before{top:-2px;left:-2px}.mw-selector-top:after{top:-2px;right:-2px}.mw-selector-bottom:before{bottom:-2px;left:-2px}.mw-selector-bottom:after{bottom:-2px;right:-2px}.mw-accordion-item{transition:.4s}.mw-accordion-item.active{box-shadow:0 0 4px rgba(0,0,0,.2)}.mw-ui-box-header.mw-accordion-title{cursor:pointer;position:relative}.mw-ui-box-header.mw-accordion-title:after{position:absolute;content:"\0118";display:inline-block;font-family:Microweber!important;text-transform:none!important;transition:.4s;z-index:1;color:#009cff;transform:rotate(-90deg);top:12px;right:12px;font-size:15px}.mw-ui-box-header.mw-accordion-title.active:after{transform:rotate(0deg)}.mw-badge{display:inline-block;position:absolute;top:0;right:0;transform:translate(50%,-50%);background:red;color:#FFF;min-height:13px;padding:0 2px;font-size:11px;line-height:20px;border-radius:20px;height:20px;min-width:20px;text-align:center}.mw-badge.mw-badge-invert{background-color:#2b2b2b}.mw-badge.mw-badge-info{background-color:#009cff}.mw-badge.mw-badge-warn{background-color:#fa8e36}.mw-badge.mw-badge-important{background-color:#f12b1c}.mw-badge.mw-badge-notification{background-color:#469a36}.mw-block-edit-holder{overflow:hidden;width:100%;position:relative}.mw-block-edit-slider{width:200%;overflow:hidden;position:relative}.mw-block-edit-edit-slide,.mw-block-edit-main-slide{width:50%;float:left;position:relative} \ No newline at end of file diff --git a/update/userfiles/modules/microweber/css/ui/dialog.less b/update/userfiles/modules/microweber/css/ui/dialog.less index 57161726..f01c869a 100644 --- a/update/userfiles/modules/microweber/css/ui/dialog.less +++ b/update/userfiles/modules/microweber/css/ui/dialog.less @@ -32,7 +32,7 @@ background-color: rgba(0,0,0,.2); } .mw-dialog-holder{ - position: absolute; + position: absolute !important; z-index: 2; } &.mw-dialog-iframe iframe{ @@ -49,6 +49,7 @@ } .mw-dialog-skin-default{ + visibility: hidden; .mw-dialog-header{ min-height: 40px; background-color: #2b2b2b; @@ -101,12 +102,21 @@ transition: none; } } + .mw-dialog-overlay{ + opacity: 0; + visibility: hidden; + } &.active{ + visibility: visible; .mw-dialog-holder{ visibility: visible; opacity: 1; transform: translateY(0); } + .mw-dialog-overlay{ + opacity: 1; + visibility: visible; + } } .mw-dialog-close{ position: absolute; @@ -144,6 +154,13 @@ } } +html[dir='rtl'] { + .mw-dialog-close{ + right: auto; + left: 0; + } +} + .mw-dialog-module-settings { .mw-dialog-overlay{ pointer-events: none; diff --git a/update/userfiles/modules/microweber/css/ui/form_elements.less b/update/userfiles/modules/microweber/css/ui/form_elements.less new file mode 100644 index 00000000..ae3b6001 --- /dev/null +++ b/update/userfiles/modules/microweber/css/ui/form_elements.less @@ -0,0 +1,688 @@ +/********************************************* + Form elements and cotrolls +*********************************************/ +@import "var"; + +.mw-ui-label { + display: block; + padding-bottom: 3px; +} + +.mw-ui-label, +.mw-ui-inline-label { + font-weight: 700; +} + +.mw-ui-label small, +.mw-ui-inline-label small { + font-weight: normal; + font-size: 80%; +} + +.mw-ui-inline-label { + display: inline-block; + padding: 8px; + margin-right: 8px; + height: 36px; +} + +.mw-ui-invisible-field { + background: transparent; + border-color: transparent; + border-width: 1px; + border-style: solid; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 8px 0; + position: relative; + outline: none; +} + +select.mw-ui-invisible-field { + opacity: 0; +} + +.mw-ui-field .mw-ui-invisible-field{ + padding: 3px 0; +} + +.mw-ui-invisible-field, +.mw-ui-invisible-field[class*='mw-ui-field'] { + padding-left: 0; + padding-right: 0; +} + +.mw-ui-field { + border: 1px solid @fieldBorderColor; + padding: 8px; + max-width: 100%; + border-radius: @radius; + background-color: white; + outline: none; + cursor: text; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + box-shadow: inset 0 0 3px rgba(0, 0, 0, .2); + transition: border-color .3s, box-shadow, .3s; +} + +div.mw-ui-field, +span.mw-ui-field{ + display: inline-block; +} + +select.mw-ui-field { + -webkit-appearance: menulist; + padding-top: 0; + padding-bottom: 0; +} +.mw-ui-field-medium { + padding: 6px; +} + +.mw-ui-field-big { + padding: 9px; + font-size: 140%; +} + +.mw-ui-field-small { + padding: 2px; + font-size: 80%; +} + +input.mw-ui-field, +select.mw-ui-field { + height: @normalHeight; +} + +input.mw-ui-field-medium, +select.mw-ui-field-medium { + height: @mediumHeight; +} + +input.mw-ui-field-big, +select.mw-ui-field-big { + height: @largeHeight; +} + +input.mw-ui-field-small, +select.mw-ui-field-small { + height: @smallHeight; +} + +select.mw-ui-field { + cursor: default; +} + +.mw-ui-field.form-control { + height: auto; +} + +.mw-ui-field option, +.mw-ui-field optgroup { + padding: 4px 8px; +} + +.mw-ui-field optgroup option { + padding: 4px 16px; +} + +.mw-ui-field:focus, +.mw-ui-field:hover { + border-color: rgba(0, 134, 219, 1); + box-shadow: 0 0 3px rgba(0, 134, 219, .4); +} + +.mw-ui-field:focus { + box-shadow: inset 0 0 3px rgba(0, 134, 219, .4); + -webkit-box-shadow: inset 0 0 3px rgba(0, 134, 219, .4); +} + +input.mw-ui-field { + -webkit-appearance: textfield; + appearance: textfield; +} + +div.mw-ui-field { + display: inline-block; +} + +div.mw-ui-field:after { + content: "."; + display: block; + clear: both; + visibility: hidden; + line-height: 0; + height: 0; +} + +.mw-ui-field-holder { + padding: 10px 0; + position: relative; + clear: both; +} + +.mw-ui-field-holder:after { + content: "."; + display: block; + clear: both; + visibility: hidden; + line-height: 0; + height: 0; +} + +/* Search field */ + +.mw-ui-searchfield { + background: #FFFFFF url(../images/magnifier.svg) no-repeat left center !important; + width: 1px; + border: 1px solid #E6E6E6; + border-radius: 3px; + box-sizing: border-box; + cursor: text; + outline: medium none; + padding: 8px 8px 8px 33px; + padding-left: 33px !important; + opacity: 0.5; + height: 36px; + -webkit-transition: width 0.1s, opacity 0.2s; + -moz-transition: width 0.1s, opacity 0.2s; + -o-transition: width 0.1s, opacity 0.2s; + transition: width 0.1s, opacity 0.2s; +} + +.mw-ui-searchfield::-webkit-input-placeholder { + color: transparent; +} + +.mw-ui-searchfield:-moz-placeholder { + color: transparent; +} + +.mw-ui-searchfield::-moz-placeholder { + color: transparent; +} + +.mw-ui-searchfield:-ms-input-placeholder { + color: transparent; +} + +.mw-ui-searchfield:focus::-webkit-input-placeholder { + color: inherit; +} + +.mw-ui-searchfield:focus:-moz-placeholder { + color: inherit; +} + +.mw-ui-searchfield:focus::-moz-placeholder { + color: inherit; +} + +.mw-ui-searchfield:focus:-ms-input-placeholder { + color: inherit; +} + +.mw-ui-searchfield:hover::-webkit-input-placeholder { + color: inherit; +} + +.mw-ui-searchfield:hover:-moz-placeholder { + color: inherit; +} + +.mw-ui-searchfield:hover::-moz-placeholder { + color: inherit; +} + +.mw-ui-searchfield:hover:-ms-input-placeholder { + color: inherit; +} + +.mw-ui-searchfield.active::-webkit-input-placeholder { + color: inherit; +} + +.mw-ui-searchfield.active:-moz-placeholder { + color: inherit; +} + +.mw-ui-searchfield.active::-moz-placeholder { + color: inherit; +} + +.mw-ui-searchfield.active:-ms-input-placeholder { + color: inherit; +} + +.mw-ui-searchfield.active, +.mw-ui-searchfield:focus, +.mw-ui-searchfield:focus:hover { + border-color: #c6c6c6; + width: 200px; + opacity: 1; +} + +.mw-ui-searchfield:hover { + border-color: #E6E6E6; + width: 200px; + opacity: 1; +} + +/* Checkboxes and radio buttons */ + +.mw-ui-check, +.mw-ui-check > *, +.mw-ui-check > *:before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; +} + +.mw-ui-check { + cursor: pointer; + vertical-align: middle; + display: inline-block; + @shadow: 0 1px 3px lighten(@info, 40%); + &:hover { + input + span { + box-shadow: @shadow; + } + } + input:checked + span { + box-shadow: @shadow; + } + input { + position: absolute; + opacity: 0; + & + span { + display: inline-block; + position: relative; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; + line-height: normal; + text-align: center; + vertical-align: middle; + margin-right: 8px; + font-weight: normal; + width: 17px; + height: 17px; + transition: all .3s; + border: 1px solid @fieldBorderColor; + background-color: white; + &:after { + position: absolute; + transition: all .3s; + visibility: hidden; + opacity: 0; + transform: scale(.3); + content: ''; + } + } + &:checked + span { + border-color: @info; + &:after { + visibility: visible; + opacity: 1; + transform: scale(1); + } + } + + } + input[type="radio"] { + & + span:first-of-type { + border-radius: 30px; + &:after { + background-color: @info; + top: 20%; + left: 20%; + width: 60%; + height: 60%; + border-radius: 30px; + } + } + + } + input[type="checkbox"] { + & + span { + border-radius: 2px; + &:after { + display: inline-block; + font-family: Microweber; + text-transform: none; + top: 10%; + left: 10%; + width: 80%; + height: 80%; + line-height: 100%; + content: "\0101"; + color: @info; + text-align: center; + } + } + } +} + +.mw-disabled, +.mw-ui-field:disabled, +.mw-ui-field[disabled] { + opacity: 0.6; + cursor: not-allowed; + -moz-user-select: none; + -webkit-user-select: none; + -o-user-select: none; + -khtml-user-select: none; + user-select: none; +} + +.mw-ui-field-icon { + display: inline-block; + text-align: center; + font-size: 30px; + height: @normalHeight; + width: @normalHeight; + border: 1px solid @fieldBorderColor; + border-radius: @radius 0 0 @radius; + vertical-align: top; + line-height: ~"-webkit-calc(" @normalHeight ~" - 4px)"; + line-height: ~"calc(" @normalHeight ~" - 4px)"; + [class*='icon-'], .ico, .fa, .material-icons { + line-height: ~"-webkit-calc(" @normalHeight ~" - 4px)"; + line-height: ~"calc(" @normalHeight ~" - 4px)"; + } +} + +.mw-ui-field-icon + input { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + max-width: -webkit-calc(100% - 36px); + max-width: calc(100% - 36px); +} + +.range-slider input[type=range] { + -webkit-appearance: none; + margin: 10px 0; + width: 100%; +} + +.range-slider input[type=range]:focus { + outline: none; +} + +.range-slider input[type=range]::-webkit-slider-runnable-track { + width: 100%; + height: 3px; + cursor: pointer; + transition: 0.2s; + box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d; + background: @info; + border-radius: 0px; + border: 0px solid #000101; +} + +.range-slider input[type=range]::-webkit-slider-thumb { + border: 1px solid #e1e1e1; + height: 20px; + width: 20px; + border-radius: 20px; + background: #fff; + cursor: pointer; + -webkit-appearance: none; + margin-top: -10px; +} + +.range-slider input[type=range]:focus::-webkit-slider-runnable-track { + background: @info; +} + +.range-slider input[type=range]::-moz-range-track { + width: 100%; + height: 12.8px; + cursor: pointer; + transition: 0.2s; + box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d; + background: @info; + border-radius: 25px; + border: 0px solid #000101; +} + +.range-slider input[type=range]::-moz-range-thumb { + box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d; + border: 0px solid #000000; + height: 20px; + width: 39px; + border-radius: 7px; + background: #65001c; + cursor: pointer; +} + +.range-slider input[type=range]::-ms-track { + width: 100%; + height: 12.8px; + cursor: pointer; + transition: 0.2s; + background: transparent; + border-color: transparent; + border-width: 39px 0; + color: transparent; +} + +.range-slider input[type=range]::-ms-fill-lower { + background: @info; + border: 0px solid #000101; + border-radius: 50px; + box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d; +} + +.range-slider input[type=range]::-ms-fill-upper { + background: @info; + border: 0px solid #000101; + border-radius: 50px; + box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d; +} + +.range-slider input[type=range]::-ms-thumb { + box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d; + border: 0px solid #000000; + height: 20px; + width: 39px; + border-radius: 7px; + background: #65001c; + cursor: pointer; +} + +.range-slider input[type=range]:focus::-ms-fill-lower { + background: @info; +} + +.range-slider input[type=range]:focus::-ms-fill-upper { + background: @info; +} + +.mw-ui-field-group-check { + * { + vertical-align: bottom; + } + + & > * + * { + margin-left: 12px; + } + + .mw-ui-field-holder { + display: inline-block; + padding: 0; + } + .mw-ui-check { + transform: translateY(50%); + position: relative; + bottom: @normalHeight/2; + } + &.mw-ui-field-group-check-medium { + .mw-ui-check { + bottom: @mediumHeight/2; + } + } + &.mw-ui-field-group-check-small { + .mw-ui-check { + bottom: @smallHeight/2; + } + } + &.mw-ui-field-group-check-big { + .mw-ui-check { + bottom: @largeHeight/2; + } + } + +} + +.mw-ui-field-append, +.mw-ui-field-prepend{ + display: inline-block; + background-color: #e1e1e1; + padding: 0 12px; +} + +.mw-field, mw-field{ + display: inline-flex; + position: relative; + vertical-align: top; + input,select,textarea{ + border: 1px solid @fieldBorderColor; + padding: 0 8px; + width: 100%; + max-width: 100%; + border-radius: @radius; + background-color: white; + outline: none; + cursor: text; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + box-shadow: inset 0 0 3px rgba(0, 0, 0, .2); + transition: border-color .3s, box-shadow, .3s; + order: 2; + &:focus, + &:hover { + border-color: rgba(0, 134, 219, 1); + box-shadow: 0 0 3px rgba(0, 134, 219, .4); + } + + &:focus { + box-shadow: inset 0 0 3px rgba(0, 134, 219, .4); + -webkit-box-shadow: inset 0 0 3px rgba(0, 134, 219, .4); + } + } + + + .mw-field-append, + .mw-field-prepend, + &[data-before]:before, + &[data-after]:after{ + display: block; + white-space: nowrap; + } + [class="mw-field-append"], + [class="mw-field-prepend"], + &[data-before]:before, + &[data-after]:after{ + border: 1px solid #cfcfcf; + box-shadow: inset 1px 1px 4px 0px rgba(0,0,0,.1); + background-color: #e1e1e1; + padding: 0 12px; + } + &[data-before]:before{ + content: attr(data-before); + } + &[data-after]:after{ + content: attr(data-after); + } + &[data-before]{ + input,select,textarea{ + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + } + &[data-after]{ + input,select,textarea{ + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + } + .mw-field-append, &[data-after]:after{ + order: 5; + border-radius: 0 @radius @radius 0; + border-left: none; + } + .mw-field-prepend, &[data-before]:before{ + order: 1; + border-radius: @radius 0 0 @radius; + border-right: none; + } + + input, select, + .mw-field-prepend, &[data-before]:before, + .mw-field-append, &[data-after]:after{ + height: @normalHeight; + line-height: @normalHeight; + } + + select{ + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-position: 90% center; + background-position: -webkit-calc(~"100% - 10px") 50%; + background-position: calc(~"100% - 10px") 50%; + background-repeat: no-repeat; + background-size: 8px auto; + padding-right: 25px; + cursor: default; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 284.929 284.929' style='enable-background:new 0 0 284.929 284.929;' %3E%3Cpath fill='%23777' d='M282.082,76.511l-14.274-14.273c-1.902-1.906-4.093-2.856-6.57-2.856c-2.471,0-4.661,0.95-6.563,2.856L142.466,174.441 L30.262,62.241c-1.903-1.906-4.093-2.856-6.567-2.856c-2.475,0-4.665,0.95-6.567,2.856L2.856,76.515C0.95,78.417,0,80.607,0,83.082 c0,2.473,0.953,4.663,2.856,6.565l133.043,133.046c1.902,1.903,4.093,2.854,6.567,2.854s4.661-0.951,6.562-2.854L282.082,89.647 c1.902-1.903,2.847-4.093,2.847-6.565C284.929,80.607,283.984,78.417,282.082,76.511z'/%3E%3C/svg%3E%0A"); + } + select::-ms-expand { + display: none; + } + + &[size="medium"], &[data-size="medium"] { + input, select, + .mw-field-prepend, &[data-before]:before, + .mw-field-append, &[data-after]:after{ + line-height: @mediumHeight; + height: @mediumHeight; + } + } + &[size="small"], &[data-size="small"] { + input, select, + .mw-field-prepend, &[data-before]:before, + .mw-field-append, &[data-after]:after{ + height: @smallHeight; + line-height: @smallHeight; + } + } + &[size="large"], &[data-size="large"] { + input, select, + .mw-field-prepend, &[data-before]:before, + .mw-field-append, &[data-after]:after{ + height: @largeHeight; + line-height: @largeHeight; + + } + } +} + + + + + + + + diff --git a/update/userfiles/modules/microweber/css/ui/tables.less b/update/userfiles/modules/microweber/css/ui/tables.less deleted file mode 100644 index 9147f526..00000000 --- a/update/userfiles/modules/microweber/css/ui/tables.less +++ /dev/null @@ -1,137 +0,0 @@ - -@import "var"; - -.mw-ui-table { - clear: both; - border-radius: @radius; - width: 100%; - border-spacing: 0; - border-collapse: collapse; - border: 1px solid @borderColor; -} - -.mw-ui-table-fixed { - table-layout: fixed; -} - -.mw-ui-table > tbody:first-child > tr:first-child > td:first-child, -.mw-ui-table > thead > tr:first-child > th:first-child { - border-radius: @radius 0 0 0; -} - -.mw-ui-table > tbody:first-child > tr:first-child > td:last-child, -.mw-ui-table > thead > tr:first-child > th:last-child { - border-radius: 0 @radius 0 0; -} - -.mw-ui-table > tbody > tr:last-child > td:first-child, -.mw-ui-table > tfoot > tr:last-child > td:first-child { - border-radius: 0 0 0 @radius; -} - -.mw-ui-table > tbody > tr:last-child > td:last-child, -.mw-ui-table > tfoot > tr:last-child > td:last-child { - border-radius: 0 0 @radius 0; -} - -.mw-ui-table > tfoot + tbody > tr:last-child > td:last-child { - border-radius: 0; -} - -.mw-ui-table td, -.mw-ui-table thead th, -.mw-ui-table tfoot td { - padding: 10px; - border: 1px solid @borderColor; -} - -.mw-ui-table thead th, -.mw-ui-table tfoot td { - font-weight: normal; - font-size: inherit; - text-align: inherit; - background-color: @boxbg; -} - -.mw-ui-table tbody tr:last-child td, -.mw-ui-table thead tr:last-child td, -.mw-ui-table tfoot tr:last-child td { - border-bottom: none; -} - -.show-on-hover { - visibility: hidden; -} - -.show-on-hover-root .show-on-hover, -.mw-ui-table tr:hover > td > .show-on-hover, -div:hover > .show-on-hover, -li:hover > .show-on-hover { - visibility: visible; -} - -.mw-ui-table tr.active > td > .show-on-hover { - visibility: visible; -} - -.mw-ui-table td > [class*='mw-icon-'] { - font-size: 17px; -} - -.mw-ui-table-basic { - border: none; -} - -.mw-ui-table-basic td, -.mw-ui-table-basic thead th, -.mw-ui-table-basic tfoot td { - border-right: none; - border-left: none; -} - -.mw-ui-table-basic > thead > tr > th, -.mw-ui-table-basic > tfoot > tr > td { - background-color: transparent; - color: lighten(@textColor, 50%); -} - -.mw-ui-table-basic > thead > tr > th { - border-top: none; -} - -.mw-ui-table-spacious { - background-color: white; -} - -.mw-ui-table-spacious tr td { - padding-top: 15px; - padding-bottom: 15px; - background: white; - color: #1b1b1b; - font-size: 14px; - font-weight: bold; - border: 0px; - border-bottom: 3px solid #f1f1f1; -} - -.mw-ui-table-spacious thead th, -.mw-ui-table-spacious tfoot td { - - font-size: 14px; - padding-top: 15px; - padding-bottom: 15px; - background: white; - border: 0px; - color: #878787; - - font-size: 13px; - font-weight: bold; - text-transform: uppercase; -} - -.mw-ui-table tr.ui-sortable-helper{ - display: table; - width: 100%; - table-layout: fixed; - position: relative; -} diff --git a/update/userfiles/modules/microweber/css/wysiwyg.css b/update/userfiles/modules/microweber/css/wysiwyg.css index 1ab70d83..70040081 100644 --- a/update/userfiles/modules/microweber/css/wysiwyg.css +++ b/update/userfiles/modules/microweber/css/wysiwyg.css @@ -280,6 +280,23 @@ cursor: pointer; } +.mw-dropdown-type-wysiwyg.disabled{ + opacity: 0.45; + pointer-events: none; +} +.mw-active-element-is-in-safe-mode .mw_editor_element, +.mw-active-element-is-in-safe-mode .mw_editor_outdent, +.mw-active-element-is-in-safe-mode .mw_editor_indent, +.mw-active-element-is-in-safe-mode .mw_editor_ol , +.mw-active-element-is-in-safe-mode .mw_editor_ul , +.mw-active-element-is-in-safe-mode #wysiwyg_insert li[value='insert_html'], +.mw-active-element-is-in-safe-mode #wysiwyg_insert li[value='quote'], +.mw-active-element-is-in-safe-mode #wysiwyg_insert li[value='code'], +.mw-active-element-is-in-safe-mode #wysiwyg_insert li[value='pre'], +.mw-active-element-is-in-safe-mode #format_main{ + opacity: 0.45; + pointer-events: none; +} .mw-dropdown-type-wysiwyg .mw-dropdown-value{ display: inline-block; diff --git a/update/userfiles/modules/microweber/custom_fields/date_settings.php b/update/userfiles/modules/microweber/custom_fields/date_settings.php new file mode 100644 index 00000000..74b9d261 --- /dev/null +++ b/update/userfiles/modules/microweber/custom_fields/date_settings.php @@ -0,0 +1,40 @@ + + + +
      + + + + + + + +
      + + + +
      + +
      + +
      +
      + + +
      + + + + + +

      + +
      +
      + +
      + + + diff --git a/update/userfiles/modules/microweber/custom_fields/email_settings.php b/update/userfiles/modules/microweber/custom_fields/email_settings.php index dbf333b4..cd4f07d7 100644 --- a/update/userfiles/modules/microweber/custom_fields/email_settings.php +++ b/update/userfiles/modules/microweber/custom_fields/email_settings.php @@ -14,6 +14,16 @@ + +
      + +
      + +
      +
      + + +
      diff --git a/update/userfiles/modules/microweber/custom_fields/number_settings.php b/update/userfiles/modules/microweber/custom_fields/number_settings.php new file mode 100644 index 00000000..1535b9a2 --- /dev/null +++ b/update/userfiles/modules/microweber/custom_fields/number_settings.php @@ -0,0 +1,35 @@ + +
      + +
      + + + + +
      +
      + + +
      + +
      + +
      +
      + + + +
      +
      + + + + +
      + +

      + +
      + diff --git a/update/userfiles/modules/microweber/custom_fields/phone_settings.php b/update/userfiles/modules/microweber/custom_fields/phone_settings.php new file mode 100644 index 00000000..bc9eb4c4 --- /dev/null +++ b/update/userfiles/modules/microweber/custom_fields/phone_settings.php @@ -0,0 +1,47 @@ + + +
      + +
      + + + + +
      +
      + + +
      + + + + + +
      +
      + + +
      + +
      + +
      +
      + + + + + +
      +
      + +
      + diff --git a/update/userfiles/modules/microweber/custom_fields/price_settings.php b/update/userfiles/modules/microweber/custom_fields/price_settings.php deleted file mode 100644 index 3a0531a5..00000000 --- a/update/userfiles/modules/microweber/custom_fields/price_settings.php +++ /dev/null @@ -1,33 +0,0 @@ - - -shop_manager->currency_symbol(); -?> - -
      - - -
      - -
      - - -
      - - - - - - \ No newline at end of file diff --git a/update/userfiles/modules/microweber/custom_fields/settings_footer.php b/update/userfiles/modules/microweber/custom_fields/settings_footer.php deleted file mode 100644 index 723b1454..00000000 --- a/update/userfiles/modules/microweber/custom_fields/settings_footer.php +++ /dev/null @@ -1,92 +0,0 @@ - - -ui->custom_fields(); -?> -
      - -
      - - -
      -
      - -
      - -
      - - -
      -
      - -
      - -
      - - - -
      -
      - - -
      - -
      - - -
      -
      -
      - -
      - -
      -
      -
      - - - -
      - - -
      diff --git a/update/userfiles/modules/microweber/custom_fields/site_settings.php b/update/userfiles/modules/microweber/custom_fields/site_settings.php new file mode 100644 index 00000000..62d86fa9 --- /dev/null +++ b/update/userfiles/modules/microweber/custom_fields/site_settings.php @@ -0,0 +1,38 @@ + + + +
      + +
      + + + + +
      +
      + +
      + +
      + +
      +
      + + +
      + + + + +

      + +

      + + +
      + + diff --git a/update/userfiles/modules/microweber/custom_fields/text_settings.php b/update/userfiles/modules/microweber/custom_fields/text_settings.php new file mode 100644 index 00000000..01ab5681 --- /dev/null +++ b/update/userfiles/modules/microweber/custom_fields/text_settings.php @@ -0,0 +1,75 @@ + + + + +
      + + + + + + +
      +
      + + +
      +
      + + + +
      + + + +
      + + +
      + +
      + +
      +
      + +
      + +
      + +
      +
      + + + + +
      + + diff --git a/update/userfiles/modules/microweber/custom_fields/textarea_settings.php b/update/userfiles/modules/microweber/custom_fields/textarea_settings.php new file mode 100644 index 00000000..a4f99b8d --- /dev/null +++ b/update/userfiles/modules/microweber/custom_fields/textarea_settings.php @@ -0,0 +1,61 @@ + + + + + + + + +
      + + + + + +
      +
      + + + + +
      + + +
      + +
      + +
      +
      + + +
      + +
      + +
      + +
      +
      + +
      + +
      + +
      +
      + + +
      + + diff --git a/update/userfiles/modules/microweber/language/dk.json b/update/userfiles/modules/microweber/language/dk.json deleted file mode 100644 index 4b2b761a..00000000 --- a/update/userfiles/modules/microweber/language/dk.json +++ /dev/null @@ -1,1013 +0,0 @@ -{ -"password-key-P8": "Adgangskode", -"you-are-now-logged-in-key-Yanli21": "Du er nu logget ind", -"text-with-picture-key-Twp17": "Tekst med Billede", -"go-live-edit-key-GLe12": "Gå tilLive edit.", -"log-out-key-Lo7": "Log ud", -"create-save-or-browse-lists-of-contact-form-entries": "Opret, gem eller gennemgå beskeder fra kontaktformular.", -"list-name": "Liste navn", -"click-here": "Klik her", -"create-list": "Opret Liste", -"browse-lists": "Gennemgå Lister", -"use-integration-with-selected-mail-providers-key-Uiwsmp44": "Integrer med udvalgte mailudbydere", -"mail-integrations-key-MI17": "Mail Integrationer", -"posts-per-page-key-PpP14": "Indlæg per Side", -"edit-page-key-Ep9": "Rediger side", -"custom-fields-key-CF13": "Brugerdefinerede Felter", -"add-to-navigation-key-AtN17": "Tilføj til Navigation", -"no-items-found-key-Nif14": "Ingen elementer fundet", -"country-key-C7": "Land", -"city-key-C4": "By", -"state-key-S5": "Region", -"zip-key-Z3": "Postnummer", -"qty-key-Q3": "Antal", -"order-key-O5": "Ordre", -"order-status-key-OS12": "Ordre Status", -"what-is-the-status-of-this-order-key-Witsoto32": "Hvad er status på denne ordre?", -"completed-order-key-CO15": "Gennemført Ordre", -"order-is-marked-as-un-paid-key-Oimau25": "Ordre markeret som ubetalt", -"order-is-marked-as-paid-key-Oimap23": "Ordre markeret som betalt", -"successfully-completed-key-SC22": "Gennemført", -"payment-information-key-PI19": "Betalingsinformation", -"payment-information-that-we-have-from-the-payment-provider-key-PItwhftpp58": "Betalingsinformation, som vi har fra betalingsudbyderen", -"payment-method-key-PM14": "Betalingsmetode", -"is-paid-key-IP7": "Betalt", -"payment-amount-key-PA14": "Beløb", -"amount-paid-by-the-user-key-Apbtu23": "Beløb betalt af brugeren", -"payment-currency-key-Pc16": "Betalingsvalute", -"client-information-key-CI18": "Kunde Informationer", -"customer-name-key-CN13": "Kunde Navn", -"phone-number-key-PN12": "Telefonnummer", -"user-ip-key-UI7": "Brugerens IP-Adresse", -"shipping-address-key-SA16": "Leverings Adresse", -"additional-information": "Yderligere information", -"order-information-key-OI17": "Ordre Information", -"image-key-I5": "billede", -"total-amount-key-TA12": "TOTAL BELØB", -"shipping-price-key-Sp14": "Leverings pris", -"paid": "Betalt:", -"are-you-sure-you-want-to-delete-this-order-key-Aysywtdto42": "Er du sikker på at du vil slette denne ordre", -"new-orders-key-No10": "Nye ordrer", -"search-in-orders-key-Sio16": "Søg i ordrer", -"amount-key-A6": "Beløb", -"sort-by-key-SB7": "Sorter Efter", -"completed-orders-key-Co16": "Gennemførte ordre", -"abandoned-carts-key-Ac15": "Forladte kurve", -"new-key-N3": "Ny", -"new-order-key-No9": "Ny ordre", -"new-products-key-NP12": "Nye Produkter", -"spam-key-S4": "Spam", -"reply-to-key-Rt8": "Svar til", -"send-key-S4": "Send", -"reply-key-R5": "Svar", -"you-are-logged-in-key-Yali17": "Du er logget ind!", -"field-name-key-Fn10": "Felt navn", -"values-key-V6": "Værdier", -"fields-key-F6": "Felter", -"start-building-with-dream-key-SbwD25": "Begynd at arbejde med Dream", -"we-d-love-to-hear-from-you-to-discuss-web-design-product-dev-key-Wlthfytdwdpdothynsi100": "Vi vil rigtig gerne høre fra dig, så vi kan drøfte web design, produktudvikling og idéer!", -"use-pictures-from-post-key-Upfp22": "Brug billeder fra indlæg", -"default-list-key-Dl12": "Standard liste", -"search-for-data-key-Sfd15": "Søg efter data", -"export-data-key-Ed11": "Eksporter data", -"excel-key-E5": "Excel", -"id-key-I2": "ID", -"new-notification-key-Nn16": "Ny notifikation", -"your-notifications": "Dine notifikationer", -"mark-all-as-read": "Marker alle som læst", -"read-all": "Læs alle", -"unread-all": "Ulæst alle", -"delete-all": "Slet all", -"show-system-log-key-Ssl15": "Vis system log", -"subscribers-key-S11": "Abonnenter", -"lists-key-L5": "Lister", -"campaigns-key-C9": "Kampagner", -"sending-accounts-key-SA16": "Afsenderkonti", -"are-you-sure-you-want-to-delete-this-subscriber-key-Aysywtdts47": "Er du sikker på at du vil slette denne abonnent?", -"subscriber-deleted-key-Sd18": "Abonnent slettet", -"add-new-subscriber-key-Ans18": "Tilføj ny abonnent", -"are-you-sure-you-want-to-delete-this-list-key-Aysywtdtl41": "Er du sikker på at du vil slette denne liste?", -"list-deleted-key-Ld12": "Liste slettet", -"add-new-list-key-Anl12": "Tilføj ny liste", -"add-new-campaign-key-Anc16": "Tilføj ny kampagne", -"loading-key-L7": "Indlæser...", -"are-you-sure-you-want-to-delete-this-template-key-Aysywtdtt45": "Er du sikker på at du vil slette denne skabelon?", -"template-deleted-key-Td16": "Skabelon slettet", -"list-of-templates-key-Lot17": "Skabelon Oversigt", -"add-new-template-key-Ant16": "Tilføj ny skabelon", -"template-saved-key-Ts14": "Skabelon gemt", -"template-title-key-Tt14": "Skabelon titel", -"template-design-key-Td15": "Skabelon design", -"use-template-generator-key-UTG22": "Benyt skabelon generator", -"add-new-sender-key-Ans14": "Tilføj ny afsender", -"enable-code-verification-ex-key-ECVe27": "Benyt Kode Bekræftelse ex", -"your-message-has-been-sent": "Din besked er blevet sendt", -"sender-saved": "Afsender gemt", -"please-fill-correct-data-key-Pfcd24": "Udfyld venligst korrekt data.", -"the-field-cannot-be-empty-key-Tfcbe25": "Dette felt må ikke være tomt", -"the-email-address-is-not-valid-key-Teainv30": "Denne email adresse er ikke gyldig.", -"from-name-key-FN9": "Fra navn", -"from-email": "Fra email", -"reply-email": "Svar email", -"test-method-key-TM11": "Test Metode", -"subscriber-saved": "Abonnent gemt", -"subscriber-name": "Abonnent navn", -"subscriber-email": "Abonnent email", -"subscribed-for": "Har abonneret i", -"saved-key-S5": "Gemt", -"allowable-format-for-upload-key-AFfu27": "Gyldige formater for upload", -"images-files-key-IF12": "Billede Filer", -"document-files-key-DF14": "Dokument Filer", -"archive-files-key-AF13": "Arkiv Filer", -"custom-file-types-key-CFT17": "Brugerdefinerede Filtyper", -"remove-key-R6": "Fjern", -"move-key-M4": "Flyt", -"required-key-R8": "Påkrævet", -"organaize-in-columns-key-Oic20": "Sorter i kolonner", -"is-this-field-required-key-ItfR22": "Er dette felt påkrævet?", -"active-key-A6": "Aktiv", -"help-text-key-Ht9": "Hjælpetekst", -"browse-key-B6": "Gennemse", -"editing-post-key-EP12": "Redigerer Indlæg", -"my-pictures-key-Mp11": "Mine Billeder", -"post-title-key-Pt11": "Indlæg titel ", -"break-line-key-BL10": "Linjeskift", -"my-menus-key-Mm8": "Mine menuer", -"are-you-sure-you-want-to-delete-this-menu": "Er du sikker på at du vil fjerne denne menu?", -"select-the-menu-you-want-to-edit-or": "Vælg den menu du ønsker at redigere, eller", -"create-new-menu": "Opret ny menu", -"menu-name-key-Mn9": "Menu navn", -"select-page-you-want-to-add-to-your-menu": "Vælg den side, du ønsker at tilføje til din menu", -"add-page-to-menu-key-APtM16": "Tilføj side til menu", -"add-custom-link-key-ACL15": "Tilføj brugerdefineret link", -"add-to-menu-key-Atm11": "Tilføj til menu", -"here-you-can-edit-your-menu-links-you-can-also-drag-and-drop-key-HyceymlYcadadtrt76": "Her kan du redigere dine menu links. Du kan også flytte dem ved at trække i dem.", -"menu-changes-are-saved": "Menuændringer gemt", -"edit-menu-item-key-Emi14": "Rediger menupunkt", -"select-page-from-your-site-key-Spfys26": "Vælg en side fra din hjemmeside", -"confirm": "BEKRÆFT", -"show-content-with-tags-key-Scwt22": "Vis indhold med tags", -"upload-file-key-UF11": "Upload fil", -"page-title-key-Pt11": "Side titel ", -"editing-page-key-EP12": "Redigerer Side", -"parent-page-key-Pp11": "Parent page", -"add-to-menus-key-AtM12": "Tilføj til Menuer", -"select-parent-page-key-Spp18": "Select parent page", -"no-parent-page-key-Npp14": "No parent page", -"change-page-template-key-Cpt20": "Skift side skabelon", -"admin-apis-key-AA10": "Admin APIs", -"tooltip-key-T7": "Værktøjstip", -"icons-key-I5": "Ikoner", -"buttons-key-B7": "Knapper", -"toggle-outline-type-key-TOT19": "Vælg Outline Type", -"importing-content-from-file": "Importerer indhold fra fil", -"export-content": "Eksporter indhold", -"uploading-files-key-Uf15": "Uploader filer", -"microweber-supports-importing-content-from-key-Msicf42": "Microweber understøtter importeret indhold fra", -"other-files": "andre filer", -"avaiable-import-files-key-Aif21": "Tilgængelige import filer", -"filename-key-F8": "Filnavn", -"time-key-T4": "Tid", -"import-key-I6": "Importer", -"are-you-sure-you-want-to-uninstall-this-module-key-AysywtUtm46": "Er du sikker på at du vil afinstallere dette modul?", -"extensions-key-E10": "Udvidelser", -"my-modules-key-Mm10": "Mine moduler", -"market-key-M6": "Marked", -"status-key-S6": "Status", -"module-types-key-Mt12": "Module typer", -"all-modules-key-Am11": "Alle moduler", -"copy-key-C4": "Kopier", -"are-you-sure-you-want-to-delete-key-Aysywtd31": "Er du sikker på at du vil slette", -"are-you-sure-you-want-to-delete-these-files-key-Aysywtdtf43": "Er du sikker på at du vil slette disse filer", -"new-folder-key-NF10": "Ny Mappe", -"delete-selected-files-key-Dsf21": "Slet valgte filer", -"create-folder-key-Cf13": "Opret Mappe", -"delete-selected-key-DS15": "Slet Valgte", -"main-key-M4": "Main", -"new-post-key-NP8": "Nyt Indlæg", -"manage-key-M6": "Administrer", -"skin-template-key-S12": "Skin/Skabelon", -"display-key-D7": "Vis", -"from-page-key-fp9": "fra side", -"current-page-key-Cp12": "Nuværende side", -"all-pages-key-Ap9": "Alle sider", -"show-only-from-category-key-Sofc23": "Vis kun fra kategori", -"select-a-category-key-Sac17": "Vælg en kategori", -"related-key-R7": "Relaterede", -"display-on-key-Do10": "Vis på", -"thumbnail-key-T9": "Thumbnail", -"length-key-L6": "Længde", -"read-more-link-key-RML14": "Læs Mere Link", -"read-more-key-Rm9": "Læs mere", -"hide-paging-key-Hp11": "Skjul sidetal", -"order-by-key-Ob8": "Sorter efter", -"done-all-files-have-been-uploaded-key-DAfhbu33": "Færdig! Alle dine filer er blevet uploadet", -"error-key-E5": "Fejl", -"invalid-filetype-key-If16": "Ugyldig filtype", -"my-computer-key-MC11": "Min Computer", -"uploaded-key-U8": "Uploadet", -"upload-image-key-UI12": "Upload Billede", -"drag-your-files-here-key-Dyfh20": "Træk og slip dine filer her", -"enter-the-license-key": "Indtast Licensnøgle", -"license-key": "Licensnøgle", -"get-license-key": "Få en licensnøgle", -"save-key": "Gem nøgle", -"license-key-L7": "Licensnøgle", -"please-confirm-installation": "Bekræft venligst installation", -"working-key-W7": "Arbejder...", -"check-your-inbox-key-CyI16": "Tjek din Indbakke", -"contact-form-fields-key-CFF19": "Kontaktformular Felter", -"templates-key-T9": "Skabeloner", -"type-your-e-mail-where-you-will-receive-the-email-from-this-key-Tyewywrteftf63": "Skriv den email adresse, du ønsker at modtage beskeder fra formularen på", -"email-to-key-ET8": "Email Til", -"bcc-email-to-key-BET12": "BCC Email Til", -"autorespond-subject-key-AS19": "Autosvar Emne", -"autorespond-message-key-AM19": "Autosvar Besked", -"autorespond-e-mail-sent-back-to-the-user-key-Aesbttu39": "Autosvar email, som sendes tilbage til brugeren", -"skip-saving-emails-in-database-key-Sseid30": "Gem ikke emails i databasen.", -"disable-code-verification-ex-key-DCVe28": "Deaktiver Kodebekræftelse ex", -"redirect-to-url-after-submit-key-RtUas28": "Viderestil til URL efter indsendelse", -"name-of-the-new-list-key-Notnl20": "Navn på den nye liste", -"create-key-C6": "Opret", -"development-process-key-DP19": "Udviklingsproces", -"our-rigorous-process-ensures-your-project-is-managed-strateg-key-Orpeypimsaeficttfdaas155": "Vores vedholdende proces sikrer at dit projekt styres strategisk og effektivt.", -"drop-on-in-key-Doi10": "Kom med indenfor", -"suite-203-level-4-key-S2L417": "Suite 203, Etage 4", -"124-koornang-road-key-1KR17": "124 Koornang Road", -"carnegie-victoria-3183-key-CV322": "Carnegie, Victoria 3183", -"give-us-a-call-key-Guac14": "Ring os op", -"office-key-O6": "Kontor", -"fax-key-F3": "Fax", -"connect-online-key-Co14": "Forbind online", -"email-key-E5": "Email", -"twitter-key-T7": "Twitter", -"users-must-agree-to-terms-and-conditions-key-UmatTaC40": "Brugere skal bekræfte Betingelser", -"current-skin-template-key-CST21": "Nuværende Skin / Skabelon", -"need-more-designs-key-Nmd17": "Brug for flere skabeloner", -"you-can-use-all-templates-you-like-and-change-the-skin-key-Ycuatylacts54": "Du kan bruge alle de skabeloner, du vil", -"browse-templates-key-BT16": "Gennemse Skabeloner", -"leave-a-message-key-LaM15": "Skriv en Besked", -"enter-security-code-key-ESc19": "Skriv Sikkerhedskode", -"send-message-key-SM12": "Send Besked", -"your-email-was-sent-successfully-key-YEwss32": "Din email blev afsendt", -"no-selected-key-NS11": "Ingen valgt", -"padding-top-key-PT11": "Padding Top", -"padding-bottom-key-PB14": "Padding Bund", -"height-key-H6": "Højde", -"not-selected-key-NS12": "Ikke valgt", -"current-layout-key-Cl14": "Nuværende layout", -"color-as-overlay-key-Cao16": "Farve som overlay", -"color-name-or-hex-key-CnOH17": "Farve navn eller HEX", -"this-is-my-title": "Dette er min titel", -"default-key-D7": "Standard", -"skin-settings-key-SS13": "Skin Indstillinger", -"logo-image-selected-key-Lis19": "Logo billede valgt", -"image-logo-key-IL10": "Billede Logo", -"text-logo-key-TL9": "Text Logo", -"browse-uploaded-key-BU15": "Gennemse Uploadede", -"auto-logo-size-key-Als14": "Auto logo størrelse", -"image-size-key-Is10": "Billede størrelse", -"choose-font-key-Cf11": "Vælg font", -"enter-text-key-ET10": "Skriv Tekst", -"module-template-is-changed-key-Mtic26": "Modulskabelon ændret", -"go-to-admin-key-Gta11": "Gå til admin", -"last-comments-key-Lc13": "Seneste kommentarer", -"new-comments-key-Nc12": "Nye kommentarer", -"you-don-t-have-any-comments-yet-key-Ydhacy30": "Du har ikke nogle kommentarer endnu.", -"see-all-comments-key-Sac16": "Se alle kommentarer", -"visitors-key-v8": "besøgende", -"recent-messages-key-RM15": "Nylige Beskeder", -"go-to-messages-key-GtM14": "Gå til Beskeder", -"you-don-t-have-any-messages-yet-key-Ydhamy30": "Du har ikke nogle beskeder endnu.", -"back-to-live-edit-key-BtLE17": "Tilbage til Live Edit", -"visitors-key-V8": "Besøgende", -"locations-key-L9": "Lokationer", -"browser-language-key-Bl16": "Browser sprog", -"statistics-key-S10": "Statistikker", -"yearly-key-Y6": "Årlig", -"uploading-key-U9": "Uploader", -"url-key-U3": "URL", -"by-key-b2": "ved", -"this-text-is-set-by-default-and-is-suitable-for-edit-in-real-key-TtisbdaisfeirtBdtdadcfwaytpiaotsGcMW180": "This text is set by default and is suitable for edit in real time. By default the drag and drop core feature will allow you to position it anywhere on the site. Get creative, Make Web.", -"share-this-article-key-Sta18": "Del denne artikel", -"comments-for-key-Cf12": "Kommentarer for", -"no-comments-key-Nc11": "Ingen kommentarer", -"leave-a-comment-key-Lac15": "Skriv en kommentar", -"you-are-commenting-as-key-Yaca21": "Du kommenterer som", -"comment-key-C7": "Kommentar", -"add-comment-key-Ac11": "Tilføj kommentar", -"security-code-key-Sc13": "Sikkerhedskode", -"no-products-here": "Ingen produkter her", -"add-new-product": "TIlføj nyt Produkt", -"email-settings-are-saved-key-Esas24": "Email indstillinger gemt", -"your-email-address-key-Yea18": "Din email adresse", -"the-website-will-send-emails-on-behalf-of-this-address-key-Twwseobota54": "Denne hjemmeside vil sende emails som denne adresse", -"ex-my-email-com-key-em13": "eks. min@email.dk", -"the-website-will-use-this-name-for-the-emails-key-Twwutnfte45": "Denne hjemmeside vil bruge dette navn til emails", -"ex-website-support-key-eWS18": "eks. Hjemmeside Support", -"mail-send-settings": "Email Afsender Indstillinger", -"send-email-function-key-Sef19": "Send email funktion", -"php-mail-function-key-Pmf17": "PHP Mail", -"gmail-key-G5": "GMail", -"smtp-server-key-Ss11": "SMTP server", -"send-test-email-to-key-Stet18": "Send test email til", -"test-mail-subject-key-Tms17": "Test mail emne", -"send-test-email-key-Ste15": "Send test email", -"user-settings-updated-key-Usu21": "Brugerindstillinger opdateret", -"email-send-results": "Email afsendelse resultater...", -"enable-user-registration-key-EUR24": "Aktiver Bruger Registrering", -"enable-user-registration-with-socials": "Aktiver Bruger Registrering med Social Media", -"allow-social-login-with-key-ASLw23": "Tillad Social Media Login med", -"facebook-login-enabled": "Facebook login aktiveret?", -"api-access-key-Aa10": "API adgang", -"in-key-I2": "In", -"website-with-facebook-login-key-WwFL27": "Hjemmeside med Facebook Login", -"please-enter-key-pe12": "indast venligst", -"if-asked-for-callback-url-use-key-Iafcuu29": "Hvis callback URL kræves, brug", -"app-id-api-key-key-AIK13": "App ID/API Nøgle", -"app-secret-key-AS10": "App Secret", -"google-login-enabled": "Google login aktiveret?", -"set-your-key-Sy8": "Sæt din", -"in-redirect-uri-please-enter-key-IrUpe28": "I redirect URI, indast venligst", -"client-id-key-CI9": "Client ID", -"client-secret-key-Cs13": "Client secret", -"github-login-enabled": "Github login aktiveret?", -"register-your-application-key-Rya25": "Registrer din applikation", -"main-url-key-MU8": "Main URL", -"enter-key-e5": "indtast", -"callback-url-key-CU12": "Callback URL", -"twitter-login-enabled": "Twitter login aktiveret?", -"consumer-key-key-Ck12": "Consumer key", -"consumer-secret-key-Cs15": "Consumer secret", -"linked-in-login-enabled": "Linked-in login aktiveret?", -"microweber-login-enabled": "Microweber login aktiveret?", -"please-enter-your-credentials-for-microweber-login-server": "INdtast venligst dine Microweber Login Server informationer", -"register-e-mail": "Registrer email", -"social-links": "Sociale links", -"privacy-settings": "Privatlivsindstillinger", -"other": "Andet", -"send-email-on-new-user-registration": "Send email ved ny bruger registrering", -"email-subject": "Email emne", -"thank-you-for-your-registration": "Tak for din registrering", -"email-content": "Email indhold", -"these-values-will-be-replaced-with-the-actual-content": "Disse værdier vil blive skiftet ud med det faktiske indhold", -"e-mail-values": "E-mail Værdier", -"user-id": "Bruger ID", -"username": "Brugernavn", -"first-name": "Fornavn", -"last-name": "Efternavn", -"date-of-registration": "Registreringsdato", -"verify-email-link": "Bekræft email link", -"test": "Test", -"forgot-password-email-settings": "Indstillinger for glemt adgangskode email", -"send-custom-forgot-password-email": "Send brugerdefineret glemt adgangskode email", -"password-reset": "Nulstilling af adgangskode", -"reset-password-link": "Nulstil adgangskode link", -"ip-address": "IP adresse", -"user-privacy-settings": "Bruger privatlivsindstillinger", -"terms-and-conditions-text": "Betingelser Tekst", -"register-form-settings": "Registreringsformular indstillinger", -"disable-captcha": "Deaktiver Captcha?", -"disable-registration-with-temporary-email": "Deaktiver registrering med midlertidig email?", -"show-first-name-field": "Vis Fornavn felt?", -"show-last-name-field": "Vis Efternavn felt?", -"show-password-confirmation-field": "Vis Bekræft Adgangskode felt?", -"login-form-settings": "Loginformular indstillinger", -"require-captcha-to-login": "Kræv Captcha ved login?", -"other-settings": "Andre indstillinger", -"register-url-key-RU12": "Registrer URL", -"you-can-set-a-custom-url-for-the-register-page-key-Ycsacuftrp46": "Du kan indstille en brugerdefineret URL til registreringssiden", -"use-default-key-Ud11": "Brug standard", -"login-url-key-LU9": "Log ind URL", -"you-can-set-a-custom-url-for-the-login-page-key-Ycsacuftlp43": "Du kan indstille en brugerdefineret URL til loginsiden", -"logout-url": "Lod ud URL", -"you-can-set-a-custom-url-for-the-logout-page": "Du kan indstille en brugerdefineret URL til log ud siden", -"forgot-password-url-key-FpU19": "Glemt adgangskode URL", -"you-can-set-a-custom-url-for-the-forgot-password-page-key-Ycsacuftfpp53": "Du kan indstille en brugerdefineret URL til glemt adgangskode siden", -"template-settings-are-saved-key-Tsas27": "Skabelon indstillinger gemt", -"more-templates": "Flere Skabeloner", -"apply-template-key-AT14": "Anvend Skabelon", -"previous-layout-key-Pl15": "Tidligere layout", -"next-layout-key-Nl11": "Næste layout", -"date-format-key-DF11": "Dato Format", -"fonts-key-F5": "Skrifttyper", -"change-favicon-key-CF14": "Skift Favicon", -"upload-favion-key-Uf13": "Upload favion", -"packages-key-P8": "Pakker", -"uninstall-key-U9": "Afinstaller", -"open-key-O4": "Åben", -"search-for-modules-key-Sfm18": "Søg efter moduler", -"installed-key-I9": "Installeret", -"uninstalled-key-U11": "Afinstalleret", -"live-edit-modules-key-Lem17": "Live edit moduler", -"admin-modules-key-Am13": "Admin moduler", -"reload-modules-key-Rm14": "Genindlæs moduler", -"none-key-N4": "Ingen", -"select-a-parent-page-key-Sapp20": "Vælg en parent page", -"is-home-key-IH7": "Forside", -"if-yes-this-page-will-be-your-home-key-IytpwbyH34": "Hvis valgt, vil denne side blive brugt som forside", -"is-shop-key-IS7": "Shop", -"if-yes-this-page-will-accept-products-to-be-added-to-it-key-Iytpwaptbati55": "Hvis valgt, vil denne side kunne bruges til produkter", -"choose-page-layout-key-CPL18": "Vælg Side Layout", -"inherit-key-I7": "Nedarv", -"no-posts-here-key-NPH13": "Ingen Indlæg Her", -"live-edit-key-LE9": "Live Edit", -"deleted-content-key-Dc15": "Slettet indhold", -"delete-forever-key-Df14": "Slet permanent", -"restore-selected-key-Rs16": "Gendan valgte", -"are-you-sure-you-want-to-delete-those-pages-forever-key-Aysywtdtpf51": "Er du sikker på at du ønsker at slette de valgte sider permanent?", -"do-you-want-to-delete-this-content-forever-key-Dywtdtcf42": "Er du sikker på at du ønsker at slette dette indhold permanent?", -"content-is-deleted-key-Cid18": "Indhold slettet!", -"are-you-sure-you-want-restore-the-selected-content-key-Aysywrtsc50": "Er du sikker på at du ønsker at gendanne det valgte indhold?", -"content-is-restored-key-Cir19": "Indhold gendannet!", -"restore-this-content-key-Rtc20": "Gendan dette indhold", -"select-all-key-SA10": "Vælg Alle", -"unselect-all-key-UA12": "Fravælg Alle", -"restore-key-R7": "Gendan", -"my-shop-key-MS7": "Min Shop", -"manage-this-gallery-key-Mtg19": "Administrer galleri", -"the-image-is-added-to-the-gallery-key-Tiiattg33": "Billede tilføjet til galleri", -"browse-uploaded-key-Bu15": "Gennemgå uploadede", -"selected-key-s8": "valgt", -"image-settings-key-IS14": "Billede Indstillinger", -"image-title-key-It11": "Billede Titel", -"featured-image-key-fi14": "fremhævet billede", -"image-description-key-ID17": "Billede Beskrivelse", -"price-key-P5": "Pris", -"product-title-key-Pt14": "Produkt titel ", -"editing-product-key-EP15": "Redigerer Produkt", -"back-key-B4": "Tilbage", -"full-screen-key-Fs11": "Fuld skærm", -"add-to-categories-key-Atc17": "Tilføj til kategorier", -"price-fields-key-PF12": "Pris og Felter", -"shipping-options-key-SO16": "Forsendelse og Valgmuligheder", -"not-found-key-nf9": "ikke fundet", -"create-it-key-Ci9": "Opret", -"select-parent-key-Sp13": "Vælg overlæggende", -"content-saved-key-Cs13": "Indhold gemt!", -"please-enter-title-key-Pet18": "Indsæt venligst en titel", -"please-enter-content-key-Pec20": "Indsæt venligst noget indhold", -"close-key-c5": "luk", -"add-new-field-key-ANF13": "Tilføj Nyt Felt", -"text-field-key-TF10": "Tekst Felt", -"single-choice-key-SC13": "Single choice", -"dropdown-key-D8": "Dropdown", -"multiple-choices-key-Mc16": "Multiple choices", -"number-key-N6": "Tal", -"web-site-key-WS8": "Website", -"file-upload-key-FU11": "Fil Upload", -"property-key-P8": "Egenskab", -"items-in-stock-key-Iis14": "Enheder på lager", -"how-many-items-of-this-product-you-have-in-stock-key-Hmiotpyhis48": "Hvor mange enheder af denne vare, du har på lager", -"no-limit-key-NL8": "Ingen Grænse", -"this-item-is-out-of-stock-and-cannot-be-ordered-key-Tiioosacbo47": "Denne vare er ikke på lager og kan ikke bestilles.", -"out-of-stock-key-Oos12": "Ikke på lager", -"sku-number-key-SN10": "Lagerenhed (SKU)", -"stock-keeping-unit-the-number-assigned-to-a-product-by-a-ret-key-SKUTnatapbarstitppoamotm143": "Stock Keeping Unit - SKU er en forkortelse for Stock Keeping Unit og er en unik kode, som bliver tildelt et produkt for at kunne identificere det. \n Den hjælper dig med at holde styr på dit lager.", -"set-your-shipping-options-key-Syso25": "Indtast dine leverings muligheder", -"set-your-order-options-key-Syoo22": "Indtast dine ordre muligheder", -"order-options-key-OO13": "Ordre Indstillinger", -"free-shipping-key-FS13": "Gratis Levering", -"depth-key-D5": "Dybde", -"fixed-cost-key-FC10": "Fast Pris", -"additional-shipping-cost-will-be-added-on-purchase-key-ASCwbaop50": "Yderligere leveringsomkostninger vil blive pålagt købet", -"max-quantity-per-order-key-Mqpo22": "Maks antal per ordre", -"are-you-sure-you-want-to-reset-the-content-of-this-page-all-key-AysywtRtcotpAytwblf90": "Er du sikker på at du ønsker at nulstille indholdet på denne side? Dette kan ikke fortrydes!", -"content-was-resetted-key-Cwr20": "Indhold nulstillet!", -"go-to-the-new-page-key-Gttnp18": "Gå til den nye side?", -"og-images-key-OI9": "OG Billeder", -"more-options-key-Mo12": "Flere valg", -"duplicate-key-D9": "Dupliker", -"reset-content-key-RC13": "Nulstil Indhold", -"set-password-key-Sp12": "Indstil adgangskode", -"type-password-here-key-Tph18": "Skriv adgangskode her", -"require-password-key-Rp16": "Kræv adgangskode", -"http-yoursite-com-key-h15": "https://dinhjemmeside.dk", -"author-key-A6": "Forfatter", -"warning-advanced-action-key-WAa23": "Advarsel! Dette er en avanceret handling!", -"do-not-change-these-settings-unless-you-know-what-you-are-do-key-Dnctsuykwyad63": "Skift ikke nogle indstillinger med mindre du er helt sikker!", -"changing-the-content-type-to-different-than-key-Ctcttdt43": "Skift af indholdstype til noget andet end", -"is-advanced-action-please-read-the-documentation-and-conside-key-iaaPrtdacntctct92": "dette er en avanceret indstilling. Læs venligst dokumentation og overvej om det er nødvendigt at skifte indholdstype", -"tags-labels-for-this-content-use-comma-to-add-multiple-tags-key-TftcUctamt58": "Tags for dette indhold. Brug komma for at tilføje flere tags", -"download-key-D8": "Download", -"upload-key-U6": "Upload", -"published-key-P9": "Udgivet", -"move-to-trash-key-Mtt13": "Flyt til papirkurv", -"sort-key-S4": "Sorter", -"field-key-F5": "Felt", -"date-key-D4": "Dato", -"type-key-T4": "Type", -"name-key-N4": "Navn", -"value-key-V5": "Værdi", -"are-you-sure-you-want-to-copy-this-page-key-Aysywtctp39": "Er du sikker på at du ønsker at kopiere denne side?", -"content-was-copied-key-Cwc18": "Indhold kopieret", -"are-you-sure-you-want-to-delete-this-key-Aysywtdt36": "Er du sikker på at du ønsker at slette dette", -"content-was-sent-to-trash-key-CwstT25": "Indhold flyttet til papirkurv", -"are-you-sure-you-want-to-change-the-content-type-key-Aysywtctct48": "Er du sikker på at du ønsker at ændre indholdstypen", -"please-consider-the-documentation-for-more-info-key-Pctdfmi47": "Læs dokumentationen for mere information", -"are-you-sure-you-want-to-change-the-content-subtype-key-Aysywtctcs51": "Er du sikker på at du ønsker at ændre indholdets undertype", -"describe-your-page-in-short-key-Dypis27": "Giv en kort beskrivelse af din side", -"meta-title-key-MT10": "Meta Title", -"title-to-appear-on-the-search-engines-results-page-key-Ttaotserp50": "Den titel, der vises i søgemaskinerne", -"meta-keywords-key-MK13": "Meta Keywords", -"type-keywords-that-describe-your-content-example-blog-online-key-TktdycEBONPfSe85": "Skriv de nøgleord (keywords), der beskriver dit indhold. F.eks: Blog, Ferie, Mad, Opskrifter osv.", -"if-set-this-the-user-will-be-redirected-to-the-new-url-when-key-IsttuwbrttnUwvtp75": "Hvis udfyldt, vil den besøgende blive viderestillet til en anden URL", -"if-set-to-yes-this-page-will-require-login-from-a-registered-key-Istytpwrlfaruiotbo87": "Hvis sat til ja, vil siden kun kunne ses af besøgende, som er logget ind", -"redirect-to-url-key-Rtu15": "Viderestil til URL", -"require-login-key-Rl13": "Kræv login", -"content-type-key-Ct12": "Indholdstype", -"change-content-type-key-Cct19": "Skift indholdstype", -"change-content-sub-type-key-Ccst23": "Skift indholds undertype", -"created-on-key-Co10": "Oprettet", -"updated-on-key-uo10": "Sidst opdateret", -"product-name-key-Pn12": "Produkt navn", -"in-stock-key-IS8": "På Lager", -"a-sturdy-handwoven-fabric-makes-this-american-apparel-indigo-key-AshfmtAAiadatycwTianbpot145": "A sturdy, handwoven fabric makes this American Apparel indigo-T a dependable addition to your casual wardrobe. This is a no bullshit plain ol’ t-shirt.", -"information-key-I11": "Information", -"fabric-key-F6": "Stof", -"origin-key-O6": "Afstamning", -"handmade-in-aus-key-HiA15": "Handmade in Aus", -"weight-key-W6": "Vægt", -"sizes-key-S5": "Størrelser", -"related-products-key-RP16": "Lignende Produkter", -"price-key-p5": "pris", -"click-on-settings-to-edit-your-custom-fields-key-Costeycf44": "Klik på indstillinger for at ændre i dine brugerdefinerede felter.", -"description-key-D11": "Beskrivelse", -"edit-category-key-Ec13": "Rediger kategori", -"bulk-actions-key-Ba12": "Masse handlinger", -"move-to-category-key-Mtc16": "Flyt til kategori", -"open-all-key-OA8": "Åbn Alle", -"close-all-key-CA9": "Luk All", -"changes-are-saved-key-Cas17": "Ændringer gemt", -"recent-orders-key-RO13": "Seneste ordrer", -"add-new-order-key-Ano13": "Tilføj ny ordre", -"go-to-orders-key-Gto12": "Gå til ordre", -"list-of-all-orders-key-Loao18": "Liste med alle ordrer", -"not-paid-key-Np8": "Ikke betalt", -"pending-key-P7": "Afventende", -"view-order-key-Vo10": "Vis ordre", -"customer-information-key-CI20": "Kundeinformation", -"client-name-key-CN11": "Kunde Navn:", -"e-mail-key-E5": "Email:", -"shipping-information-key-SI20": "Forsendelses Information", -"address-key-A7": "Adresse", -"close-key-C5": "Luk", -"completed-key-C9": "Behandlet", -"phone-key-P5": "Telefon:", -"settings-key-S8": "Indstillinger", -"signing-in-key-Si10": "Logger ind...", -"welcome-key-W7": "Velkommen", -"go-to-key-Gt5": "Gå til", -"compile": "Compile", -"no-key-N2": "Nej", -"yes-key-Y3": "Ja", -"stable": "Stable", -"beta": "Beta", -"disable": "Deaktiver", -"advanced-settings-updated-key-Asu25": "Avancerede indstillinger opdateret", -"the-cache-was-cleared": "Cache blev ryddet", -"the-db-was-reloaded": "Database genindlæst", -"custom-head-tags-key-Cht16": "Brugerdefinerede tags i head", -"custom-footer-tags": "Brugerdefinerede tags i footer", -"file-key-f4": "fil", -"developer-tools": "Udviklerværktøjer", -"clear-cache-key-Cc11": "Ryd cache", -"reload-database-key-RD15": "Genindlæs database", -"internal-settings-key-Is17": "Interne indstillinger", -"live-edit-settings": "Live Edit indstillinger", -"website-name-key-WN12": "Hjemmeside Navn", -"this-is-very-important-for-search-engines-key-Tivifse41": "Dette er meget vigtigt for søgemaskinerne", -"your-website-will-be-categorized-by-many-criteria-and-its-na-key-Ywwbcbmcainioot77": "Din hjemmeside vil blive indekseret baseret på mange kriterier, hvoraf navnet er et af dem", -"website-description-key-WD19": "Hjemmeside Beskrivelse", -"describe-what-your-website-is-about-key-Dwywia35": "Beskriv hvad din hjemmeside handler om", -"website-keywords-key-WK16": "Hjemmeside Keywords", -"ex-cat-videos-of-cats-funny-cats-cat-pictures-cat-for-sale-c-key-ECVoCFCCPCfSCPaF80": "F.eks.: Kat, Katte Videoer, Sjove Katte, Katte Billeder, Katte Produkter", -"select-how-many-posts-or-products-you-want-to-be-shown-per-p-key-Shmpopywtbspp63": "Vælg hvor mange indlæg eller produkter, du ønsker vist pr side", -"time-zone-key-TZ9": "Tidszone", -"are-you-sure-you-want-to-delete-the-selected-posts-key-Aysywtdtsp50": "Er du sikker på at du ønsker at slette de valgte indlæg", -"do-you-want-to-delete-this-post-key-Dywtdtp31": "Er du sikker på at du ønsker at slette dette indlæg", -"delete-key-D6": "Slet", -"edit-key-E4": "Rediger", -"trash-key-T5": "Papirkurv", -"visual-editor-key-VE13": "Visuel Editor", -"daily-key-D5": "Daglig", -"weekly-key-W6": "Ugentlig", -"monthly-key-M7": "Månedlig", -"views-key-v5": "Visninger", -"users-online-key-Uo12": "Besøgende online", -"your-a-need-better-browser-to-run-microweber-key-YanbbtrM44": "Du skal bruge en nyere browser for at kunne køre Microweber", -"edit-order-key-Eo10": "Rediger ordre", -"add-order-key-Ao9": "Opret ordre", -"add-new-page-key-Anp12": "Opret side", -"add-new-post-key-Anp12": "Opret indlæg", -"add-new-product-key-Anp15": "Opret produkt", -"add-new-category-key-Anc16": "Opret kategori", -"shop-settings-key-Ss13": "Shop indstillinger", -"my-modules-key-MM10": "Mine Moduler", -"a-mobile-version-is-coming-in-the-future-key-Amvicitf40": "En modilversion kommer i fremtiden!", -"currently-microweber-is-designed-to-be-used-in-larger-screen-key-CMidtbuils61": "Microweber er på nuværende tidspunkt designet til brug på store skærme.", -"continue-anyway-key-Ca15": "Fortsæt alligevel", -"visual-editor-key-Ve13": "Visuel Editor", -"website-settings-key-WS16": "Hjemmeside Indstillinger", -"disable-navigation-transparency-key-Dnt31": "Deaktiver navigation gennemsigtighed", -"show-shopping-cart-in-header-key-Sscih28": "Vis indkøbskurv i header", -"show-search-field-in-header-key-Ssfih27": "Vis søgefelt i header", -"turn-on-page-preloader-key-ToPP22": "Aktiver Preloader", -"poster-with-background-key-PWB22": "Plakat med Baggrund", -"the-footer-is-turned-off-for-website-key-TFitofw36": "Footer er deaktiveret på hjemmesiden", -"settings-are-updated-key-Sau20": "Indstillinger opdateret!", -"open-close-menu-key-Om14": "Åbn/Luk menu", -"no-results-were-found-key-Nrwf21": "Ingen resultater fundet", -"you-can-easily-grab-any-module-and-insert-it-in-your-content-key-YcegaMaiiiyc60": "Du kan nemt indsætte ethvert modul i dit indhold.", -"reset-content-key-Rc13": "Nulstil indhold", -"tools-key-T5": "Værktøjer", -"css-editor-key-CE10": "CSS Editor", -"html-editor-key-HE11": "HTML Editor", -"basic-mode-key-BM10": "Basic Mode", -"if-you-want-to-edit-this-section-you-have-to-switch-do-key-Iywtetsyhtsd54": "If you want to edit this section you have to switch do", -"switch-key-S6": "Skift", -"more-key-m4": "mere", -"quote-key-Q5": "Citat", -"icon-key-I4": "Ikon", -"create-draggable-element-from-selected-text-key-CDEfst43": "Opret Trækbart Element fra den valgte tekst.", -"color-key-C5": "Farve", -"highlight-code-key-h13": "highlight_code", -"image-rollover-key-IR14": "Billede Rollover", -"sharer-key-S6": "Deling", -"social-links-key-SL12": "Sociale Links", -"facebook-page-key-Fp13": "Facebook side", -"twitter-feed-key-Tf12": "Twitter feed", -"tweet-embed-key-TE11": "Tweet Embed", -"slick-slider-key-SS12": "Slick Slider", -"bxslider-key-b8": "bxSlider", -"slider-key-S6": "Slider", -"pop-up-key-P5": "Popup", -"before-after-key-B11": "Før/Efter", -"logo-key-L4": "Logo", -"pdf-key-P3": "PDF", -"skills-key-S6": "Færdigheder", -"categories-images-key-CI17": "Kategori Billeder", -"accordion-key-A9": "Accordion", -"tabs-key-T4": "Tabs", -"breadcrumb-key-B10": "Brødkrummer", -"newsletter-key-N10": "Nyhedsbrev", -"faq-key-F3": "FAQ", -"calendar-key-C8": "Kalender", -"testimonials-key-T12": "Testimonials", -"carousel-grid-key-CG13": "Carousel Grid", -"parallax-key-P8": "Parallax", -"pricing-table-key-PT13": "Prisoversigt", -"video-2-key-V27": "Video 2", -"has-been-added-to-your-cart-key-hbatyc27": "er blevet tilføjet til din kurv", -"continue-shopping-key-Cs17": "Fortsæt med at handle", -"cart-key-C4": "Kurv", -"call-us-key-Cu7": "Ring til os", -"type-your-search-and-hit-enter-key-Tysahe30": "Indtast din søgning og tryk på enter", -"search-site-key-SS11": "Søg på side", -"categories-key-C10": "Kategorier", -"tags-key-T4": "Tags", -"about-us-key-AU8": "Om Os", -"we-re-a-digital-focussed-collective-working-with-individuals-key-Wadfcwwiabtereop118": "We're a digital focussed collective working with individuals and businesses to establish rich, engaging online presences.", -"free-cms-website-builder-key-FCWB24": "Gratis CMS og Website Builder", -"subscribe-key-S9": "Abonner", -"get-monthly-updates-and-free-resources-key-Gmuafr38": "Få månedlige opdateringer og gratis materiale.", -"connect-with-us-key-CwU15": "Forbind med Os", -"subtotal-key-S8": "Subtotal", -"total-key-T5": "Total", -"your-cart-key-YC9": "Din Kurv", -"0-items-on-your-cart-key-0IOYC20": "0 VARER I DIN KURV", -"checkout-now-key-CN12": "Gå til Betaling", -"title-key-T5": "Titel", -"showcase-blog-posts-in-a-classic-column-arrangement-key-Sbpiacca51": "Fremvis blogindlæg i et klassisk kolonne-arrangement", -"go-key-G2": "Gå", -"settings-are-saved-key-Sas18": "Indstillinger gemt", -"clean-container-key-CC15": "TOM CONTAINER", -"cover-media-1-key-CM113": "Cover Media 1", -"simple-page-title-slogan-key-SPTS24": "Simpel Side Titel + Slogan", -"team-card-key-TC9": "Team Card", -"4-columns-icons-with-parallax-key-4CiwP29": "4 Kolonne Ikoner med Parallax", -"icons-features-1-key-IF116": "Ikon Features 1", -"testimonial-key-T11": "Testimonial", -"blog-posts-key-Bp10": "Blogindlæg", -"clients-brands-key-CB14": "Kunder / Brands", -"text-with-button-in-blue-background-key-TwBiBb35": "Tekst med Knap på Blå baggrund", -"left-image-right-text-key-LIRT21": "Billede Venstre - Tekst Højre", -"icons-with-text-in-blue-background-key-IwTiBb34": "Ikoner med Tekst på Blå baggund", -"left-text-right-image-key-LTRI21": "Tekst Venstre - Billede Højre", -"text-with-skills-key-TwS16": "Tekst med Færdigheder", -"team-card-full-width-key-TCFW20": "Team Card Fuld Bredde", -"text-in-black-background-key-TiBb24": "Tekst på Sort baggrund", -"posts-in-slider-key-PiS15": "Indlæg i Slider", -"long-feature-right-key-LFR18": "Lang Feature Højre", -"long-feature-left-key-LFL17": "Lang Feature Venstre", -"boxes-with-icons-and-text-key-BwIaT25": "Kasser med Ikoner og Tekst", -"title-button-with-background-key-TBwB28": "Titel + Knap med Baggrund", -"cover-device-key-CD12": "Cover Device", -"cover-media-5-key-CM513": "Cover Media 5", -"cover-split-key-CS11": "Cover Split", -"cover-with-form-key-CWF15": "Cover Med Formular", -"cover-media-3-key-CM313": "Cover Media 3", -"cover-with-paragraph-key-CwP20": "Cover med Tekstafsnit", -"cover-with-subscriber-key-CwS21": "Cover med Abonnent", -"cover-with-text-2-key-CwT217": "Cover med Tekst 2", -"cover-with-text-3-key-CwT317": "Cover med Tekst 3", -"cover-youtube-background-key-CYB24": "Cover YouTube Baggrund", -"long-text-title-key-LTT15": "Lang Tekst Titel", -"title-1-key-T17": "Titel 1", -"title-2-key-T27": "Titel 2", -"title-3-key-T37": "Titel 3", -"icon-features-10-key-IF116": "Ikon Features 10", -"icon-features-11-key-IF116": "Ikon Features 11", -"icon-features-2-key-IF215": "Ikon Features 2", -"icon-features-3-key-IF315": "Ikon Features 3", -"icon-features-4-key-IF415": "Ikon Features 4", -"title-image-bg-key-TIB14": "Titel Billede Baggrund", -"title-image-bg-2-key-TIB216": "Titel Billede Baggrund 2", -"title-image-bg-3-key-TIB316": "Titel Billede Baggrund 3", -"accordion-multiple-open-key-AMO23": "Accordion Flere Åbne", -"cta-with-form-2-key-CwF215": "Call to Action med Formular 2", -"contacts-form-with-features-key-CFwF27": "Kontaktformular med Feature", -"tab-features-3-key-TF314": "Tab Features 3", -"contact-form-1-key-CF114": "Kontaktformular 1", -"google-map-key-GM10": "Google Map", -"contacts-blocks-with-map-key-CBwM24": "Kontakter Kasser med Kort", -"contact-methods-key-CM15": "Kontakt Metoder", -"metrics-bars-key-MB12": "Metrics Bars", -"clean-text-key-CT10": "Ren Tekst", -"long-feature-2-left-key-LF2L19": "Lang Feature 2 Venstre", -"long-feature-2-right-key-LF2R20": "Lang Feature 2 Højre", -"icon-cards-key-IC10": "Ikon Cards", -"cta-basic-key-CB9": "Call to Action Basic", -"portfolio-with-categories-key-PWC25": "Portfolio med Kategorier", -"portfolio-with-categories-full-width-key-PWCFW36": "Portfolio med Kategorier Fuld Bredde", -"shop-products-key-Sp13": "Shop produkter", -"shop-products-2-key-Sp215": "Shop produkter 2", -"shop-products-3-key-Sp315": "Shop produkter 3", -"tab-features-2-key-TF214": "Tab Features 2", -"icon-features-8-key-IF815": "Ikon Features 8", -"icon-features-7-key-IF715": "Ikon Features 7", -"image-cards-1-key-IC113": "Billede Cards 1", -"page-title-key-PT10": "Side Titel", -"full-width-slider-key-FWS17": "Fuld Bredde Slider", -"gallery-full-width-key-GFW18": "Galleri Fuld Bredde", -"gallery-key-G7": "Galleri", -"cover-media-with-video-key-CMWV22": "Cover Media med Video", -"default-static-layouts-key-Dsl22": "Standard statiske layouts", -"image-with-text-key-IwT15": "Billede med Tekst", -"right-image-left-text-key-RILT21": "Billede Højre - Tekst Venstre", -"text-amp-button-in-backgrounded-box-key-TaBiBB35": "Tekst & Knap med Baggrund", -"simple-title-amp-text-key-STaT21": "Simpel Titel & Tekst", -"text-under-image-key-TuI16": "Tekst under Billede", -"icons-with-information-key-IwI22": "Ikoner med Information", -"full-screen-background-image-with-text-key-FsBIwt38": "Fuld Skærm Baggrundsbillede med Tekst", -"image-text-key-IT10": "Billede + Tekst", -"features-key-F8": "Features", -"puzzle-key-P6": "Puslespil", -"three-columns-key-TC13": "Tre Kolonner", -"two-columns-with-pictures-key-TCwP25": "To Kolonner med Billeder", -"two-columns-amp-picture-key-TCaP23": "To Kolonner & Billeder", -"checkout-key-C8": "Gå til Betaling", -"search-key-S6": "Søg", -"add-to-cart-key-Atc11": "Tilføj til Kurv", -"saving-key-S6": "Gemmer", -"all-changes-are-saved-key-Acas21": "Alle ændringer gemt", -"back-to-admin-key-BtA13": "Tilbage til Admin", -"edit-current-key-Ec12": "Rediger nuværende", -"next-key-N4": "Næste", -"unpublish-key-U9": "Fjern udgivelse", -"publish-key-P7": "Udgiv", -"template-settings-key-TS17": "Skabelon Indstillinger", -"logout-key-L6": "Log ud", -"advanced-mode-key-AM13": "Advanced Mode", -"cancel-key-C6": "Annuller", -"previous-key-P8": "Tilbage", -"insert-media-key-IM12": "Indsæt Medie", -"bold-key-B4": "Bold", -"italic-key-I6": "Italic", -"underline-key-U9": "Underline", -"strike-through-key-ST14": "Strike Through", -"format-key-F6": "Formater", -"heading-key-H7": "Overskrift", -"paragraph-key-P9": "Paragraph", -"block-key-B5": "Block", -"pre-formatted-key-Pf13": "Preformatteret", -"font-size-key-FS9": "Skriftstørrelse", -"size-key-S4": "Størrelse", -"insert-key-I6": "Indsæt", -"horizontal-rule-key-HR15": "Horizontal Streg", -"box-key-B3": "Boks", -"table-key-T5": "Tabel", -"code-format-key-Cf11": "Kode format", -"html-key-H4": "HTML", -"font-color-key-FC10": "Skrift Farve", -"font-background-color-key-FBC21": "Skrift Baggrundsfarve", -"add-edit-link-key-AL12": "Tilføj/Rediger Link", -"remove-link-key-RL11": "Fjern Link", -"ordered-list-key-OL12": "Nummereret Liste", -"unordered-list-key-UL14": "Punkt Liste", -"indent-key-I6": "Ryk ind", -"outdent-key-O7": "Ryk ud", -"align-left-key-AL10": "Juster Venstre", -"align-center-key-AC12": "Juster Center", -"align-right-key-AR11": "Juster Højre", -"align-both-sides-key-ABS16": "Lige Højre- og Venstre Margen", -"remove-formatting-key-RF17": "Fjern Formattering", -"search-modules-key-SM14": "Søg i Moduler", -"switch-to-layouts-key-StL17": "Skift til Layouts", -"add-edit-remove-link-key-AL18": "Tilføj/Rediger/Fjern Link", -"font-key-F4": "Skrifttype", -"width-key-W5": "Bredde", -"auto-key-A4": "Auto", -"spacing-key-S7": "Afstand", -"margin-key-M6": "Margen", -"top-key-T3": "Top", -"left-key-L4": "Venstre", -"all-key-A3": "Alle", -"right-key-R5": "Højre", -"bottom-key-B6": "Bund", -"padding-key-P7": "Padding", -"border-key-B6": "Kant", -"remove-borders-key-RB14": "Fjern Kanter", -"border-left-key-BL11": "Kant Venstre", -"border-right-key-BR12": "Kant Højre", -"border-top-key-BT10": "Kant Top", -"border-bottom-key-BB13": "Kant Bund", -"border-style-key-BS12": "Kant Style", -"solid-key-S5": "Solid", -"dotted-key-D6": "Punkter", -"dashed-key-D6": "Streger", -"border-width-key-BW12": "Kant Bredde", -"background-key-B10": "Baggrund", -"background-color-key-BC16": "Baggrunds Farve", -"background-image-key-BI16": "Baggrunds Billede", -"repeat-key-R6": "Gentag", -"no-repeat-key-N8": "Gentag ikke", -"horizontally-key-H12": "Horizontalt", -"vertically-key-V10": "Vertikalt", -"both-key-B4": "Begge", -"background-position-key-BP19": "Baggrund Placering", -"left-top-key-LT8": "Venstre Top", -"center-top-key-CT10": "Center Top", -"right-top-key-RT9": "Højre Top", -"left-center-key-LC11": "Venstre Center", -"center-center-key-CC13": "Center Center", -"right-center-key-RC12": "Højre Center", -"left-bottom-key-LB11": "Venstre Bund", -"center-bottom-key-CB13": "Center Bund", -"right-bottom-key-RB12": "Højre Bund", -"effects-key-E7": "Effekter", -"drop-shadow-key-DS11": "Drop Shadow", -"position-key-P8": "Placering", -"blur-key-B4": "Sløring", -"opacity-key-O7": "Gennemsigtighed", -"radius-key-R6": "Radius", -"modules-key-M7": "Moduler", -"layouts-key-L7": "Layouts", -"text-key-T4": "Tekst", -"picture-key-P7": "Billede", -"empty-element-key-EE13": "Tomt Element", -"multiple-columns-key-MC16": "Flere Kolonner", -"picture-gallery-key-PG15": "Billede Galleri", -"video-key-V5": "Video", -"button-key-B6": "Knap", -"facebook-like-key-FL13": "Facebook Like", -"contact-form-key-Cf12": "Kontakt Formular", -"google-maps-key-GM11": "Google Maps", -"posts-list-key-PL10": "Indlæg Liste", -"content-key-C7": "Indhold", -"shopping-cart-key-SC13": "Indkøbskurv", -"menu-key-M4": "Menu", -"ants-key-A4": "Myrer", -"pages-menu-key-PM10": "Sider Menu", -"audio-key-A5": "Lyd", -"forgot-password-key-Fp15": "Glemt adgangskode", -"login-key-L5": "Log ind", -"registration-key-R12": "Registrering", -"embed-code-key-EC10": "Indlejrings Kode", -"simple-text-key-ST11": "Simpel Tekst", -"text-2-columns-key-T2c14": "Tekst 2 kolonner", -"three-columns-with-pictures-key-TCwP27": "Tre Kolonner med Billeder", -"text-3-columns-and-wide-picture-key-T3cawp31": "Tekst (3 kolonner) og Bredt Billede", -"4-pictures-key-4P10": "4 Billeder", -"double-floated-image-with-paragraph-key-Dfiwp35": "Dobbelt - Svævende Billede med Tekstafsnit", -"image-categories-text-key-ICT21": "Billede Kategorier Tekst", -"header-image-text-newsletter-banners-and-categories-key-HItnbac51": "Header Billede tekst, nyhedsbrev, bannere og kategorier.", -"image-text-categories-and-banners-key-Itcab33": "Billede, tekst, kategorier og bannere.", -"last-articles-key-La13": "Seneste Artikler", -"go-to-marketplace-key-GtM17": "Gå til Marketplace", -"shop-key-S4": "Shop", -"product-key-P7": "Produkt", -"page-key-P4": "Side", -"post-key-P4": "Indlæg", -"category-key-C8": "Kategori", -"notifications-key-N13": "Notifikationer", -"manage-website-key-MW14": "Administrer Hjemmeside", -"manage-modules-key-MM14": "Administrer Moduler", -"file-manager-key-FM12": "Fil Manager", -"updates-key-U7": "Opdateringer", -"suggest-a-feature-key-Saf17": "Foreslå en Funktion", -"update-your-browser-key-Uyb19": "Opdater din browser", -"my-profile-key-MP10": "Min profil", -"manage-users-key-MU12": "Administrer brugere", -"support-key-S7": "Support", -"view-website-key-VW12": "Vis Hjemmeside", -"add-new-key-AN7": "Tilføj Ny", -"save-key-S4": "Gem", -"dashboard-key-D9": "Dashboard", -"website-key-W7": "Hjemmeside", -"pages-key-P5": "Sider", -"add-key-A3": "Tilføj", -"posts-key-P5": "Indlæg", -"products-key-P8": "Produkter", -"orders-key-O6": "Ordrer", -"clients-key-C7": "Kunder", -"marketplace-key-M11": "Marketplace", -"template-key-T8": "Skabelon", -"login-register-key-LR14": "Log ind & Registrer", -"advanced-key-A8": "Avanceret", -"language-key-L8": "Sprog", -"users-key-U5": "Brugere", -"quick-links-key-QL11": "Quick Links", -"view-orders-key-VO11": "Vis Ordrer", -"comments-key-C8": "Kommentarer", -"upgrades": "Opgraderinger", -"your-a-need-better-browser-to-run-b-microweber-b": "Du skal bruge en bedre browser for at køre Microweber", -"shipping": "Levering", -"language-settings-are-saved": "Sprog indstillinger gemt", -"website-language": "Hjemmeside Sprog", -"you-can-set-the-default-language-for-your-website": "Du kan indstille standard sproget på din hjemmeside.", -"edit-your-language-file": "Rediger din sprog fil", -"traffic-statistic": "Trafik Statistik", -"basic-statistics": "Basisk Statistik", -"upgrade-your-real-time-statistics": "Opgrader dine real-time statistikker", -"upgrade": "Opgrader", -"ip": "IP", -"last-pages": "Seneste sider", -"lock-unlock-the-sidebar": "Lås/Oplås sidebar", -"search-for-posts": "Søg efter Indlæg", -"creating-new": "Opretter ny", -"add-images": "Tilføj Billeder", -"the-first-image-will-be-cover-photo": "Det første billede vil være dit cover billede", -"click-to-change": "Klik for at ændre", -"your-cart-is-empty": "Din kurv er tom", -"continue-reading": "Fortsæt med at læse", -"free": "Gratis", -"hello-world": "Hello world", -"include": "Inkluder", -"user-content": "Bruger indhold", -"whmcs": "WHMCS", -"multi-site": "Multi site", -"my-module": "Mit modul", -"three-coloms": "Tre Kolonner", -"two-coloms-with-pictures": "To Kolonner med Billeder", -"two-coloms-amp-picture": "To Kolonner & Billede", -"team": "Team", -"actions": "Handlinger", -"undo": "Fortryd", -"redo": "Gendan", -"show": "Vis", -"online-shop": "Online shop", -"files": "Filer", -"site-stats": "Hjemmeside Statistikker", -"backup": "Backup", -"help": "Hjælp", -"magento-importer": "Magento Importer", -"rating": "Vurdering", -"notif": "Notif", -"select-a-page-to-import-the-content-to": "Vælg en side at importere indholdet til", -"start-import": "Start import", -"create-database-backup": "Opret Database Backup", -"create-full-backup": "Opret Fuld Backup", -"upload-backup": "Upload backup", -"available-backups": "Tilgængelige Backups", -"yahoo": "Yahoo", -"hotmail": "Hotmail", -"redirect-domain": "Viderestil Domæne", -"users-url-settings": "Brugers URL Indstillinger", -"this-template-has-custom-styles-applied-from-the-design-tool": "Denne skabelon har brugerdefinerede styles, som er sat i 'design' værktøjet i Live Edit. Klik her for at rydde dem og nulstil skabelonen til standard.", -"clear-custom-style": "Ryd custom style", -"advanced-functionality": "Avanceret funktionalitet", -"you-can-put-custom-html-in-the-site-head-tags-please-put-onl": "Du kan indsætte HTML i sidens head-tags. Indsæt venligs kun gyldige meta-tags, da du kan risikere at ødelægge hjemmesiden.", -"installing": "Installerer", -"there-was-a-problem-connecting-to-the-server": "Der opstod et problem i forbindelsen til serveren", -"checking": "Checker", -"new-updates": "nye opdateringer", -"current-version": "Nuværende Version", -"check-for-updates": "Check efter opdateringer", -"we-are-constantly-trying-to-improve-microweber": "Vi forsøger hele tiden at forbedre Microweber", -"our-team-and-many-contributors-around-the-world-are-working": "Vores team og mange hjælpere rundt omkring i verden arbejder hårdt hver dag for at give dig et godt og stabilt system, og nye opdateringer", -"please-excuse-us-in-case-you-find-any-problems-and": "Vi undskylder hvis du oplever fejl.", -"write-us-a-message": "Skriv en besked til os", -"for-all-things-you-wish-to-see-in-microweber-or-in-any": "med alle de ting, du ønsker at se i Microweber eller i et", -"module": "Modul", -"install-selected-updates": "Installer Valgte Opdateringer", -"create-new-page": "Opret ny side", -"select-the-menu-you-want-to-edit": "Vælg den Menu, du ønsker at redigere", -"select-from": "Vælg fra", -"links": "Links", -"edit-existing-links-buttons": "Rediger eksisterende links/knapper", -"posted-on": "Lagt op den", -"options": "Valgmuligheder", -"search-in-page": "Søg på side", -"editting": "Redigerer" -} \ No newline at end of file diff --git a/update/userfiles/modules/microweber/microweber.css b/update/userfiles/modules/microweber/microweber.css deleted file mode 100644 index 31ac2765..00000000 --- a/update/userfiles/modules/microweber/microweber.css +++ /dev/null @@ -1,791 +0,0 @@ -/* - * Microweber - Framework - * - * Default styles - * Do not change anything! - * - */ - -* { - margin: 0; - padding: 0; - -webkit-overflow-scrolling: touch; -} - - -body { - font-feature-settings: 'liga'; - cursor: default; -} - -.mw-defaults { - line-height: normal; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -.mw-defaults * { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - font-family: Verdana, Geneva, sans-serif; -} - -.mw-defaults li { - line-height: 22px; -} - -.mw-defaults { - font-size: 12px; - color: #212121; -} - -.mw-defaults li, .mw-defaults ol, .mw-defaults ul { - margin: 0; - padding: 0; -} - -#mw_toolbar_back_to_live_edit { - position: fixed; - top: 0; - left: 50%; - margin-left: -75px; - z-index: 99999; - /*border-radius: 0 0 3px 3px;*/ - border-top-right-radius: 0; - border-top-left-radius: 0; - - font-family: 'Open Sans', sans-serif !important; - background-color: #0084d8; - border-color: #0084d8; - padding: 0 12px; - font-size: 12px; - color: #fff; - height: 32px; - line-height: 30px; -} - -#mw_toolbar_back_to_live_edit:hover { - background-color: #fff; - border-color: #fff; - color: #212121; - border-top-right-radius: 0; - border-top-left-radius: 0; - text-decoration: none; -} - -#mw_toolbar_back_to_live_edit i { - font-family: 'Open Sans', sans-serif !important; - font-size: 21px; - margin-right: 3px; -} - -body.mw-preview { - -moz-transform: scale(0.36); - -moz-transform-origin: 0 0; - -o-transform: scale(0.36); - -o-transform-origin: 0 0; - -webkit-transform: scale(0.36); - -webkit-transform-origin: 0 0; - transform: scale(0.36); - transform-origin: 0 0; -} - -.mw-empty { - display: none; -} - -.mw-empty-element:empty { - display: none; -} - -img[src*=pixum_img] { - background: #e8e8e8; -} - -.autoscale { - min-width: 100%; - max-width: 100%; - width: 100%; - min-height: 100%; - max-height: 100%; - height: 100%; - display: block; -} - -.autoscale-x { - min-width: 100%; - max-width: 100%; - width: 100%; - height: auto; - display: block; -} - -.autoscale-y { - min-height: 100%; - max-height: 100%; - height: 100%; - width: auto; - display: block; -} - -.mw-hide { - display: none !important; -} - -.mw-row { - margin-top: 10px; - margin-bottom: 10px; - display: table !important; - table-layout: fixed; - width: 100%; - max-width: 100%; - zoom: 1; -} - -/*.mw-col, .mw-row, .element { - position: relative; -}*/ - -body.state-element .mw-row .element { - z-index: 91; -} - -.element, .edit .module { - clear: both; - -moz-transition: none !important; - -webkit-transition: none !important; - -o-transition: color 0 ease-in !important; - transition: none !important; -} - -.mw-live-edit .module { - min-height: 20px; -} - -img[align='center'], -img[align='middle'] { - margin-left: auto; - margin-right: auto; - display: block; -} - -.element, .mw-col, .mw_item { - -ms-transform-origin: 50% 50%; - -webkit-transform-origin: 50% 50%; - -moz-transform-origin: 50% 50%; - -o-transform-origin: 50% 50%; - transform-origin: 50% 50%; -} - -.mw-col-container > h1:first-child, -.mw-col-container > h2:first-child, -.mw-col-container > h3:first-child, -.mw-col-container > h4:first-child, -.mw-col-container > h5:first-child, -.mw-col-container > p:first-child, -.mw-ui-col-container > h1:first-child, -.mw-ui-col-container > h2:first-child, -.mw-ui-col-container > h3:first-child, -.mw-ui-col-container > h4:first-child, -.mw-ui-col-container > h5:first-child, -.mw-ui-col-container > p:first-child { - margin-top: 0; -} - -.mw-col-container img.element:first-child, -.mw-col-container .picture:first-child img.element { - margin-top: 0; -} - -.mw-col-container img.element:last-child, -.mw-col-container .picture:last-child img.element { - margin-bottom: 0; -} - -/***************** Grids *******************/ - -.mw-col { - display: table-cell; - margin: 0; - padding: 0; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -.edit, .mw-col { - /*position: relative;*/ - vertical-align: top; -} - -.mw-live-edit.dragStart div.edit, .mw-live-edit.dragStart div.mw-col { - min-height: 50px; -} - -/*.edit:after, .mw-col:after, .element:after { - content: "."; - display: block; - clear: both; - visibility: hidden; - line-height: 0; - height: 0; -}*/ - -.mw-live-edit .element:empty { - min-height: 20px; -} - -.mw-col + br, .mw-col + p { - display: none !important; -} - -.mw-col-container { - padding-left: 10px; - padding-right: 10px; - max-width: 100%; - min-height: 30px; - position: relative; - vertical-align: top; -} - -.mw-ui-col:first-child > .mw-col-container { - padding-left: 0 -} - -.mw-ui-col:last-child > .mw-col-container { - padding-right: 0 -} - -html[dir="rtl"] .mw-ui-col:first-child > .mw-col-container { - padding-left: 10px; - padding-right: 10px; -} - -html[dir="rtl"] .mw-ui-col:last-child > .mw-col-container { - padding-right: 10px; - padding-left: 10px; -} - -.mw-col-container:after { - content: "."; - display: block; - clear: both; - visibility: hidden; - line-height: 0; - height: 0; -} - -.mw-row > .mw-col:first-child > .mw-col-container { - padding-left: 0; -} - -.mw-row > .mw-col:last-child > .mw-col-container { - padding-right: 0; -} - -.mw-col img { - height: auto !important; - max-width: 100%; -} - -.free-element { - position: relative; - min-height: 300px; -} - -@media (max-width: 767px) { - .mw-row { - display: block; - } - - .mw-col { - width: auto !important; - float: none; - display: block !important; - } - - .mw-col > .ui-resizable-e { - display: none; - } - - .mw-row .mw-col .mw-col-container { - padding-left: 0px; - padding-right: 0px; - } -} - -/* Static Grid */ -.mw-ui-row, .mw-ui-row-nodrop { - display: table !important; - table-layout: fixed; - width: 100%; -} - -.mw-ui-row-fixed { - table-layout: fixed; -} - -.mw-ui-col, .mw-ui-row-nodrop .mw-ui-col { - display: table-cell; - vertical-align: top; -} - -.mw-ui-col-container { - position: relative; - display: block; - clear: both; - padding-left: 10px; - padding-right: 10px; -} - -.mw-ui-row > .mw-ui-col:only-child > .mw-ui-col-container, .mw-ui-row-nodrop > .mw-ui-col:only-child > .mw-ui-col-container { - padding: 0px; -} - -.mw-ui-row > .mw-ui-col:first-child > .mw-ui-col-container, .mw-ui-row-nodrop > .mw-ui-col:first-child > .mw-ui-col-container { - padding-left: 0 -} - -.mw-ui-row > .mw-ui-col:last-child > .mw-ui-col-container, .mw-ui-row-nodrop > .mw-ui-col:last-child > .mw-ui-col-container { - padding-right: 0; -} - -.mw-ui-col-container:after { - content: "."; - display: block; - clear: both; - visibility: hidden; - line-height: 0; - height: 0; -} - -.vertical-middle, -.vertical-middle > *, -.vertical-middle > .mw-ui-col > .mw-ui-col-container, -.vertical-middle > .mw-ui-col > .mw-ui-col-container > * { - vertical-align: middle; -} - -@media (max-width: 1024px) { - .mw-ui-row-drop-on-1024 > .mw-ui-col { - display: block !important; - clear: both; - width: auto !important; - } - - .mw-ui-row-drop-on-1024 > .mw-ui-col > .mw-ui-col-container { - padding-left: 0; - padding-right: 0; - } - -} - -@media (max-width: 768px) { - .mw-ui-row, .mw-ui-row > .mw-ui-col { - display: block !important; - clear: both; - width: auto !important; - } - - .mw-ui-row > .mw-ui-col > .mw-ui-col-container { - padding-left: 0 !important; - padding-right: 0 !important; - } -} - -/***************** /Grids *******************/ - -.layout-element { - clear: both; - float: none; -} - -.mw-embed-iframe, .mwembed { - padding: 12px 0; - min-height: 200px; - position: relative; -} - -.mwembed { - min-height: 20px; -} - -.mw-embed-iframe iframe, -.mwembed video, -.mwembed audio, -.mwembed iframe { - max-width: 100%; - max-height: 100%; -} - -body.dragStart .mwembed:after, -body.Resizing .mwembed:after { - position: absolute; - display: block; - content: ""; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 9; - background: transparent; -} - -.mw-embed-embed { - padding: 12px 0; -} - -.mw-embed-embed embed, .mw-embed-embed object { - max-width: 100%; -} - -.mw-uploaded-file { - font-size: 12px; - text-decoration: underline; - color: #4688EC; - display: inline-block; - margin-right: 7px; -} - -.mw-uploaded-file:hover { - text-decoration: none; -} - -.mw_clear { - display: block; - height: 1px; - overflow: hidden; - clear: both; -} - -.mw-uploader { - position: absolute; - top: 0; - left: 0; - z-index: 9; - width: 100%; - height: 100%; -} - -.mw-uploader iframe { - min-height: 100%; -} - -.notransition { - -webkit-transition: none !important; - -moz-transition: none !important; - -o-transition: none !important; - -ms-transition: none !important; - transition: none !important; -} - -.relative { - position: relative; -} - -.inline-block { - display: inline-block; -} - -.mw-vspace { - padding: 12px 0; -} - -.vSpace { - clear: both; - display: block; - padding-bottom: 6px; - padding-top: 6px; -} - -#mw-html-info { - position: absolute; - left: -9999px; - top: -9999px; -} - -.free-item { - position: absolute; -} - -.edit .module-video, .edit .module-pictures { - padding: 10px 0; -} - -/* Tables */ - -table[class*='mw-wysiwyg-table'] { - width: 100%; - background-color: transparent; - border-collapse: collapse; - border-spacing: 0; - max-width: 100%; - table-layout: fixed; -} - -table[class*='mw-wysiwyg-table'] td { - padding: 6px; - vertical-align: top; -} - -table[class*='mw-wysiwyg-table'].valign td { - vertical-align: middle; -} - -.mw-wysiwyg-table > tbody > tr > td { - border: 1px solid #DDDDDD; -} - -/* Borderless */ - -.mw-wysiwyg-table-simple > tbody > tr > td { - border-width: 0px 0px 1px; - border-style: none none solid; - border-color: #DDDDDD; -} - -/* Zebra */ - -.mw-wysiwyg-table-zebra > tbody > tr > td { - border: 1px solid #DDDDDD; - background-color: #F3F3F3; - -} - -.mw-wysiwyg-table-zebra > tbody > tr:nth-child(2n+1) > td { - background-color: #EDEDED; -} - -/* Borderless Zebra */ - -.mw-wysiwyg-table-simple-zebra > tbody > tr > td { - border-width: 0px 0px 1px; - border-style: none none solid; - border-color: #DDDDDD; - background-color: #F3F3F3; -} - -.mw-wysiwyg-table-simple-zebra > tbody > tr:nth-child(2n+1) > td { - background-color: #EDEDED; -} - -.well { - display: block; -} - -.valign { - display: table; - table-layout: fixed; - width: 100%; - height: 100%; -} - -.valign-cell { - display: table-cell; - vertical-align: middle; - width: 100%; - height: 100%; -} - -.valign-cell > * { - vertical-align: middle; -} - -.img-polaroid, .img-rounded { - display: inline-block; -} - -[class*="span"] { - margin-bottom: 20px; -} - -/* /Tables */ - -#mw-inline-tableControl { - display: none; -} - -.mw-live-edit #mw-inline-tableControl { - display: block; -} - -.mw-cancel { - font-size: 11px; - color: #188DE7; - text-align: center; - cursor: pointer; - padding: 5px 19px; - border: 1px solid transparent; -} - -.mw-cancel:hover { - background: #F3F3F3; - border-color: #D7D7D7; -} - -.semi_hidden { - position: absolute !important; - left: -9999px !important; - top: -9999px !important; -} - -.mw-span-font-size > * { - font-size: inherit; -} - -.pagination-holder > ul { - margin: 10px 0; -} - -.pagination-holder li { - list-style: none; - display: inline; -} - -.mw-defaults img { - border: none; - max-width: 100%; -} - -.mw-captcha-img { - min-width: 75px; - vertical-align: middle; -} - -/* Overwriting clearing for elements that are columns */ -.element[class*='col-'] { - clear: none; -} - -/* Title is hidden in admin panel */ -.mw-admin-view [rel='content'][field='title'] { - display: none !important; -} - -span.mw-powered-by { - display: inline !important; -} - -.mw-ui-btn-nav-tabs .mw-ui-btn .mw-icon-module, -.mw-ui-btn-nav-tabs .mw-ui-btn .mw-icon-template, -#create-menu-btn .mw-icon-plus { - /*float: left;*/ - margin-right: 5px; -} - -.mw-image-holder { - position: relative; -} - -.mw-image-holder > img { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - text-align: center; - opacity: 0; -} - -.mw-image-holder-content { - position: relative; - z-index: 1; -} - -.mw-image-holder-overlay { - position: absolute; - display: block; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.2); - pointer-events: none; -} - -/* TODO */ -.control-group select.mw-ui-field.form-control, -.module-contact-form select.mw-ui-field, -.module-contact-form select.form-control, -.module-contact-form select { - height: auto; -} - -.gateway-selector img { - max-width: 100px; - width: fit-content; -} - -.mw-padding-top-1 { - padding-top: 0px -} - -.mw-padding-top-2 { - padding-top: 20px -} - -.mw-padding-top-3 { - padding-top: 40px -} - -.mw-padding-top-4 { - padding-top: 60px -} - -.mw-padding-top-5 { - padding-top: 80px -} - -.mw-padding-bottom-1 { - padding-bottom: 0px -} - -.mw-padding-bottom-2 { - padding-bottom: 20px -} - -.mw-padding-bottom-3 { - padding-bottom: 40px -} - -.mw-padding-bottom-4 { - padding-bottom: 60px -} - -.mw-padding-bottom-5 { - padding-bottom: 80px -} - -.module-google-maps { - position: relative; -} - -#category-parent-selector.mw-tree-nav-skin-default .mw-tree-item-title { - width: auto; -} - -.mw-modal-confirm-actions { - text-align: center; -} - -.mw-modal-confirm-actions .mw-ui-btn { - min-width: 100px; - vertical-align: top; -} - -.gateway-selector li { - list-style-type: none; -} - -.css-preset-dropdown { - border: 0 !important; - line-height: 1.2 !important; - padding: 0 !important; -} - -.css-preset-dropdown:after { - margin-left: 0 !important; - font-size: 20px; -} diff --git a/update/userfiles/modules/microweber/toolbar/editor_tools/editor_toolbar/index.php b/update/userfiles/modules/microweber/toolbar/editor_tools/editor_toolbar/index.php index bdc53838..5f25d19f 100644 --- a/update/userfiles/modules/microweber/toolbar/editor_tools/editor_toolbar/index.php +++ b/update/userfiles/modules/microweber/toolbar/editor_tools/editor_toolbar/index.php @@ -16,17 +16,19 @@ - - - - -
      - - -
      -
      -
      - -
      -
      -
      - - - -   - - -   - - -
      - - -
      - - -
      - - - - -
      - - - - - - -
      -
      -
      - - -
      -
      -
      -
      - - -
      -
      -
      - -
      -
      -
      - - - diff --git a/update/userfiles/modules/microweber/toolbar/editor_tools/link_editor/index.php b/update/userfiles/modules/microweber/toolbar/editor_tools/link_editor/index.php index 19c0b0ee..8867f3a1 100644 --- a/update/userfiles/modules/microweber/toolbar/editor_tools/link_editor/index.php +++ b/update/userfiles/modules/microweber/toolbar/editor_tools/link_editor/index.php @@ -7,6 +7,24 @@ + +
      +
      Attributes
      +
      +
      + +
      +
      + + + +
      +
      +
      Typography
      diff --git a/update/userfiles/modules/microweber/toolbar/editor_tools/rte_css_editor/style.css b/update/userfiles/modules/microweber/toolbar/editor_tools/rte_css_editor/style.css index 289afe33..5653ab34 100644 --- a/update/userfiles/modules/microweber/toolbar/editor_tools/rte_css_editor/style.css +++ b/update/userfiles/modules/microweber/toolbar/editor_tools/rte_css_editor/style.css @@ -123,7 +123,12 @@ input,select{ display: none !important; } - + #classtags .disabled{ + pointer-events: none; + } + #classtags .mw-ui-btn { + margin: 3px 6px 3px 0; + } .s-field { display: flex; diff --git a/update/userfiles/modules/microweber/toolbar/editor_tools/rte_image_editor/index.php b/update/userfiles/modules/microweber/toolbar/editor_tools/rte_image_editor/index.php deleted file mode 100644 index 9488b238..00000000 --- a/update/userfiles/modules/microweber/toolbar/editor_tools/rte_image_editor/index.php +++ /dev/null @@ -1,621 +0,0 @@ - - - - - - - - - -
      -
      - - -
      - - - - - - - - -
      - - -
      -
      -
      -
        - - -
      • -
        - -
      • - -
      • -
        -
      • - -
      • -
        - -
      • - -
      - - -
      -
      -
      - - -
      -
      -
      -
      - " class="mw-ui-field" name="get_image_by_url" onfocus="event.preventDefault()"/> -
      -
      -
      -
      - -
      -
      -
      -
      - -
      -
      -
      - - -
      -
      - -
      -
      - -
      - - - - -
      diff --git a/update/userfiles/modules/microweber/toolbar/editor_tools/rte_link_editor/index.php b/update/userfiles/modules/microweber/toolbar/editor_tools/rte_link_editor/index.php index 5c0d4630..2b41392e 100644 --- a/update/userfiles/modules/microweber/toolbar/editor_tools/rte_link_editor/index.php +++ b/update/userfiles/modules/microweber/toolbar/editor_tools/rte_link_editor/index.php @@ -237,6 +237,10 @@
    • -
    • - -
    • -
    • - -
    • +
    • diff --git a/update/userfiles/modules/microweber/toolbar/wysiwyg_admin.php b/update/userfiles/modules/microweber/toolbar/wysiwyg_admin.php deleted file mode 100644 index ba699d45..00000000 --- a/update/userfiles/modules/microweber/toolbar/wysiwyg_admin.php +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - -
      -
      - - "> - - - - "> - "> - "> - - - - "> - "> - "> - "> - - - - - -
      " data-value=""> - - - - -
      - -
      -
      - - -
      " data-value="Arial"> - - - Arial - - -
      - - -
      "> - - - - -
      - -
      -
      - - - - - - "> - "> - - - - - - "> - "> - - - - "> - " > -
      - -
      diff --git a/update/userfiles/modules/microweber/toolbar/wysiwyg_tiny.php b/update/userfiles/modules/microweber/toolbar/wysiwyg_tiny.php deleted file mode 100644 index 19b0c131..00000000 --- a/update/userfiles/modules/microweber/toolbar/wysiwyg_tiny.php +++ /dev/null @@ -1,64 +0,0 @@ -
      -
      - - - - "> - -
      " data-value="Arial"> - - - Arial - - -
      - -
      "> - - - - -
      - -
      -
      - - - ">*/ ?> -
       
      -
      -
      - "> - "> - "> - - "> - "> - "> - "> - -
       
      -
      - -
      diff --git a/update/userfiles/modules/newsletter/functions/subscriber_functions.php b/update/userfiles/modules/newsletter/functions/subscriber_functions.php deleted file mode 100644 index 8fe68573..00000000 --- a/update/userfiles/modules/newsletter/functions/subscriber_functions.php +++ /dev/null @@ -1,319 +0,0 @@ -user_manager->is_admin(); - if (defined('MW_API_CALL')) { - $validate_token = mw()->user_manager->csrf_validate($params); - if (!$adm) { - if ($validate_token == false) { - return array( - 'error' => 'Invalid token!' - ); - } - } - } - - $redir = newsletter_get_redirect_link_after_subscribe($mod_id); - - - $rules = [ - 'email' => 'required|email' - ]; - - - $rules_already_subscribed = [ - 'email' => 'required|email|unique:newsletter_subscribers' - ]; - - $input = Input::only('name', 'email', 'list_id', 'terms', 'captcha'); - $messages = array( - 'unique' => 'This email is already subscribed!' - ); - - - $list_id = Input::get('list_id'); - if (!$list_id) { - $list_id = get_option('list_id', $mod_id); - } - - - $validator = Validator::make($input, $rules, $messages); - if ($validator->fails()) { - $resp = array(); - $resp['error'] = $validator->messages(); - if ($redir) { - // $resp['redirect'] = $redir; - } - return $resp; - } - - - $validator = Validator::make($input, $rules_already_subscribed, $messages); - if ($validator->fails()) { - //means user is subscribed and we will return success - $resp = array(); - $resp['success'] = $validator->messages(); - newsletter_set_cookie_for_subscribed_user(); - if ($redir) { - $resp['redirect'] = $redir; - } - return $resp; - } - - - $needs_terms = get_option('require_terms', $mod_id) == 'y'; - $enable_captcha = get_option('enable_captcha', $mod_id) == 'y'; - - - if ($needs_terms) { - $user_id_or_email = mw()->user_manager->id(); - if (!$user_id_or_email) { - if (isset($input ['email'])) { - $user_id_or_email = $input ['email']; - } - } - - if (!$user_id_or_email) { - return array( - 'error' => _e('You must provide email address', true) - ); - } else { - $terms_and_conditions_name = 'terms_newsletter'; - - $check_term = mw()->user_manager->terms_check($terms_and_conditions_name, $user_id_or_email); - if (!$check_term) { - if (isset($input ['terms']) and $input ['terms']) { - mw()->user_manager->terms_accept($terms_and_conditions_name, $user_id_or_email); - } else { - return array( - 'error' => _e('You must agree to terms and conditions', true), - 'form_data_required' => 'terms', - 'form_data_module' => 'users/terms' - ); - } - } - } - } - - if ($enable_captcha) { - if (!isset($input ['captcha'])) { - return array( - 'error' => _e('Invalid captcha answer!', true), - 'captcha_error' => true, - 'form_data_required' => 'captcha', - 'form_data_module' => 'captcha' - ); - } else { - $validate_captcha = mw()->captcha->validate($input ['captcha']); - if (!$validate_captcha) { - return array( - 'error' => _e('Invalid captcha answer!', true), - 'captcha_error' => true, - 'form_data_required' => 'captcha', - 'form_data_module' => 'captcha' - ); - } - } - } - newsletter_set_cookie_for_subscribed_user(); - - - $confirmation_code = str_random(30); - - $subscriber_data = [ - 'email' => Input::get('email'), - 'name' => $name, - 'list_id' => $list_id, - 'confirmation_code' => $confirmation_code - ]; - - newsletter_save_subscriber($subscriber_data); - $msg = 'Thank you for subscribing!'; - - $resp = array( - 'success' => $msg - ); - - if ($redir) { - $resp['redirect'] = $redir; - } - - return $resp; -} - -function newsletter_get_redirect_link_after_subscribe($mod_id = false) -{ - if (!$mod_id) { - $mod_id = 'newsletter'; - } - $redir = get_option('newsletter_redirect_after_submit', $mod_id); - return $redir; -} - -function newsletter_get_subscribers($params) -{ - if (is_string($params)) { - $params = parse_params($params); - } - $params ['table'] = "newsletter_subscribers"; - return db_get($params); -} - - -api_expose_admin('newsletter_get_subscriber'); -function newsletter_get_subscriber($subscriber_id) -{ - $data = ['id' => $subscriber_id, 'single' => true]; - $table = "newsletter_subscribers"; - - return db_get($table, $data); -} - -api_expose_admin('newsletter_save_subscriber'); -function newsletter_save_subscriber($data) -{ - - // mw()->user_manager->ses - - - $table = "newsletter_subscribers"; - - if (!isset($data ['is_subscribed']) and !isset($data ['id'])) { - $data ['is_subscribed'] = 1; - } - - if (!isset($data['subscribed_for'])) { - // Default list - - } else { - if (isset($data['id'])) { - - newsletter_delete_subscriber_lists($data['id']); - - foreach ($data['subscribed_for'] as $list_id) { - newsletter_save_subscriber_list($data['id'], $list_id); - } - } - } - - $save_id = db_save($table, $data); - - $subscriber_data = array(); - $subscriber_data['rel_type'] = 'newsletter_subscribers'; - $subscriber_data['rel_id'] = $save_id; - $subscriber_data['option_group'] = 'newsletter'; - - event_trigger('mw.mail_subscribe', $subscriber_data); - - if (isset($data['list_id'])) { - newsletter_save_subscriber_list($save_id, $data['list_id']); - } - - return $save_id; -} - -function newsletter_delete_subscriber_lists($subscriber_id) -{ - - $table = "newsletter_subscribers_lists"; - - // Delete subscriber from old lists - db_delete($table, $subscriber_id, 'subscriber_id'); -} - -function newsletter_save_subscriber_list($subscriber_id, $list_id) -{ - - $table = "newsletter_subscribers_lists"; - - // Add subscriber to list - $data = array(); - $data['subscriber_id'] = $subscriber_id; - $data['list_id'] = $list_id; - - return db_save($table, $data); -} - -function newsletter_get_subscriber_lists($subscriber_id) -{ - $data = ['subscriber_id' => $subscriber_id]; - $data ['table'] = "newsletter_subscribers_lists"; - return db_get($data); -} - -function newsletter_get_subscribers_for_list($list_id) -{ - - $subscribers = DB::table('newsletter_subscribers_lists') - ->join('newsletter_subscribers', 'newsletter_subscribers.id', '=', 'newsletter_subscribers_lists.subscriber_id') - ->select('newsletter_subscribers_lists.*', 'newsletter_subscribers.name', 'newsletter_subscribers.email', 'newsletter_subscribers.is_subscribed') - ->where('newsletter_subscribers.is_subscribed', 1) - ->get(); - - $readySubscribers = array(); - - foreach ($subscribers as $subscriber) { - $readySubscribers[] = array( - 'id' => $subscriber->id, - 'subscriber_id' => $subscriber->subscriber_id, - 'list_id' => $subscriber->list_id, - 'name' => $subscriber->name, - 'email' => $subscriber->email, - ); - } - - return $readySubscribers; -} - -api_expose_admin('newsletter_delete_subscriber'); -function newsletter_delete_subscriber($params) -{ - if (isset($params ['id'])) { - $table = "newsletter_subscribers"; - $id = $params ['id']; - return db_delete($table, $id); - } -} - - -function newsletter_check_cookie_for_subscribed_user() -{ - $hash = user_ip(); - $hash = md5($hash); - if (isset($_COOKIE['mw-newsletter_is_subscribed']) and $_COOKIE['mw-newsletter_is_subscribed'] == $hash) { - return true; - } -} - -function newsletter_set_cookie_for_subscribed_user() -{ - $hash = user_ip(); - $hash = md5($hash); - - - setcookie('mw-newsletter_is_subscribed', $hash, time() + 45000, '/'); -} \ No newline at end of file diff --git a/update/userfiles/modules/newsletter/index.php b/update/userfiles/modules/newsletter/index.php deleted file mode 100644 index 64d814d3..00000000 --- a/update/userfiles/modules/newsletter/index.php +++ /dev/null @@ -1,73 +0,0 @@ - - diff --git a/update/userfiles/modules/newsletter/templates/default.php b/update/userfiles/modules/newsletter/templates/default.php deleted file mode 100644 index 36d7dbec..00000000 --- a/update/userfiles/modules/newsletter/templates/default.php +++ /dev/null @@ -1,73 +0,0 @@ - - \ No newline at end of file diff --git a/update/userfiles/modules/newsletter/templates/small.php b/update/userfiles/modules/newsletter/templates/small.php deleted file mode 100644 index ff2d480a..00000000 --- a/update/userfiles/modules/newsletter/templates/small.php +++ /dev/null @@ -1,107 +0,0 @@ - - - - \ No newline at end of file diff --git a/update/userfiles/modules/pictures/admin_backend.php b/update/userfiles/modules/pictures/admin_backend.php new file mode 100644 index 00000000..1578ac90 --- /dev/null +++ b/update/userfiles/modules/pictures/admin_backend.php @@ -0,0 +1,455 @@ + + + +database_manager->assoc_table_name($for); + + +if (isset($params['for-id'])) { + $for_id = $params['for-id']; +} +if (isset($params['rel-id'])) { + $for_id = $params['rel-id']; +} +if (isset($params['rel_id'])) { + $for_id = $params['rel_id']; +} + + +$rand = uniqid(); + +if ($for_id != false) { + $media = get_pictures("rel_id={$for_id}&rel_type={$for}"); +} else { + $sid = mw()->user_manager->session_id(); + $media = get_pictures("rel_id=0&rel_type={$for}&session_id={$sid}"); +} + + +?> + + + + + + + + + +
      + +
      +
      + +
      +
      + +
      + Select +
      + All + None +
      +
      + + + +
      + +
      + +*/ + +?> + + + + +
      + +
      + +
      + +
      + + + + + + + + + + + + + + + + + +
      + + + + $item): ?> +
      + + + + + + + + +
      + +
      +
      + + + +
      + +
      +
      + +
      + + +
      + + +
      + + Cancel + Update + +
      +
      +
      +
      +
      + + */ + + + ?> + + + +
      diff --git a/update/userfiles/modules/pictures/admin_live_edit.php b/update/userfiles/modules/pictures/admin_live_edit.php new file mode 100644 index 00000000..635faadc --- /dev/null +++ b/update/userfiles/modules/pictures/admin_live_edit.php @@ -0,0 +1,150 @@ + + + + + +
      + + + +
      + + +
      + +
      + + + + + +
      + +
      + + +
      + +
      + + + diff --git a/update/userfiles/modules/pictures/media_library.php b/update/userfiles/modules/pictures/media_library.php new file mode 100644 index 00000000..32c5534e --- /dev/null +++ b/update/userfiles/modules/pictures/media_library.php @@ -0,0 +1,190 @@ + +
      +
      + + + + +
      +

      Search Unsplash

      +

      Enter a search term above to begin searching images from Unsplash.com.
      You can use free stock images.

      +
      +
      + +
      + +
      + + + +
      +
      diff --git a/update/userfiles/modules/pictures/pictures.js b/update/userfiles/modules/pictures/pictures.js new file mode 100644 index 00000000..ec4e66c3 --- /dev/null +++ b/update/userfiles/modules/pictures/pictures.js @@ -0,0 +1,133 @@ +mw.module_pictures = { + after_upload: function (data) { + $.post(mw.settings.api_url + 'save_media', data, + function (resp) { + console.log(data, resp) + }); + }, + time:null, + after_change: function (data) { + clearTimeout(mw.module_pictures.time) + mw.module_pictures.time = setTimeout(function () { + mw.reload_module('pictures'); + mw.reload_module_parent('pictures'); + mw.reload_module_parent('posts'); + mw.reload_module_parent('shop/products'); + mw.reload_module_parent("pictures/admin"); + }, 1500) + + }, + + save_options: function (id, image_options) { + image_options = image_options || {}; + if(typeof image_options === 'string'){ + image_options = JSON.parse(image_options); + } + var data = {}; + data.id = id; + data.image_options = image_options; + $.post(mw.settings.api_url + 'save_media', data, + function (data) { + + clearTimeout(mw.module_pictures.time) + mw.module_pictures.time = setTimeout(function () { + + mw.reload_module_parent('pictures'); + + }, 1500) + + + }); + }, + save_title: function (id, title) { + var data = {}; + data.id = id; + data.title = title; + $.post(mw.settings.api_url + 'save_media', data, + function (data) { + mw.reload_module_parent('pictures'); + }); + }, + save_tags: function (id, tags) { + var data = {}; + data.id = id; + data.tags = tags; + $.post(mw.settings.api_url + 'save_media', data, + function (data) { + mw.reload_module_parent('pictures'); + mw.reload_module_parent('tags'); + }); + }, + del: function (id) { + if(typeof id === 'string'){ + if (confirm('Are you sure you want to delete this image?')) { + $.post(mw.settings.api_url + 'delete_media', { id: id }, function (data) { + $('.admin-thumb-item-' + id).fadeOut(); + setTimeout(function(){ $('[data-type="pictures/admin"]').trigger('change') }, 2000); + + mw.module_pictures.after_change() + }); + } + } + else{ + if (confirm('Are you sure you want to delete selected images?')) { + $.post(mw.settings.api_url + 'delete_media', { ids: id }, function (data) { + $.each(id, function(){ + $('.admin-thumb-item-' + this).fadeOut(); + }) + setTimeout(function(){ $('[data-type="pictures/admin"]').trigger('change') }, 2000); + + mw.module_pictures.after_change() + }); + } + } + + + + + + + + + }, + time:null, + init: function (selector) { + var el = $(selector); + $(".mw-post-media-img-edit input", el).not(':checkbox').on('input', function(){ + clearTimeout(mw.module_pictures.time) + mw.module_pictures.time = setTimeout(function(){ + el.parents('[data-type="pictures/admin"]').trigger('change') + }, 1500) + }) + el.sortable({ + items: ".admin-thumb-item", + placeholder: 'admin-thumb-item-placeholder', + update: function () { + var serial = el.sortable('serialize'); + $.post(mw.settings.api_url + 'reorder_media', serial, + function (data) { + mw.module_pictures.after_change(); + el.parents('[data-type="pictures/admin"]').trigger('change') + }); + + } + }); + }, + + + open_image_upload_settings_modal: function() { + image_upload_settings__modal_opened = mw.modal({ + content: '
      ', + title: 'Image upload settings', + id: 'image_upload_settings__modal' + }); + + var params = {} + params.show_description_text = 1; + mw.load_module('settings/group/image_upload', '#image_upload_settings__modal_module', null, params); + } + + + + +} diff --git a/update/userfiles/modules/popup/admin.php b/update/userfiles/modules/popup/admin.php deleted file mode 100644 index 00ae559a..00000000 --- a/update/userfiles/modules/popup/admin.php +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - -
      -
      -
      -
      - -
      -
      -
      -
      -
      - -
        -
      • - -
      • -
      • - -
      • -
      • - -
      • -
      • - -
      • -
      -
      - - - - - -
      - -
        -
      • - -
      • -
      • - -
      • -
      -
      - - - -
      -
      -
      -
      -
      -
      - -
      -
      -
      - -
      -
      -
      diff --git a/update/userfiles/modules/popup/config.php b/update/userfiles/modules/popup/config.php deleted file mode 100644 index 07cd784d..00000000 --- a/update/userfiles/modules/popup/config.php +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/update/userfiles/modules/popup/index.php b/update/userfiles/modules/popup/index.php deleted file mode 100644 index a75a5c32..00000000 --- a/update/userfiles/modules/popup/index.php +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - Open Pop-Up - - \ No newline at end of file diff --git a/update/userfiles/modules/popup/templates/default.php b/update/userfiles/modules/popup/templates/default.php deleted file mode 100644 index 62395460..00000000 --- a/update/userfiles/modules/popup/templates/default.php +++ /dev/null @@ -1,67 +0,0 @@ - - - -
      - - data-toggle="modal" href="#popup-" data-backdrop="false"> - - - - -
      - diff --git a/update/userfiles/modules/settings/group/email.php b/update/userfiles/modules/settings/group/email.php deleted file mode 100644 index 8b961244..00000000 --- a/update/userfiles/modules/settings/group/email.php +++ /dev/null @@ -1,292 +0,0 @@ - - - -
      -
      -

      -
      -
      -
      - -
      -
      - -
      - -
      -

      Email Settings

      Set the email transport settings to your website.


      -
      - -
      -
      - - -
      -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      -
      -
      - -
      -
      - - - -
      -
      - - - -
      -
      - - -
      -
      - -
      -
      - - -
      -
      - - - - - - -
      -
      - - -
      -
      - - - -
      -
      - - -
      -
      - -
      -
      - - - - -
      -
      - -
      -
      - - - - -
      -
      - - -
      - - - - - - -
      - -
      - -
      -
      -
      -
      - - - -
      -
      -
      -
      diff --git a/update/userfiles/modules/settings/group/experimental.php b/update/userfiles/modules/settings/group/experimental.php deleted file mode 100644 index 0469b7a4..00000000 --- a/update/userfiles/modules/settings/group/experimental.php +++ /dev/null @@ -1,115 +0,0 @@ - - - -

      - - -

      -
      Those settings are experimental and may lead to bugs. Please don't use them yet
      -
      - - - - - -
      -

      -
      Note: Those features are experimental and not fully tested. Check if your website is working normally after enabling cache settings.
      -
      -
      - -
      - - - -
        -
      • - -
      • -
      • - -
      • -
      -
      - - -
      - - -
        -
      • - -
      • -
      • - -
      • -
      -
      - -
      - -
      - - - - - -
      style="display: none" > - -
      Warning, this is advanced action and may break your site. - Make sure you setup you domain to resolve to your website.
      - After that you can enter your content delivery domain name for example cdn.mydomain.com -
      - -
      - - - -
      -
      -
      -
      - - - diff --git a/update/userfiles/modules/settings/group/users.php b/update/userfiles/modules/settings/group/users.php index f0209dff..19b0a71f 100644 --- a/update/userfiles/modules/settings/group/users.php +++ b/update/userfiles/modules/settings/group/users.php @@ -503,10 +503,23 @@ function checkAllowSocialsLoginEnabled() {
      + + + + + + + +
      diff --git a/update/userfiles/modules/shop/offers/functions.php b/update/userfiles/modules/shop/offers/functions.php deleted file mode 100644 index e55b224d..00000000 --- a/update/userfiles/modules/shop/offers/functions.php +++ /dev/null @@ -1,301 +0,0 @@ -format->amount_to_float($offerData['offer_price']); - } - - if (!is_numeric($offerData['offer_price'])) { - $errorMessage .= 'offer price must be a number.
      '; - } - - if (isset($offerData['expires_at']) and trim($offerData['expires_at']) != '') { - $date_db_format = get_date_db_format($offerData['expires_at']); - $offerData['expires_at'] = date('Y-m-d H:i:s', strtotime($date_db_format)); - } - - if (empty($offerData['is_active'])) { - $offerData['is_active'] = 0; - } elseif ($offerData['is_active'] == 'on') { - $offerData['is_active'] = 1; - } - - if (empty($errorMessage)) { - $ok = true; - } - - if ($ok) { - $offerId = db_save($table, $offerData); - $json['offer_id'] = $offerId; - $json['success_edit'] = true; - } else { - $json['error_message'] = $errorMessage; - } - - return $json; -} - -api_expose_admin('offers_get_all'); -function offers_get_all() -{ - $table = 'offers'; - - $offers = DB::table($table)->select( - - - 'offers.id', - 'offers.product_id', - // 'offers.price_key', - 'offers.offer_price', - 'offers.created_at', - 'offers.updated_at', - 'offers.expires_at', - 'offers.is_active', - // 'offers.price_key as price_key', - 'content.title as product_title', - 'content.is_deleted', - 'custom_fields.name as price_name', - 'custom_fields_values.value as price' - - ) - ->where('content.content_type', '=', 'product') - //->where('content.is_deleted', '=', 0) - // ->leftJoin('custom_fields', 'offers.price_key', '=', 'custom_fields.name_key') - ->where('custom_fields.type', '=', 'price') - ->leftJoin('custom_fields', 'offers.price_id', '=', 'custom_fields.id') - ->leftJoin('custom_fields_values', 'custom_fields.id', '=', 'custom_fields_values.custom_field_id') - ->leftJoin('content', 'offers.product_id', '=', 'content.id') - ->get() - ->toArray(); - - $specialOffers = array(); - foreach ($offers as $offer) { - $specialOffers[] = get_object_vars($offer); - } - - return $specialOffers; -} - -api_expose_admin('offers_get_products'); -function offers_get_products() -{ - $table = 'content'; - - $offers = DB::table($table)->select('content.id as product_id', 'content.title as product_title', 'custom_fields.name as price_name', 'custom_fields.name_key as price_key', 'custom_fields_values.value as price') - ->leftJoin('custom_fields', 'content.id', '=', 'custom_fields.rel_id') - ->leftJoin('custom_fields_values', 'custom_fields.id', '=', 'custom_fields_values.custom_field_id') - ->where('content.content_type', '=', 'product') - ->where('content.is_deleted', '=', 0) - ->where('custom_fields.type', '=', 'price') - ->get() - ->toArray(); - - $existingOfferProductIds = offers_get_offer_product_ids(); - - $specialOffers = array(); - foreach ($offers as $offer) { - if (!in_array($offer->product_id, $existingOfferProductIds)) { - $specialOffers[] = get_object_vars($offer); - } - } - - return $specialOffers; -} - - -//api_expose('offers_get_price'); -function offers_get_price($product_id = false, $price_id) -{ - $offer = DB::table('offers')->select('*'); - if ($product_id) { - $offer = $offer->where('product_id', '=', $product_id); - } - $offer = $offer->where('price_id', '=', $price_id); - $offer = $offer->first(); - if ($offer) { - if (!($offer->expires_at) || $offer->expires_at == '0000-00-00 00:00:00' || (strtotime($offer->expires_at) > strtotime("now"))) { - - return (array)$offer; - - } - } -} - -api_expose('offers_get_by_product_id'); -function offers_get_by_product_id($product_id) -{ - $table = 'offers'; - - $offers = DB::table($table)->select('custom_fields.id as id', 'offers.offer_price', 'offers.expires_at', 'custom_fields.name as price_name', 'custom_fields_values.value as price') - ->leftJoin('content', 'offers.product_id', '=', 'content.id') - // ->leftJoin('custom_fields', 'offers.price_key', '=', 'custom_fields.name_key') - ->leftJoin('custom_fields', 'offers.price_id', '=', 'custom_fields.id') - ->leftJoin('custom_fields_values', 'custom_fields.id', '=', 'custom_fields_values.custom_field_id') - ->where('content.id', '=', (int)$product_id) - ->where('content.is_deleted', '=', 0) - ->where('offers.is_active', '=', 1) - ->where('custom_fields.type', '=', 'price') - ->get() - ->toArray(); - - - $specialOffers = array(); - foreach ($offers as $offer) { - - if (!($offer->expires_at) || $offer->expires_at == '0000-00-00 00:00:00' || (strtotime($offer->expires_at) > strtotime("now"))) { - // converting price_name to lowercase to match key from in FieldsManager function get line 556 - - $offer_data = get_object_vars($offer); - if (isset($offer_data['offer_price']) and $offer_data['offer_price'] and isset($offer_data['price'])) { - - $price_change_direction = 'decrease'; - $offer_data['offer_price'] = floatval($offer_data['offer_price']); - $offer_data['price'] = floatval($offer_data['price']); - - $answer = abs($offer_data['price'] - $offer_data['offer_price']); - $offer_data['price_change_direction_sign'] = '-'; - $offer_data['offer_value_difference'] = $answer; - - if ($offer_data['offer_price'] > $offer_data['price']) { - $price_change_direction = 'increase'; - $answer = abs($offer_data['price'] - $offer_data['offer_price']); - $offer_data['price_change_direction_sign'] = '+'; - $offer_data['offer_value_difference'] = $answer; - } - - $percent = mw()->format->percent($offer_data['offer_value_difference'], $offer_data['price']); - $offer_data['offer_value_difference_percent'] = $percent; - $offer_data['price_change_direction'] = $price_change_direction; - } - - $specialOffers[strtolower($offer->price_name)] = $offer_data; - - } - } - - return $specialOffers; -} - - -function offers_get_offer_product_ids() -{ - $offers = DB::table('offers')->select('product_id')->get(); - $product_ids = array(); - foreach ($offers as $offer) { - $product_ids[] = $offer->product_id; - } - return $product_ids; -} - - -api_expose_admin('offer_get_by_id'); -function offer_get_by_id($offer_id) -{ - $table = "offers"; - - $offer = db_get($table, array( - 'id' => $offer_id, - 'single' => true, - // 'no_cache' => true - )); - $additional_fields = array(); - if (isset($offer['id']) and isset($offer['product_id']) and $offer['product_id']) { - $prod_offers = offers_get_by_product_id($offer['product_id']); - if ($prod_offers) { - foreach ($prod_offers as $prod_offer) { - if ($prod_offer['id'] == $offer['id']) { - $additional_fields = $prod_offer; - } - } - } - } - - if ($additional_fields) { - $offer = array_merge($offer, $additional_fields); - } - return $offer; - -} - - -api_expose_admin('offer_delete'); -function offer_delete($params) -{ - if (!isset($params['offer_id'])) { - return; - } - - $table = "offers"; - $offerId = (int)$params['offer_id']; - - $delete = db_delete($table, $offerId); - - if ($delete) { - return array( - 'status' => 'success' - ); - } else { - return array( - 'status' => 'failed' - ); - } -} - - -event_bind('mw.shop.get_product_prices', function ($custom_field_items) { - - if ($custom_field_items) { - foreach ($custom_field_items as $key => $price) { - $price_on_offer = offers_get_price($price['rel_id'], $price['id']); - if ($price_on_offer) { - $price_on_offer = (array)$price_on_offer; - - if ($price_on_offer and isset($price_on_offer['offer_price'])) { - $cust_price = $price; - $new_price_value = $price_on_offer['offer_price']; - - - $cust_price['custom_value'] = $new_price_value; - $cust_price['value'] = $new_price_value; - $cust_price['value_plain'] = $new_price_value; - $cust_price['original_value'] = $price['value']; - $cust_price['custom_value_module'] = 'shop/offers'; - $cust_price['custom_value_data'] = $price_on_offer; - $custom_field_items[$key] = $cust_price; - } - } - } - return $custom_field_items; - } - -}); -event_bind('mw.admin.custom_fields.price_settings', function ($settings) { - if (isset($settings['id']) and isset($settings['rel_id']) and isset($settings['rel_type']) and $settings['rel_type'] == 'content') { - print ''; - } -}); - - -event_bind('mw.admin.shop.settings', function ($data) { - print ''; -}); \ No newline at end of file diff --git a/update/userfiles/modules/shop/payments/gateways/bank_transfer/admin.php b/update/userfiles/modules/shop/payments/gateways/bank_transfer/admin.php deleted file mode 100644 index 9bef75ca..00000000 --- a/update/userfiles/modules/shop/payments/gateways/bank_transfer/admin.php +++ /dev/null @@ -1,78 +0,0 @@ - - -
      - -
      - -
        -
      • - -
      • -
      • - -
      • -
      • - -
      • -
      - - - - -

      - - -
        -
      • - -
      • -
      • - -
      • -
      • - -
      • -
      - -
        -
      • - -
      • -
      • - -
      • -
      • - -
      • -
      - - - -
      -

      Use {{order_id}} to show id of order in payment instructions.

      - -

      \ No newline at end of file diff --git a/update/userfiles/modules/shop/payments/gateways/bank_transfer/bank_transfer.png b/update/userfiles/modules/shop/payments/gateways/bank_transfer/bank_transfer.png deleted file mode 100644 index b054441d..00000000 Binary files a/update/userfiles/modules/shop/payments/gateways/bank_transfer/bank_transfer.png and /dev/null differ diff --git a/update/userfiles/modules/shop/payments/gateways/bank_transfer/config.php b/update/userfiles/modules/shop/payments/gateways/bank_transfer/config.php deleted file mode 100644 index da471612..00000000 --- a/update/userfiles/modules/shop/payments/gateways/bank_transfer/config.php +++ /dev/null @@ -1,10 +0,0 @@ - - - -
      -

      - - - - * - - - - -

      -
      - diff --git a/update/userfiles/modules/shop/payments/gateways/bank_transfer/process.php b/update/userfiles/modules/shop/payments/gateways/bank_transfer/process.php deleted file mode 100644 index c7260460..00000000 --- a/update/userfiles/modules/shop/payments/gateways/bank_transfer/process.php +++ /dev/null @@ -1,15 +0,0 @@ -
      Follow payment instructions", true); - $html .= '
      ' . get_option('bank_transfer_instructions', 'payments'); -} - -$twig = new \Twig_Environment(new \Twig_Loader_String()); -$html = $twig->render($html, array('order_id' => $place_order['id'])); - -$place_order['order_completed'] = 1; -$place_order['is_paid'] = 0; -$place_order['success'] = $html; \ No newline at end of file diff --git a/update/userfiles/modules/shop/shipping/admin.php b/update/userfiles/modules/shop/shipping/admin.php deleted file mode 100644 index 551cfe88..00000000 --- a/update/userfiles/modules/shop/shipping/admin.php +++ /dev/null @@ -1,102 +0,0 @@ - - - - - -
      - - - modules->is_installed($shipping_module['module'])): ?> - - -
      -
      - - - - - -
      - -
      - - - - - - - -
      -
      - -
      - - - - -
      - - - -
      -
      - - - modules->is_installed($shipping_module['module'])): ?> - - -
      - -
      - - - -
      -
      diff --git a/update/userfiles/modules/shop/shipping/gateways/country/country.js b/update/userfiles/modules/shop/shipping/gateways/country/country.js deleted file mode 100644 index 06494e8c..00000000 --- a/update/userfiles/modules/shop/shipping/gateways/country/country.js +++ /dev/null @@ -1,22 +0,0 @@ - - -mw.shipping_country = { - delete_country : function(id){ - var q = "Are you sure you want to delete shipping to this country?"; - mw.tools.confirm(q, function(){ - var obj = {}; - obj.id = id; - $.post(mw.shipping_country.url + "/shipping_to_country/delete", obj, function(data){ - mw.$(".country-id-"+id).fadeOut(); - mw.reload_module_everywhere('[data-parent-module="shop/shipping"]'); - mw.reload_module_everywhere('shop/shipping/gateways/country/admin_backend'); - if(window.parent != undefined && window.parent.mw != undefined){ - mw.reload_module_everywhere('shop/shipping/gateways/country'); - } - }); - }); - }, - add_country:function(){ - - } -} \ No newline at end of file diff --git a/update/userfiles/modules/shop/shipping/gateways/country/views/admin_table_list.php b/update/userfiles/modules/shop/shipping/gateways/country/views/admin_table_list.php deleted file mode 100644 index 83c0a7b6..00000000 --- a/update/userfiles/modules/shop/shipping/gateways/country/views/admin_table_list.php +++ /dev/null @@ -1,114 +0,0 @@ - - - - -
      - -

      - -

      - - -
      - - - - - - - - - - - - - - - - - - - - -
      CountryShipping TypeShipping Cost
      - " class="mw-icon-drag shipping-handle-field"> - - - - format->titlelize($item['shipping_type']) ?> - - shop_manager->currency_format($item['shipping_cost']); - } else { - print mw()->shop_manager->currency_format($item['shipping_cost']); - } - ?> - - -   - -
      - - - - deletem - - -
      - " - class="mw-icon-drag shipping-handle-field"> - "> - - - Edit - - -
      - - - - - - */ - - ?> -
      -
      - diff --git a/update/userfiles/modules/shop/shipping/gateways/country/views/item_edit.php b/update/userfiles/modules/shop/shipping/gateways/country/views/item_edit.php deleted file mode 100644 index 6a17cc41..00000000 --- a/update/userfiles/modules/shop/shipping/gateways/country/views/item_edit.php +++ /dev/null @@ -1,432 +0,0 @@ - - - - - - - - - - - -
      -
      -
      - - - -
      - - - - - - -
      - -
      -
      - -
      -
      - -
      -
      - - -
      -
      -
      -
      -
      - - - -
      -
      - -
      - -
      -
      - - - - -
      - -
      - -
      -
      -
      -
      -
      - -
      -
      - -
      - -
      -
      -
      -
      - -
      -
      -
      -
      \ No newline at end of file diff --git a/update/userfiles/modules/slickslider/config.php b/update/userfiles/modules/slickslider/config.php deleted file mode 100644 index b3f5dc41..00000000 --- a/update/userfiles/modules/slickslider/config.php +++ /dev/null @@ -1,18 +0,0 @@ - + + + + + + + + + + + + + + + +
      + +

      + +

      + + + + +
      + + + +
      + +
      + +
      + + +   + +
      + + +
      + +
      + + +
      + + +   + + + +
      + +
      +
      diff --git a/update/userfiles/modules/testimonials/index.php b/update/userfiles/modules/testimonials/index.php new file mode 100644 index 00000000..78e52672 --- /dev/null +++ b/update/userfiles/modules/testimonials/index.php @@ -0,0 +1,79 @@ + 0) { + $get['limit'] = $testimonials_limit; + } else { + $get['no_limit'] = true; + } + + $get['project_name'] = $show_testimonials_per_project; + + $data = get_testimonials($get); + +} else { + $get = array(); + if (intval($testimonials_limit) > 0) { + $get['limit'] = $testimonials_limit; + } else { + $get['no_limit'] = true; + } + $data = get_testimonials($get); + +} + + +$all_have_pictures = true; +if ($data) { + foreach ($data as $item) { + if (!isset($item['client_picture']) or $item['client_picture'] == false) { + $all_have_pictures = false; + } + } +} + +if (empty($data)) { + return print lnotif(_e("Click here to edit Testimonials", true)); +} + +$openquote = get_option('openquote', 'fourtestimonials'); +$closequote = get_option('closequote', 'fourtestimonials'); + +$template_file = false; +if ($template != false and strtolower($template) != 'none') { + $template_file = module_templates($config['module'], $template); +} +if ($template_file == false) { + $template_file = module_templates($config['module'], 'default'); +} +if ($template_file != false and is_file($template_file)) { + include($template_file); +} \ No newline at end of file diff --git a/update/userfiles/modules/testimonials/templates/default.php b/update/userfiles/modules/testimonials/templates/default.php new file mode 100644 index 00000000..9ca2c0c8 --- /dev/null +++ b/update/userfiles/modules/testimonials/templates/default.php @@ -0,0 +1,76 @@ + + + + + + + + + +
      + + + + +
      + +
      + +

      + +
      + +   +   + +
      + +

      + + + +
      +
      + + + +
      diff --git a/update/userfiles/modules/timeline/admin.php b/update/userfiles/modules/timeline/admin.php new file mode 100644 index 00000000..d3fc7690 --- /dev/null +++ b/update/userfiles/modules/timeline/admin.php @@ -0,0 +1,221 @@ + + + + + + + '', + 'date' => '', + 'description' => '' +); + +$json = json_decode($settings, true); + +if (isset($json) == false or count($json) == 0) { + $json = array(0 => $defaults); +} +?> + + + + + +
      +
      +
      +
      +
      + List of Questions +
      +
      +
      + +
      + + +
      +   +
      + +
      + + + + + +
      +
      +
      +
      + + + +
      +
      + +
      + + +
      + +
      + + +
      +
      +
      + + +
      +
      + +
      +
      + +
      +
      +
      + +
      +
      +
      + +
      +
      +
      +
      \ No newline at end of file diff --git a/update/userfiles/modules/timeline/config.php b/update/userfiles/modules/timeline/config.php new file mode 100644 index 00000000..b0ab9e42 --- /dev/null +++ b/update/userfiles/modules/timeline/config.php @@ -0,0 +1,9 @@ + '', + 'date' => '', + 'description' => '' +); + +$data = json_decode($settings, true); + + +$module_template = get_option('data-template', $params['id']); + + +if ($module_template == false and isset($params['template'])) { + $module_template = $params['template']; +} +if ($module_template != false) { + $template_file = module_templates($config['module'], $module_template); +} else { + $template_file = module_templates($config['module'], 'default'); +} +if (is_file($template_file)) { + include($template_file); +} +if (!$data or count($data) == 0) { + print lnotif("Click on settings to edit this module"); + return; +} \ No newline at end of file diff --git a/update/userfiles/modules/timeline/templates/default.php b/update/userfiles/modules/timeline/templates/default.php new file mode 100644 index 00000000..0b4cc717 --- /dev/null +++ b/update/userfiles/modules/timeline/templates/default.php @@ -0,0 +1,75 @@ + + + + + +
      + + $event): ?> +
      + + + +
      + + +
      + + 20 JUNI 2019 + Startdaag +
      + +
      + + 20 Juni 2019 + Startdaag +
      + +
      + + 20 Juni 2019 + Startdaag +
      + +
      + + 20 Juni 2019 + Startdaag +
      + +
      + +
      +
      + + +
      +
      \ No newline at end of file diff --git a/update/userfiles/modules/users/edit_user.php b/update/userfiles/modules/users/edit_user.php deleted file mode 100644 index 0d1c5e06..00000000 --- a/update/userfiles/modules/users/edit_user.php +++ /dev/null @@ -1,406 +0,0 @@ - 0) { - $user_params['limit'] = 1; - $data = get_users($user_params); - -} else { - $data = FALSE; -} -if (isset($data[0]) == false) { - $data = array(); - $data['id'] = 0; - $data['username'] = ''; - $data['password'] = ''; - $data['email'] = ''; - $data['first_name'] = ''; - $data['last_name'] = ''; - $data['api_key'] = ''; - $data['is_active'] = 1; - $data['is_admin'] = 0; - $data['basic_mode'] = 0; - $data['thumbnail'] = ''; - $data['profile_url'] = ''; -} else { - $data = $data[0]; -} - -?> - - - modules->ui('mw.admin.user.edit'); ?> - modules->ui('mw.admin.user.edit.fields'); ?> - - - - - - - - -
      - - - - - - -
      - - -

      - - -
      -
      - - «» - - - -
      - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -
      - - - - -
      -
      - - - - -
      - - -
      -
      - - - - - -
      -
      -
      - - -
      -
      -
      - - -
      -
      -
      - - - - - - - - - -
      - - - - - - - - -
      -
      - - - - -
      - - | - - | - -
      - diff --git a/update/userfiles/modules/users/login/templates/admin.php b/update/userfiles/modules/users/login/templates/admin.php deleted file mode 100644 index a9b56e3f..00000000 --- a/update/userfiles/modules/users/login/templates/admin.php +++ /dev/null @@ -1,177 +0,0 @@ - - - - -
      - - - - - ui->admin_logo_login_link) or mw()->ui->admin_logo_login_link == false) { - $link = "https://microweber.com"; - - } else { - $link = mw()->ui->admin_logo_login_link; - } - - ?> - -
      -
      - -
      - -
      - - - - - - - - - - -

      - - Use ui->brand_name; ?> Account - -

      -
      - or -
      -
      - - */ - - - ?> - - - -
      -
      - " value="" /> -
      -
      - value="" placeholder=""/> -
      - - - -
      - -
      -
      - -
      - -
      - "/> -
      - -
      -
      - - - -
      -
        -
      • - -
      • -
      • -
        - - - - EN - - -
        -
          - - -
        • class="active" >
        • - -
        -
        -
        -
      • -
      - - "/> -
      -
      - -
      -
      - - - diff --git a/update/userfiles/modules/users/login_attempts.php b/update/userfiles/modules/users/login_attempts.php deleted file mode 100644 index f9cb9f91..00000000 --- a/update/userfiles/modules/users/login_attempts.php +++ /dev/null @@ -1,54 +0,0 @@ -orderBy('time', 'desc') - ->take(40) - ->get(); -?> - -
      - - - - - - - - - - - - - - - - - - - - - isEmpty()): - foreach($loginAttempts as $attempt): - ?> - - - - - - - - - - - - -
      username; ?>email; ?>ip; ?>time); ?> - success):?> - - - - -
      -
      \ No newline at end of file diff --git a/update/userfiles/modules/users/manage.php b/update/userfiles/modules/users/manage.php deleted file mode 100644 index dee5d8dd..00000000 --- a/update/userfiles/modules/users/manage.php +++ /dev/null @@ -1,191 +0,0 @@ - 0) { - $user_params['current_page'] = intval($current_page_from_url); - -} elseif (isset($params['current_page'])) { - $current_page_from_url = $user_params['current_page'] = $params['current_page']; -} - -if (isset($params['search'])) { - - if (isset($params['search'])) { - $user_params['keyword'] = $params['search']; - } - - if (isset($params['keyword'])) { - $user_params['search_in_fields'] = array('username', 'email', 'first_name', 'last_name'); - } - - - $user_params['search_by_keyword'] = $params['search']; - $users_per_page = 1000; - $user_params['current_page'] = 1; -} - -//$user_params['debug'] = 1; - -$user_params['limit'] = $users_per_page; - -$data = get_users($user_params); - - -$paging_data = $user_params; -$paging_data['page_count'] = true; -$paging = get_users($paging_data); - - -$self_id = user_id(); - -$registration_approval_required = get_option('registration_approval_required', 'users'); -?> - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -
      - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - " onclick="mw_admin_delete_user_by_id('')"> - - -
      -
      - 1 and isset($paging_param)): ?> - - - - - - \ No newline at end of file diff --git a/update/userfiles/modules/users/register/index.php b/update/userfiles/modules/users/register/index.php deleted file mode 100644 index a429252e..00000000 --- a/update/userfiles/modules/users/register/index.php +++ /dev/null @@ -1,131 +0,0 @@ -
      - - user_manager->terms_check($terms_and_conditions_name, $user_id_or_email)){ - $require_terms = 'n'; - } else { - $terms_label = get_option('terms_label', 'users'); - $terms_label_cleared = str_replace(' ', '', $terms_label); - $terms_label_cleared = strip_tags($terms_label_cleared); - $terms_label_cleared = mb_trim($terms_label_cleared); - if ($terms_label_cleared == '') { - $terms_label = 'I agree with the Terms and Conditions'; - } - } - } - - $show_newsletter_subscription = get_option('form_show_newsletter_subscription', 'users'); - if($show_newsletter_subscription == 'y') { - $newsletter_subscribed = false; - $user_id_or_email = (is_logged()? user_id():false); - if(mw()->user_manager->terms_check('terms_newsletter', $user_id_or_email)){ - $newsletter_subscribed = true; - } - } - - $module_template = get_option('data-template', $params['id']); - if ($module_template == false and isset($params['template'])) { - $module_template = $params['template']; - } - - - if ($module_template != false) { - $template_file = module_templates($config['module'], $module_template); - - } else { - $template_file = module_templates($config['module'], 'default'); - - } - - if (isset($template_file) and ($template_file) != false and is_file($template_file) != false) { - include($template_file); - } else { - $template_file = module_templates($config['module'], 'default'); - if (($template_file) != false and is_file($template_file) != false) { - include($template_file); - } else { - $complete_fallback = dirname(__FILE__) . DS . 'templates' . DS . 'default.php'; - if (is_file($complete_fallback) != false) { - include($complete_fallback); - } - - } - //print 'No default template for '. $config['module'] .' is found'; - } - - ?> - -
      diff --git a/update/userfiles/modules/users/register/templates/default.php b/update/userfiles/modules/users/register/templates/default.php deleted file mode 100644 index afe90977..00000000 --- a/update/userfiles/modules/users/register/templates/default.php +++ /dev/null @@ -1,113 +0,0 @@ - - - -
      -
      -

      - -

      -
      -
      -
      - - - - -
      -
      - " required> -
      -
      - - - - -
      -
      - " required> -
      -
      - - -
      -
      - " required> -
      -
      - -
      -
      - " required> -
      -
      - - -
      -
      - " required> -
      -
      - - - -
      -
      - -
      -
      - - - - - - - -
      -
      - -
      -
      - - - - - - -
      - - -
      -
      diff --git a/update/userfiles/modules/users/terms/index.php b/update/userfiles/modules/users/terms/index.php deleted file mode 100644 index ccbc552d..00000000 --- a/update/userfiles/modules/users/terms/index.php +++ /dev/null @@ -1,22 +0,0 @@ -Terms and Conditions'; -} -?> -
      -
      -
      -
      - - -
      -
      -
      -
      \ No newline at end of file diff --git a/update/userfiles/modules/video/admin.php b/update/userfiles/modules/video/admin.php deleted file mode 100644 index f1169aec..00000000 --- a/update/userfiles/modules/video/admin.php +++ /dev/null @@ -1,290 +0,0 @@ - - - - - - - - - -
      -
      -
      -
      - -
      -
      -
      - -
      -
      -
      -
      -
      - Embed Video -
      -
      -
      -
      - - -
      -
      -
      -
      -
      -
      - Upload Video -
      -
      -
      -
      - - - - - - - - -   - - - -   - - -
      - - - -
      -
      - - -
      -
      -
      - Video Settings -
      -
      -
      - -
      -
      -
      -
      - - -
      -
      -
      - -
      -
      -
      - - -
      -
      -
      -
      - -
      - -
      - -
      - -
      - - -
      -
      - -   -
      -
      - - -
      -
      -
      - - - -
      - -
      - -
      - -
      -
      -
      -
      - - -
      - - -
      - -
      -
      - -
      -
      -
      - -
      -
      -
      - -
      -
      -
      \ No newline at end of file diff --git a/update/userfiles/modules/video/composer.json b/update/userfiles/modules/video/composer.json deleted file mode 100644 index 88d7e961..00000000 --- a/update/userfiles/modules/video/composer.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "microweber/video", - "description": "Video embeding.", - "license": "MIT", - "homepage": "https://www.microweber.com", - "authors": [ - { - "name": "Bozhidar Slaveykov", - "email": "bobi@microweber.com" - } - ], - "keywords": [ - "vimeo", - "video", - "youtube", - "playlist" - ], - "autoload": { - "psr-4": { - "Microweber\\Modules\\Video\\": "src/" - } - }, - "type": "microweber-module", - "target-dir": "video" -} diff --git a/update/userfiles/modules/video/config.php b/update/userfiles/modules/video/config.php deleted file mode 100644 index 6149c00f..00000000 --- a/update/userfiles/modules/video/config.php +++ /dev/null @@ -1,11 +0,0 @@ -'; + return '
      '; } else if (stristr($u, 'metacafe.com') !== false) { $url_parse = parse_url($u); $path = ltrim($url_parse['path'], '/'); diff --git a/update/userfiles/modules/video/index.php b/update/userfiles/modules/video/index.php index 1b4bac78..ca4978f7 100644 --- a/update/userfiles/modules/video/index.php +++ b/update/userfiles/modules/video/index.php @@ -83,8 +83,13 @@ $video->setPlayEmbedVideo(false); $video->setPlayUploadedVideo(true); } + + + $code = $video->render(); +$provider = $video->getProvider(); + $module_template = get_option('data-template', $params['id']); if ($module_template == false and isset($params['template'])) { diff --git a/update/userfiles/modules/video/src/VideoEmbed.php b/update/userfiles/modules/video/src/VideoEmbed.php index abcabc79..98cb505b 100644 --- a/update/userfiles/modules/video/src/VideoEmbed.php +++ b/update/userfiles/modules/video/src/VideoEmbed.php @@ -252,21 +252,27 @@ public function render() switch ($videoUrlHost) { case 'youtube.com': $html = $this->_getYoutubePlayer($videoUrl); + $this->providerIs = 'youtube'; break; case 'youtu.be': $html = $this->_getYoutuPlayer($videoUrl); + $this->providerIs = 'youtube'; break; case 'facebook.com': $html = $this->_getFacebookPlayer($videoUrl); + $this->providerIs = 'facebook'; break; case 'vimeo.com': $html = $this->_getVimeoPlayer($videoUrl); + $this->providerIs = 'vimeo'; break; case 'metacafe.com': $html = $this->_getMetCafePlayer($videoUrl); + $this->providerIs = 'metacafe'; break; case 'dailymotion.com': $html = $this->_getDailyMotionPlayer($videoUrl); + $this->providerIs = 'dailymotion'; break; } } @@ -282,34 +288,46 @@ public function render() } } - protected function _getFacebookPlayer($url) { + public $providerIs = ''; + + public function getProvider() + { + return $this->providerIs; + + } + + protected function _getFacebookPlayer($url) + { $urlParse = parse_url($url); - if(!isset($urlParse['query']) or $urlParse['query'] == false){ + if (!isset($urlParse['query']) or $urlParse['query'] == false) { return false; } $id = explode('v=', $urlParse['query']); - parse_str($urlParse['query'],$query); + parse_str($urlParse['query'], $query); if (isset($query['v'])) { - return '
      '; + return '
      '; } return false; } - protected function _getVimeoPlayer($url) { + protected function _getVimeoPlayer($url) + { $urlParse = parse_url($url); $urlParse = ltrim($urlParse['path'], '/'); - $videoUrl = $this->_getPortocol() . 'player.vimeo.com/video/' . $urlParse . '?title=0&byline=0&portrait=0&badge=0&color=bc9b6a&wmode=transparent&autoplay=' . $this->isAutoplay(); - return $this->_getVideoIframe($videoUrl); + //$videoUrl = $this->_getPortocol() . 'player.vimeo.com/video/' . $urlParse . '?title=0&byline=0&portrait=0&badge=0&color=bc9b6a&wmode=transparent&autoplay=' . $this->isAutoplay(); + return '
      '; + //return $this->_getVideoIframe($videoUrl); } - protected function _getMetCafePlayer($url) { + protected function _getMetCafePlayer($url) + { $urlParse = parse_url($url); $urlPath = ltrim($urlParse['path'], '/'); @@ -324,7 +342,8 @@ protected function _getMetCafePlayer($url) { return $this->_getVideoIframe($videoUrl); } - protected function _getYoutuPlayer($url) { + protected function _getYoutuPlayer($url) + { $urlParse = parse_url($url); $urlParse = ltrim($urlParse['path'], '/'); @@ -336,12 +355,12 @@ protected function _getYoutuPlayer($url) { protected function _getYoutubePlayer($url) { $urlParse = parse_url($url); - if(!isset($urlParse['query']) or $urlParse['query'] == false){ + if (!isset($urlParse['query']) or $urlParse['query'] == false) { return false; } $id = explode('v=', $urlParse['query']); - parse_str($urlParse['query'],$query); + parse_str($urlParse['query'], $query); if (isset($query['v'])) { $videoUrl = $this->_getPortocol() . 'youtube.com/embed/' . $query['v'] . '?v=1&wmode=transparent&autoplay=' . $this->isAutoplay(); @@ -371,16 +390,16 @@ protected function _getVideoIframe($url) { $attributes = array(); $attributes[] = 'frameborder="0"'; - $attributes[] = 'width="'.$this->getWidth() .'"'; - $attributes[] = 'height="'.$this->getHeight() .'"'; + $attributes[] = 'width="' . $this->getWidth() . '"'; + $attributes[] = 'height="' . $this->getHeight() . '"'; $attributes[] = 'allowFullScreen="true"'; if ($this->isLazyLoad()) { $attributes[] = 'class="js-mw-embed-iframe-' . $this->getId() . '"'; $attributes[] = 'style="display:none;"'; - $attributes[] = 'data-src="'.$url .'"'; + $attributes[] = 'data-src="' . $url . '"'; } else { - $attributes[] = 'src="'.$url .'"'; + $attributes[] = 'src="' . $url . '"'; } return ''; @@ -430,7 +449,7 @@ protected function _getEmbedWrapper($class, $html) $class .= ' js-mw-embed-wrapper-' . $this->getId(); } - return '
      _getEmbedWrapperStyles() . '>' . $html . '
      '; + return '
      _getEmbedWrapperStyles() . '>' . $html . '
      '; } protected function _getEmbedIframeWrapper($html = '') diff --git a/update/userfiles/modules/video/templates/default.php b/update/userfiles/modules/video/templates/default.php index b7fff367..9ceaa328 100644 --- a/update/userfiles/modules/video/templates/default.php +++ b/update/userfiles/modules/video/templates/default.php @@ -6,17 +6,17 @@ */ ?> - + - + + + + + diff --git a/update/userfiles/modules/video/vendor/autoload.php b/update/userfiles/modules/video/vendor/autoload.php deleted file mode 100644 index 42975111..00000000 --- a/update/userfiles/modules/video/vendor/autoload.php +++ /dev/null @@ -1,7 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see http://www.php-fig.org/psr/psr-0/ - * @see http://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - // PSR-4 - private $prefixLengthsPsr4 = array(); - private $prefixDirsPsr4 = array(); - private $fallbackDirsPsr4 = array(); - - // PSR-0 - private $prefixesPsr0 = array(); - private $fallbackDirsPsr0 = array(); - - private $useIncludePath = false; - private $classMap = array(); - private $classMapAuthoritative = false; - private $missingClasses = array(); - private $apcuPrefix; - - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', $this->prefixesPsr0); - } - - return array(); - } - - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param array $classMap Class to filename map - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - */ - public function add($prefix, $paths, $prepend = false) - { - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - (array) $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - (array) $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = (array) $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - (array) $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - (array) $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - (array) $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - (array) $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 base directories - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - } - - /** - * Unregisters this instance as an autoloader. - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return bool|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - includeFile($file); - - return true; - } - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath . '\\'; - if (isset($this->prefixDirsPsr4[$search])) { - $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); - foreach ($this->prefixDirsPsr4[$search] as $dir) { - if (file_exists($file = $dir . $pathEnd)) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } -} - -/** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - */ -function includeFile($file) -{ - include $file; -} diff --git a/update/userfiles/modules/video/vendor/composer/autoload_psr4.php b/update/userfiles/modules/video/vendor/composer/autoload_psr4.php deleted file mode 100644 index 68e1ae42..00000000 --- a/update/userfiles/modules/video/vendor/composer/autoload_psr4.php +++ /dev/null @@ -1,10 +0,0 @@ - array($baseDir . '/src'), -); diff --git a/update/userfiles/modules/video/vendor/composer/autoload_real.php b/update/userfiles/modules/video/vendor/composer/autoload_real.php deleted file mode 100644 index 79254fbc..00000000 --- a/update/userfiles/modules/video/vendor/composer/autoload_real.php +++ /dev/null @@ -1,52 +0,0 @@ -= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); - if ($useStaticLoader) { - require_once __DIR__ . '/autoload_static.php'; - - call_user_func(\Composer\Autoload\ComposerStaticInit79734653461af9761e26a1b046cc939f::getInitializer($loader)); - } else { - $map = require __DIR__ . '/autoload_namespaces.php'; - foreach ($map as $namespace => $path) { - $loader->set($namespace, $path); - } - - $map = require __DIR__ . '/autoload_psr4.php'; - foreach ($map as $namespace => $path) { - $loader->setPsr4($namespace, $path); - } - - $classMap = require __DIR__ . '/autoload_classmap.php'; - if ($classMap) { - $loader->addClassMap($classMap); - } - } - - $loader->register(true); - - return $loader; - } -} diff --git a/update/userfiles/modules/video/vendor/composer/autoload_static.php b/update/userfiles/modules/video/vendor/composer/autoload_static.php deleted file mode 100644 index 22e62c7b..00000000 --- a/update/userfiles/modules/video/vendor/composer/autoload_static.php +++ /dev/null @@ -1,31 +0,0 @@ - - array ( - 'Microweber\\Modules\\Video\\' => 25, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'Microweber\\Modules\\Video\\' => - array ( - 0 => __DIR__ . '/../..' . '/src', - ), - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit79734653461af9761e26a1b046cc939f::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit79734653461af9761e26a1b046cc939f::$prefixDirsPsr4; - - }, null, ClassLoader::class); - } -} diff --git a/update/userfiles/modules/white_label/admin.php b/update/userfiles/modules/white_label/admin.php deleted file mode 100644 index 2c1f8f42..00000000 --- a/update/userfiles/modules/white_label/admin.php +++ /dev/null @@ -1,277 +0,0 @@ - - -
      -
      - -

      - - - -
      -
      -
      - - - -
      -

      - -
      - - - - -
      -
      -
      Please fill in the form below to take full advantage of your White Label.
      - For instructions use this short guide White label user guide.
      -
      -
      -
      -
      -
      -
      - - -
      - -
      - - -
      - - -
      - - disabled value=""/> -
      - -
      - - -
      - -
      -
      -
      -
      - -
      -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      -
        -
      • Microweber Marketplace
      • -
      • - -
      • -
      -
      -
      - -
      -
      -
      -
      -
      -
      - diff --git a/update/userfiles/templates/dream/modules/video_small/functions.php b/update/userfiles/templates/dream/modules/video_small/functions.php deleted file mode 100644 index a4abe2da..00000000 --- a/update/userfiles/templates/dream/modules/video_small/functions.php +++ /dev/null @@ -1,2 +0,0 @@ -