diff --git a/.gitignore b/.gitignore index c8e7e9afeb..970efbc2a7 100644 --- a/.gitignore +++ b/.gitignore @@ -56,4 +56,5 @@ public/bundles public/var drivers vendor/ -cache/ \ No newline at end of file +cache/ +docs/generated-docs \ No newline at end of file diff --git a/composer.json b/composer.json index 8ed090ce98..c1001fb135 100644 --- a/composer.json +++ b/composer.json @@ -161,6 +161,9 @@ } }, "config": { - "sort-packages": true + "sort-packages": true, + "allow-plugins": { + "phpstan/extension-installer": false + } } } diff --git a/docs/00_Overview/00_CoreShop_Ecosystem.md b/docs/00_Overview/00_CoreShop_Ecosystem.md deleted file mode 100644 index a861ba4081..0000000000 --- a/docs/00_Overview/00_CoreShop_Ecosystem.md +++ /dev/null @@ -1,9 +0,0 @@ -# CoreShop Ecosystem - -The following list of resources should show you where to get information about CoreShop and whats going on in the whole ecosystem. - -* [CoreShop Documentation](..) -* [CoreShop at Github](https://github.com/coreshop/CoreShop) -* [CoreShop at Packagist](https://packagist.org/packages/coreshop/core-shop) -* [CoreShop at Gitter](https://gitter.im/coreshop/coreshop) -* [Pimcore](https://www.pimcore.org) diff --git a/docs/00_Overview/index.md b/docs/00_Overview/index.md deleted file mode 100644 index 42731a980f..0000000000 --- a/docs/00_Overview/index.md +++ /dev/null @@ -1 +0,0 @@ -## CORESHOP Overview \ No newline at end of file diff --git a/docs/01_Gettings_Started/00_Installation.md b/docs/01_Getting_Started/00_Installation.md similarity index 88% rename from docs/01_Gettings_Started/00_Installation.md rename to docs/01_Getting_Started/00_Installation.md index 164003f8b1..514adaa3ba 100644 --- a/docs/01_Gettings_Started/00_Installation.md +++ b/docs/01_Getting_Started/00_Installation.md @@ -3,7 +3,6 @@ You need a running instance of Pimcore on your system before you can install CoreShop. You can setup your own example: - - Allow dev version to be installed: ```composer config "minimum-stability" "dev"``` and ```composer config "prefer-stable" "true"``` - Install with composer ```composer require coreshop/core-shop ^3.0``` - Run enable Bundle command ```php bin/console pimcore:bundle:enable CoreShopCoreBundle``` diff --git a/docs/01_Gettings_Started/01_Architecture_Overview.md b/docs/01_Getting_Started/01_Architecture_Overview.md similarity index 100% rename from docs/01_Gettings_Started/01_Architecture_Overview.md rename to docs/01_Getting_Started/01_Architecture_Overview.md diff --git a/docs/01_Gettings_Started/02_Upgrade_Notes.md b/docs/01_Getting_Started/02_Upgrade_Notes.md similarity index 100% rename from docs/01_Gettings_Started/02_Upgrade_Notes.md rename to docs/01_Getting_Started/02_Upgrade_Notes.md diff --git a/docs/01_Gettings_Started/04_Difference_to_ecommerce_Framework.md b/docs/01_Getting_Started/04_Difference_to_ecommerce_Framework.md similarity index 100% rename from docs/01_Gettings_Started/04_Difference_to_ecommerce_Framework.md rename to docs/01_Getting_Started/04_Difference_to_ecommerce_Framework.md diff --git a/docs/01_Gettings_Started/img/architecture.png b/docs/01_Getting_Started/img/architecture.png similarity index 100% rename from docs/01_Gettings_Started/img/architecture.png rename to docs/01_Getting_Started/img/architecture.png diff --git a/docs/01_Gettings_Started/index.md b/docs/01_Getting_Started/index.md similarity index 100% rename from docs/01_Gettings_Started/index.md rename to docs/01_Getting_Started/index.md diff --git a/docs/02_Bundles/Address_Bundle.md b/docs/02_Bundles/Address_Bundle.md index 80c9dabebd..0e9de8e078 100644 --- a/docs/02_Bundles/Address_Bundle.md +++ b/docs/02_Bundles/Address_Bundle.md @@ -1,70 +1,10 @@ # CoreShop Address Bundle -Address Bundle provides you with Models for Storing Countries, States, Zones and Addresses. As well as Context Resolvers -to find the visitors Country. - -## Installation -```bash -$ composer require coreshop/address-bundle:^3.0 -``` - -### Adding required bundles to kernel -You need to enable the bundle inside the kernel. - -```php -addBundles([ - new \CoreShop\Bundle\AddressBundle\CoreShopAddressBundle(), - ]); -} -``` - -### Updating database schema -Run the following command. - -```bash -$ php bin/console doctrine:schema:update --force -``` - -### Install Pimcore Entities - -```bash -$ php bin/console coreshop:resources:install -``` - -Learn more about overriding Pimcore Classes [here](../03_Development/01_Extending_Guide/03_Extend_CoreShop_DataObjects.md)) - -## Usage - -This Bundle integrates Address Component into Symfony and Doctrine - -The Address Bundle provides you with basic information needed for addressing: Countries, States, Zones and Address - -The Bundle also introduces an Address Formatter, which formats addresses in country based formats. - -## Doctrine Entities +CoreShop Address Bundle provides a basic set of data for Addressing Information like: - Country - - Zone - State + - Address -## Pimcore Entities - - Address (CoreShopAddress) - -## Pimcore UI - - - Country - - State - - Zone +> This Bundle can be used separately, but doesn't provide any detail information how to use it. -How to use? -```javascript -coreshop.global.resource.open('coreshop.address', 'country'); -coreshop.global.resource.open('coreshop.address', 'state'); -coreshop.global.resource.open('coreshop.address', 'zone'); -``` diff --git a/docs/02_Bundles/Configuration_Bundle.md b/docs/02_Bundles/Configuration_Bundle.md index 7b95ec7fb9..16687ce318 100644 --- a/docs/02_Bundles/Configuration_Bundle.md +++ b/docs/02_Bundles/Configuration_Bundle.md @@ -4,3 +4,14 @@ ```bash $ composer require coreshop/configuration-bundle:^3.0 ``` + +## Usage + +Configuration Component helps you store your configurations in database. + +```php + $service = new CoreShop\Component\Configuration\Service\ConfigurationService($doctrineEntityManager, $configRepo, $configFactory); + $service->set('key', 'value'); + + $service->get('key'); +``` \ No newline at end of file diff --git a/docs/02_Bundles/Core_Bundle.md b/docs/02_Bundles/Core_Bundle.md index 2f2001ba3a..2bf352a440 100644 --- a/docs/02_Bundles/Core_Bundle.md +++ b/docs/02_Bundles/Core_Bundle.md @@ -2,14 +2,4 @@ Core Bundle glues all independent CoreShop Bundles into one e-commerce suite and extends certain parts accordingly. -## Installation -```bash -$ composer require coreshop/core-shop:^3.0 -``` - -### Enable and Install -```bash -$ bin/console pimcore:bundle:enable CoreShopCoreBundle -$ bin/console coreshop:install -``` - +> This Bundle is not advised to be installed seperately! diff --git a/docs/02_Bundles/Frontend_Bundle.md b/docs/02_Bundles/Frontend_Bundle.md new file mode 100644 index 0000000000..f391a1d98d --- /dev/null +++ b/docs/02_Bundles/Frontend_Bundle.md @@ -0,0 +1,5 @@ +# CoreShop Frontend Bundle + +CoreShop FrontendBundle provides some FrontendControllers as well as a default Implementation for the Frontend. + +> This Bundle is not advised to be installed seperately! diff --git a/docs/02_Bundles/Inventory_Bundle.md b/docs/02_Bundles/Inventory_Bundle.md index 2ca2f69a4e..7a085a637b 100644 --- a/docs/02_Bundles/Inventory_Bundle.md +++ b/docs/02_Bundles/Inventory_Bundle.md @@ -1,6 +1,5 @@ # CoreShop Inventory Bundle -## Installation -```bash -$ composer require coreshop/inventory-bundle:^3.0 -``` +CoreShop Inventory Bundle provides a Basic implementation to handle Inventory for a Product. + +> This Bundle can be used separately, but doesn't provide any detail information how to use it. \ No newline at end of file diff --git a/docs/02_Bundles/Locale_Bundle.md b/docs/02_Bundles/Locale_Bundle.md index e11f432ebd..a1169db88a 100644 --- a/docs/02_Bundles/Locale_Bundle.md +++ b/docs/02_Bundles/Locale_Bundle.md @@ -1,6 +1,5 @@ # CoreShop Locale Bundle -## Installation -```bash -$ composer require coreshop/locale-bundle:^3.0 -``` +CoreShop Locale Bundle provides a basic set of data for Locale Information. + +> This Bundle can be used separately, but doesn't provide any detail information how to use it. \ No newline at end of file diff --git a/docs/02_Bundles/Messenger_Bundle.md b/docs/02_Bundles/Messenger_Bundle.md new file mode 100644 index 0000000000..455ce5a1b7 --- /dev/null +++ b/docs/02_Bundles/Messenger_Bundle.md @@ -0,0 +1,26 @@ +# CoreShop Messenger Bundle + +CoreShop Messenger Bundle provides you with a nice UI to see what Messenger Tasks are queued in which queues: + +![Messenger](img/messenger.png) + +## Installation +```bash +$ composer require coreshop/messenger-bundle:^3.0 +``` + +### Adding required bundles to kernel +You need to enable the bundle inside the kernel. + +```php +addBundles([ + new \CoreShop\Bundle\MessengerBundle\CoreShopMessengerBundle(), + ]); +} +``` \ No newline at end of file diff --git a/docs/02_Bundles/Notification_Bundle.md b/docs/02_Bundles/Notification_Bundle.md index 1d86ef8bbb..edb177da74 100644 --- a/docs/02_Bundles/Notification_Bundle.md +++ b/docs/02_Bundles/Notification_Bundle.md @@ -1,6 +1,15 @@ # CoreShop Notification Bundle -## Installation -```bash -$ composer require coreshop/notification-bundle:^3.0 +CoreShop Notification Bundle handles all communication between CoreShop and the outside world. It provides a basic set of data for Notifications like: + - Notification Rules + - Notification Rule Conditions + - Notification Rule Actions + +> This Bundle can be used separately, but doesn't provide any detail information how to use it. + +## Usage +Notifications run async in a Symfony messenger queue: + +``` +bin/console messenger:consume coreshop_notification coreshop_index --time-limit=300 ``` diff --git a/docs/02_Bundles/OptimisticEntityLock_Bundle.md b/docs/02_Bundles/OptimisticEntityLock_Bundle.md new file mode 100644 index 0000000000..41e11429ec --- /dev/null +++ b/docs/02_Bundles/OptimisticEntityLock_Bundle.md @@ -0,0 +1,33 @@ +# CoreShop Optimistic Entity Lock Bundle + +The CoreShop Optimistic Entity Lock Bundle is a package for the CoreShop e-commerce framework, based on the Pimcore platform, designed to handle optimistic entity locking. This bundle helps prevent conflicts when multiple users try to edit the same entity concurrently by implementing an optimistic locking strategy. +![Messenger](img/messenger.png) + +## Installation +```bash +$ composer require optimistic-entity-lock-bundle +``` + +### Adding required bundles to kernel +You need to enable the bundle inside the kernel. + +```php +addBundles([ + new \CoreShop\Bundle\OptimisticEntityLockBundle\CoreShopOptimisticEntityLockBundle(), + ]); +} +``` + +## Usage + +Your Pimcore DataObject Class needs to implement the Interface `CoreShop\Bundle\OptimisticEntityLockBundle\Model\OptimisticLockedInterface`. + +You can therefore add the field `optimisticLockVersion` to your Pimcore Class Definition. + +From now on, everytime the DataObject gets saved, CoreShop compares the Versions and increases it before saving. If the version is different, someone else saved the entity before you and you get a exception. \ No newline at end of file diff --git a/docs/02_Bundles/Order_Bundle.md b/docs/02_Bundles/Order_Bundle.md index 7eb8b3e065..d77f80c8d4 100644 --- a/docs/02_Bundles/Order_Bundle.md +++ b/docs/02_Bundles/Order_Bundle.md @@ -1,76 +1,5 @@ # CoreShop Order Bundle -## Installation -```bash -$ composer require coreshop/order-bundle:^3.0 -``` +CoreShop Order Bundle provides a basic set of data for Orders. -### Adding required bundles to kernel -You need to enable the bundle inside the kernel - -```php -addBundles([ - new \CoreShop\Bundle\OrderBundle\CoreShopOrderBundle(), - ]); -} -``` - -### Updating database schema -Run the following command. - -```bash -$ php bin/console doctrine:schema:update --force -``` - -### Install Pimcore Entities - -```bash -$ php bin/console coreshop:resources:install -``` - -Learn more about overriding Pimcore Classes [here](../03_Development/01_Extending_Guide/03_Extend_CoreShop_DataObjects.md) - -## Usage - -This Bundle integrates Order Component into Symfony and Doctrine - -The Order Bundle provides you with basic information needed for ordering: Orders, Invoices, Shipments and Cart Rules - -## Doctrine Entities - - CartPriceRule - - CartPriceRuleVoucherCode - - State - -## Pimcore Entities - - Cart (CoreShopCart) - - CartItem (CoreShopCartItem) - - Order (CoreShopOrder) - - OrderItem (CoreShopOrderItem) - - OrderInvoice (CoreShopOrderInvoice) - - OrderInvoiceItem (CoreShopOrderInvoiceItem) - - OrderShipment (CoreShopOrderShipment) - - OrderShipmentItem (CoreShopOrderShipmentItem) - -## Cart Price Rule - -### Conditions -Learn more about adding new Conditions [here](../03_Development/01_Extending_Guide/04_Extending_Rule_Conditions.md) - -### Actions -Learn more about adding new Actions [here](../03_Development/01_Extending_Guide/04_Extending_Rule_Actions.md) - -## Pimcore UI - - - Order Grid - -How to use? - -```javascript -coreshop.global.resource.open('coreshop.order', 'orders'); -``` +> This Bundle can be used separately, but doesn't provide any detail information how to use it. \ No newline at end of file diff --git a/docs/02_Bundles/PayumPayment_Bundle.md b/docs/02_Bundles/PayumPayment_Bundle.md new file mode 100644 index 0000000000..3a277c05a5 --- /dev/null +++ b/docs/02_Bundles/PayumPayment_Bundle.md @@ -0,0 +1,3 @@ +# CoreShop Payum Payment Bundle + +Integrates CoreShop Payment Bundle with Payum. \ No newline at end of file diff --git a/docs/02_Bundles/Payum_Bundle.md b/docs/02_Bundles/Payum_Bundle.md index 50cb7e3443..cf10d99944 100644 --- a/docs/02_Bundles/Payum_Bundle.md +++ b/docs/02_Bundles/Payum_Bundle.md @@ -1,6 +1,5 @@ # CoreShop Payum Bundle -## Installation -```bash -$ composer require coreshop/payum-bundle:^3.0 -``` +Handles the Payum Integration with CoreShop. This Bundle requires the Core and can only be used in the full installation. + +> This Bundle is not advised to be installed seperately! diff --git a/docs/02_Bundles/Pimcore_Bundle.md b/docs/02_Bundles/Pimcore_Bundle.md index 1c22e3a831..a27056f2cd 100644 --- a/docs/02_Bundles/Pimcore_Bundle.md +++ b/docs/02_Bundles/Pimcore_Bundle.md @@ -153,4 +153,157 @@ final class SlugEventListener implements EventSubscriberInterface $event->setSlug($event->getSlug() . '-bar'); } } -``` \ No newline at end of file +``` + + +### Data Object Features + +#### Class Converter and Data Migrate +Class converter is a small utility, which lets you migrate all Data from one class to another. Usage: + +```php + true, + 'parentClass' => 'AppBundle\Model\MyProduct' +]; + +//Copies $currentClassName Definition to $newClassName +//$options can overwrite some properties like parentClass +Migrate::migrateClass($currentClassName, $newClassName, $options); + +//This function migrates all data from $currentClassName to $newClassName +//It uses SQL Commands to increase performance of migration +Migrate::migrateData($currentClassName, $newClassName); +``` + +#### Class Installer +Class Installer helps you importing Classes/FieldCollections/ObjectBricks into Pimcore based of a JSON Definition: + +```php + +use CoreShop\Component\Pimcore\ClassInstaller; + +$installer = new ClassInstaller(); + +// For Bricks use +$installer->createBrick($pathToJson, $brickName); + +// For Classes use +$installer->createClass($pathToJson, $className, $updateExistingClass); + +// For FieldCollections use +$installer->createFieldCollection($pathToJson, $fcName); + +``` + +#### Class/Brick/Field Collection Updater +Definition Updaters help you in migrating your Pimcore Class/Bricks or Field Collection Definitions to be properly +migrated from Release to Release. + +To update a Pimcore class use it like this: + +```php +use CoreShop\Component\Pimcore\DataObject\ClassUpdate; + +$classUpdater = new ClassUpdate('Product'); + +//Your JSON Definition from Pimcore +$payment = [ + 'fieldtype' => 'coreShopSerializedData', + 'phpdocType' => 'array', + 'allowedTypes' => + [ + ], + 'maxItems' => 1, + 'name' => 'paymentSettings', + 'title' => 'Payment Settings', + 'tooltip' => '', + 'mandatory' => false, + 'noteditable' => true, + 'index' => false, + 'locked' => null, + 'style' => '', + 'permissions' => null, + 'datatype' => 'data', + 'columnType' => null, + 'queryColumnType' => null, + 'relationType' => false, + 'invisible' => false, + 'visibleGridView' => false, + 'visibleSearch' => false, +]; + +//Check if field exists +if (!$classUpdater->hasField('paymentSettings')) { + //If not insert field after a specific field and save the definition + $classUpdater->insertFieldAfter('paymentProvider', $payment); + $classUpdater->save(); +} + +``` + +Thats it, the same works for FieldCollections with the class `CoreShop\Component\Pimcore\DataObject\FieldCollectionDefinitionUpdate` +and for Bricks with the class `CoreShop\Component\Pimcore\DataObject\BrickDefinitionUpdate` + +#### Inheritance Helper +Inhertiance Helper is a small little but very useful helper class to enable Pimcore inheritance only with a closure function like this: + +```php + +use CoreShop\Component\Pimcore\DataObject\InheritanceHelper; + +$inheritedValue = InheritanceHelper::useInheritedValues(function() use($object) { + return $object->getValueInherited(); +}, true); + +``` + +#### Version Helper +Version Helper is a small little but very useful helper class to disabling or enablind Pimcore Versioning. + +```php + +use CoreShop\Component\Pimcore\DataObject\VersionHelper; + +VersionHelper::useVersioning(function() use($object) { + //Object will be saved without creating a new Version + $object->save(); +}, false); + +``` + +#### Unpublished Helper +Unpublsihed Helper is a small little but very useful helper class to get unpublished objects in Pimcore Frontend. + +```php + +use CoreShop\Component\Pimcore\DataObject\UnpublishedHelper; + +$allProducts = UnpublishedHelper::hideUnpublished(function() use($object) { + //Will return all products, even the unpbulished ones + return $object->getProducts(); +}, false); + +``` + +### Expression Language Features +CoreShop adds some features to the Symfony Expression language like: + +- PimcoreLanguageProvider: to get Pimcore Objects, Assets or Documents inside a Expression Language Query + +### Migration Features + +#### Pimcore Shared Translations +Helps you to install new Shared Translations during Migration: + +```php +use CoreShop\Component\Pimcore\Migration\SharedTranslation; + +SharedTranslation::add('key', 'en', 'value'); +``` diff --git a/docs/02_Bundles/ProductQuantityPriceRules_Bundle.md b/docs/02_Bundles/ProductQuantityPriceRules_Bundle.md new file mode 100644 index 0000000000..9c6dd6d431 --- /dev/null +++ b/docs/02_Bundles/ProductQuantityPriceRules_Bundle.md @@ -0,0 +1,5 @@ +# CoreShop Product Quantity Price Rules Bundle + +This Bundle implements the Quantity Price Rules for CoreShop. + +> This Bundle can be used separately, but doesn't provide any detail information how to use it. \ No newline at end of file diff --git a/docs/02_Bundles/Product_Bundle.md b/docs/02_Bundles/Product_Bundle.md index 15ef0154ff..553453c972 100644 --- a/docs/02_Bundles/Product_Bundle.md +++ b/docs/02_Bundles/Product_Bundle.md @@ -1,68 +1,5 @@ # CoreShop Product Bundle - - Price Calculators - - Pimcore Core Extensions - - Doctrine Mappings - - Symfony Forms - - Product Price Rules - - Product Specific Price Rules +CoreShop Product Bundle is responsible for the Product Management. -## Installation -```bash -$ composer require coreshop/product-bundle:^3.0 -``` - -### Adding required bundles to kernel -You need to enable the bundle inside the kernel - -```php -addBundles([ - new \CoreShop\Bundle\ProductBundle\CoreShopProductBundle(), - ]); -} -``` - -### Updating database schema -Run the following command. - -```bash -$ php bin/console doctrine:schema:update --force -``` - -### Install Pimcore Entities - -```bash -$ php bin/console coreshop:resources:install -``` - -Learn more about overriding Pimcore Classes [here](../03_Development/01_Extending_Guide/03_Extend_CoreShop_DataObjects.md)) - -## Usage - -This Bundle integrates Product Component into Symfony and Doctrine - -The Product Bundle provides you with basic information needed for products: Product, Product Price Rule, Specific Price Rule and Price Calculators - -## Doctrine Entities - - ProductPriceRule - - ProductSpecificPriceRule - -## Pimcore Entities - - Product (CoreShopProduct) - - Category (CoreShopCategory) - -## Pimcore UI - - - Product Grid - -How to use? - -```javascript -coreshop.global.resource.open('coreshop.product', 'products'); -``` +> This Bundle can be used separately, but doesn't provide any detail information how to use it. \ No newline at end of file diff --git a/docs/02_Bundles/Product_Quantity_Price_Rules_Bundle.md b/docs/02_Bundles/Product_Quantity_Price_Rules_Bundle.md deleted file mode 100644 index b63b777278..0000000000 --- a/docs/02_Bundles/Product_Quantity_Price_Rules_Bundle.md +++ /dev/null @@ -1,6 +0,0 @@ -# CoreShop Product Quantity Price Rules Bundle - -## Installation -```bash -$ composer require coreshop/product-quantity-price-rules-bundle:^3.0 -``` diff --git a/docs/02_Bundles/Rule_Bundle.md b/docs/02_Bundles/Rule_Bundle.md index 9e34c71b42..0b029e72b7 100644 --- a/docs/02_Bundles/Rule_Bundle.md +++ b/docs/02_Bundles/Rule_Bundle.md @@ -1,6 +1,7 @@ # CoreShop Rule Bundle -## Installation -```bash -$ composer require coreshop/rule-bundle:^3.0 -``` +CoreShop Rule Bundle is the base Bundle for all Rule Based Systems in CoreShop. It provides a basic set of data for Rules like: + - Rule Conditions + - Rule Actions + +> This Bundle can be used separately, but doesn't provide any detail information how to use it. \ No newline at end of file diff --git a/docs/02_Bundles/Shipping_Bundle.md b/docs/02_Bundles/Shipping_Bundle.md index a04c0bc0b1..d02346691e 100644 --- a/docs/02_Bundles/Shipping_Bundle.md +++ b/docs/02_Bundles/Shipping_Bundle.md @@ -1,52 +1,5 @@ # CoreShop Shipping Bundle -## Installation -```bash -$ composer require coreshop/shipping-bundle:^3.0 -``` +CoreShop Shipping Bundle is responsible for Shipping Calculations. -### Adding required bundles to kernel -You need to enable the bundle inside the kernel - -```php -addBundles([ - new \CoreShop\Bundle\ShippingBundle\CoreShopShippingBundle(), - ]); -} -``` - -### Updating database schema -Run the following command. - -```bash -$ php bin/console doctrine:schema:update --force -``` - -## Usage - -This Bundle integrates Shipping Component into Symfony and Doctrine - -The Shipping Bundle provides you with basic information needed for shipping: Carriers, Shipping Rules, Rule Processors and Calculators - -## Doctrine Entities - - Carrier - - Shipping Rule - - Shipping Rule Group - -## Pimcore UI - - - Carrier - - Shipping Rule - -How to use? - -```javascript -coreshop.global.resource.open('coreshop.shipping', 'carrier'); -coreshop.global.resource.open('coreshop.shipping', 'shipping_rule'); -``` +> This Bundle can be used separately, but doesn't provide any detail information how to use it. \ No newline at end of file diff --git a/docs/02_Components/StorageList_Component.md b/docs/02_Bundles/StorageList_Bundle.md similarity index 69% rename from docs/02_Components/StorageList_Component.md rename to docs/02_Bundles/StorageList_Bundle.md index 9874098a4f..5b2178bb96 100644 --- a/docs/02_Components/StorageList_Component.md +++ b/docs/02_Bundles/StorageList_Bundle.md @@ -1,13 +1,13 @@ -# CoreShop Storage List Component +# CoreShop Storage List Bundle Storage List Component helps you with Lists/Collections of Objects like a Cart, Wishlist or Compare List. ## Usage To use it you need to have 3 models: - - a Storage List: the collection ([```CoreShop\Component\StorageList\Model\StorageListInterface```](https://github.com/coreshop/CoreShop/blob/master/src/CoreShop/Component/StorageList/Model/StorageListInterface.php)) - - a Storage Item: the item within the collection which could store additional information (eg. prices for a cart) ([```CoreShop\Component\StorageList\Model\StorageListItemInterface```](https://github.com/coreshop/CoreShop/blob/master/src/CoreShop/Component/StorageList/Model/StorageListItemInterface.php)) - - a Storage Product: the actual product (eg. object) being stored inside the Item. ([```CoreShop\Component\StorageList\Model\StorageListProductInterface```](https://github.com/coreshop/CoreShop/blob/master/src/CoreShop/Component/StorageList/Model/StorageListProductInterface.php)) +- a Storage List: the collection ([```CoreShop\Component\StorageList\Model\StorageListInterface```](https://github.com/coreshop/CoreShop/blob/master/src/CoreShop/Component/StorageList/Model/StorageListInterface.php)) +- a Storage Item: the item within the collection which could store additional information (eg. prices for a cart) ([```CoreShop\Component\StorageList\Model\StorageListItemInterface```](https://github.com/coreshop/CoreShop/blob/master/src/CoreShop/Component/StorageList/Model/StorageListItemInterface.php)) +- a Storage Product: the actual product (eg. object) being stored inside the Item. ([```CoreShop\Component\StorageList\Model\StorageListProductInterface```](https://github.com/coreshop/CoreShop/blob/master/src/CoreShop/Component/StorageList/Model/StorageListProductInterface.php)) The component already provides you with a basic implementation of [```Storage List```](https://github.com/coreshop/CoreShop/blob/master/src/CoreShop/Component/StorageList/Model/StorageList.php) and [```Storage Item```](https://github.com/coreshop/CoreShop/blob/master/src/CoreShop/Component/StorageList/Model/StorageItem.php). You need to implement the StorageListProduct yourself. @@ -19,10 +19,10 @@ For now, lets create a very basic Session based Wishlist: We need to have following things: - - A Factory class for the Wishlist - - A Factory class for the Wishlist Item - - A StorageListManager to get the current list (more like a repository actually) - - A StoreListModifier +- A Factory class for the Wishlist +- A Factory class for the Wishlist Item +- A StorageListManager to get the current list (more like a repository actually) +- A StoreListModifier CoreShop gives you Basic classes for these 4 things, we just need to instantiate them: diff --git a/docs/02_Bundles/Store_Bundle.md b/docs/02_Bundles/Store_Bundle.md index e9694e916c..561431063d 100644 --- a/docs/02_Bundles/Store_Bundle.md +++ b/docs/02_Bundles/Store_Bundle.md @@ -1,46 +1,5 @@ # CoreShop Store Bundle -## Installation -```bash -$ composer require coreshop/store-bundle:^3.0 -``` +CoreShop Store Bundle provides the abstraction of a Pimcore Website and a CoreShop Store. It handles the configuration for base-currencies and themes. -### Adding required bundles to kernel -You need to enable the bundle inside the kernel - -```php -addBundles([ - new \CoreShop\Bundle\StoreBundle\StoreBundle(), - ]); -} -``` - -### Updating database schema -Run the following command. - -```bash -$ php bin/console doctrine:schema:update --force -``` - -## Usage - -Nothing much to say here, adds a Store Model you can work with. It also adds Multi-theme Support. - -## Doctrine Entities - - Store - -## Pimcore UI - - - Store - -How to use? - -```javascript -coreshop.global.resource.open('coreshop.store', 'store'); -``` +> This Bundle can be used separately, but doesn't provide any detail information how to use it. \ No newline at end of file diff --git a/docs/02_Bundles/Taxation_Bundle.md b/docs/02_Bundles/Taxation_Bundle.md index a1ea544504..7072a2fa78 100644 --- a/docs/02_Bundles/Taxation_Bundle.md +++ b/docs/02_Bundles/Taxation_Bundle.md @@ -1,62 +1,5 @@ # CoreShop Taxation Bundle -## Installation -```bash -$ composer require coreshop/taxation-bundle:^3.0 -``` +CoreShop Taxation Bundle is responsible for Tax Calculations. -### Adding required bundles to kernel -You need to enable the bundle inside the kernel - -```php -addBundles([ - new \CoreShop\Bundle\TaxationBundle\CoreShopTaxationBundle(), - ]); -} -``` - -### Updating database schema -Run the following command. - -```bash -$ php bin/console doctrine:schema:update --force -``` - -### Install Pimcore Entities - -```bash -$ php bin/console coreshop:resources:install -``` - -Learn more about overriding Pimcore Classes [here](../03_Development/01_Extending_Guide/03_Extend_CoreShop_DataObjects.md)) - - -## Usage - - -## Doctrine Entities - - Tax - - TaxRule - - TaxRuleGroup - -## Pimcore Entities - - TaxItem Fieldcollection (CoreShopTaxItem) - - -## Pimcore UI - - - Tax Item - - Tax Rule Group - -How to use? - -```javascript -coreshop.global.resource.open('coreshop.taxation', 'tax_item'); -coreshop.global.resource.open('coreshop.taxation', 'tax_rule_group'); -``` +> This Bundle can be used separately, but doesn't provide any detail information how to use it. \ No newline at end of file diff --git a/docs/02_Bundles/Theme_Bundle.md b/docs/02_Bundles/Theme_Bundle.md new file mode 100644 index 0000000000..5ccb69273c --- /dev/null +++ b/docs/02_Bundles/Theme_Bundle.md @@ -0,0 +1,80 @@ +# CoreShop Theme Bundle + +CoreShop Theme Bundle provides you with a flexible and extensible way of having multiple themes in a Pimcore installation. + +## Installation +```bash +$ composer require coreshop/theme-bundle:^3.0 +``` + +### Adding required bundles to kernel +You need to enable the bundle inside the kernel. + +```php +addBundles([ + new \CoreShop\Bundle\ThemeBundle\CoreShopThemeBundle(), + ]); +} +``` + +## Configuration +Per Default, no Theme Resolver is enabled, you can enable on or multiples like: + +```yaml +core_shop_theme: + default_resolvers: + pimcore_site: true + pimcore_document_property: true +``` + +### Pimcore Site +Resolves the Theme based on the Key of the Root Document of a Pimcore Site. So if the Site's Root Document is called "demo" it tries to find a theme called the same. + +### Pimcore Document Property +Resolves the Theme based on a Document Property of the Site. The Property is called "theme". + +### Custom Resolvers +You can also add custom resolvers like: + +```php + This Bundle can be used separately, but doesn't provide any detail information how to use it. \ No newline at end of file diff --git a/docs/02_Bundles/Variant_Bundle.md b/docs/02_Bundles/Variant_Bundle.md new file mode 100644 index 0000000000..e6b85ccad2 --- /dev/null +++ b/docs/02_Bundles/Variant_Bundle.md @@ -0,0 +1,63 @@ +# CoreShop Variant Bundle + +CoreShop Variant Bundle allows you to manage different Variants of a Product. + +## Installation +```bash + composer require coreshop/variant-bundle +``` + +### Adding required bundles to kernel +You need to enable the bundle inside the kernel. + +```php +addBundles([ + new \CoreShop\Bundle\VariantBundle\CoreShopVariantBundle(), + ]); +} +``` + +## Abstract +Pimcore already supports variants. But it doesn't define what a Variant is, or how a variant differs from the Parent Product or other Variants. + +In classical e-commerce scenarios, you usually have different Variation Types like Size and Color with different Values like `XL` or `Red`. + +CoreShop describes these two types of entities as `Group` (`CoreShop\Component\Variant\Model\AttributeGroupInterface`) and `Value` (`CoreShop\Component\Variant\Model\AttributeValueInterface` + +The "Product" itself than is a sort-of abstract entity that is used to define what Attribute Groups are allowed. The Pimcore Variants then, need to have the values of thse Groups filled. + +Example: + + - AttributeGroup Color + -AttributeValue Red + -AttributeValue Blue + + - product (defines allowed groups for color) + - variant-red (defines the AttributeValue Red in attributes) + - variant-blue (defines the AttributeValue Blue in attributes) + +## Usage +CoreShop Variant Bundle does NOT come with a Installer for certain Resources it requires. That is on purpose and you need to manually install what you need. + +Per Default, it comes with 3 different Classes: + + - `CoreShopAttributeGroup` + - `CoreShopAttributeColor` + - `CoreShopAttributeValue` + +Whereas `Color` and `Value` are two Value types and `Group` is a Group type. + +You can manually import the classes from this dir ```vendor/coreshop/variant-bundle/Resources/install/pimcore/classes``` + +To create a "Product" Class, you need to implement the interface ```CoreShop\Component\Variant\Model\ProductVariantAwareInterface```. The Class requires you to have these fields: + + - attributes - ManyToManyObjectRelation for `CoreShopAttributeColor`/`CoreShopAttributeValue` + - allowedAttributeGroups - ManyToManyObjectRelation for `CoreShopAttributeGroup` + - mainVariant - ManyToOneRelation for `Product` (eg. your Class where you implemented the interface) + diff --git a/docs/02_Bundles/Wishlist_Bundle.md b/docs/02_Bundles/Wishlist_Bundle.md new file mode 100644 index 0000000000..aeb0f83443 --- /dev/null +++ b/docs/02_Bundles/Wishlist_Bundle.md @@ -0,0 +1,5 @@ +# CoreShop Order Bundle + +CoreShop Order Wishlist provides a basic set of data for Wishlists. It is based on StorageList Bundle and shows how that can be integrated into a Pimcore Project. + +> This Bundle can be used separately, but doesn't provide any detail information how to use it. \ No newline at end of file diff --git a/docs/02_Bundles/Workflow_Bundle.md b/docs/02_Bundles/Workflow_Bundle.md index cdee25b991..f2a4e6a0f6 100644 --- a/docs/02_Bundles/Workflow_Bundle.md +++ b/docs/02_Bundles/Workflow_Bundle.md @@ -1,6 +1,5 @@ # CoreShop Workflow Bundle -## Installation -```bash -$ composer require coreshop/workflow-bundle:^3.0 -``` +CoreShop Workflow Bundle is a extension of Symfony Workflow and adds some configuration features to it. + +> This Bundle can be used separately, but doesn't provide any detail information how to use it. \ No newline at end of file diff --git a/docs/02_Bundles/img/embedded_class_data.png b/docs/02_Bundles/img/embedded_class_data.png deleted file mode 100644 index 7b2e1f50e4..0000000000 Binary files a/docs/02_Bundles/img/embedded_class_data.png and /dev/null differ diff --git a/docs/02_Bundles/img/embedded_class_tag.png b/docs/02_Bundles/img/embedded_class_tag.png deleted file mode 100644 index 289b4805aa..0000000000 Binary files a/docs/02_Bundles/img/embedded_class_tag.png and /dev/null differ diff --git a/docs/02_Bundles/img/messenger.png b/docs/02_Bundles/img/messenger.png new file mode 100644 index 0000000000..7e2cce0609 Binary files /dev/null and b/docs/02_Bundles/img/messenger.png differ diff --git a/docs/02_Bundles/index.md b/docs/02_Bundles/index.md index 74a298f869..c7f25c4b94 100644 --- a/docs/02_Bundles/index.md +++ b/docs/02_Bundles/index.md @@ -1,6 +1,6 @@ # CoreShop Bundles -CoreShop provides several Components which are supposed to be independent. +CoreShop is a set of Bundles that provide different functionality. Each Bundle is supposed to be independent and can be used without the other Bundles. Glued together, they provide a full e-commerce solution. - [Address Bundle](./Address_Bundle.md) - [Configuration Bundle](./Configuration_Bundle.md) @@ -8,19 +8,31 @@ CoreShop provides several Components which are supposed to be independent. - [Currency Bundle](./Currency_Bundle.md) - [Customer Bundle](./Customer_Bundle.md) - [Fixture Bundle](./Fixture_Bundle.md) + - [Frontend Bundle](./Frontend_Bundle.md) - [Index Bundle](./Index_Bundle.md) - [Inventory Bundle](./Inventory_Bundle.md) - [Locale Bundle](./Locale_Bundle.md) - [Money Bundle](./Money_Bundle.md) + - [Messenger Bundle](./Messenger_Bundle.md) ! + - [Money Bundle](./Money_Bundle.md) ! + - [Notification Bundle](./Notification_Bundle.md) ! + - [Optimistic Entity Lock Bundle](./OptimisticEntityLock_Bundle.md) ! - [Order Bundle](./Order_Bundle.md) - [Payment Bundle](./Payment_Bundle.md) + - [Payum Payment Bundle](./PayumPayment_Bundle.md) ! - [Product Bundle](./Product_Bundle.md) - - [Resource Bundle](./Product_Bundle.md) + - [Product Quantity Price Rules Bundle](./ProductQuantityPriceRules_Bundle.md) + - [Resource Bundle](./Resource_Bundle) - [Rule Bundle](./Rule_Bundle.md) - [SEO Bundle](./SEO_Bundle.md) - [Sequence Bundle](./Sequence_Bundle.md) - [Shipping Bundle](./Shipping_Bundle.md) + - [Storage List Bundle](./StorageList_Bundle.md) - [Store Bundle](./Store_Bundle.md) - [Taxation Bundle](./Taxation_Bundle.md) + - [Theme Bundle](./Theme_Bundle.md) - [Tracking Bundle](./Tracking_Bundle.md) + - [User Bundle](./User_Bundle.md) + - [Variant Bundle](./Variant_Bundle.md) + - [Wishlist Bundle](./Wishlist_Bundle.md) - [Workflow Bundle](./Workflow_Bundle.md) \ No newline at end of file diff --git a/docs/02_Components/Address_Component.md b/docs/02_Components/Address_Component.md deleted file mode 100644 index 06046780e8..0000000000 --- a/docs/02_Components/Address_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Address Component - -Address Component holds Address Information and takes care about formatting addresses, as well as determining which Country the User comes from. \ No newline at end of file diff --git a/docs/02_Components/Configuration_Component.md b/docs/02_Components/Configuration_Component.md deleted file mode 100644 index bff96d2af0..0000000000 --- a/docs/02_Components/Configuration_Component.md +++ /dev/null @@ -1,10 +0,0 @@ -# CoreShop Configuration Component - -Configuration Component helps you store your configurations in database. - -```php - $service = new CoreShop\Component\Configuration\Service\ConfigurationService($doctrineEntityManager, $configRepo, $configFactory); - $service->set('key', 'value'); - - $service->get('key'); -``` \ No newline at end of file diff --git a/docs/02_Components/Core_Component.md b/docs/02_Components/Core_Component.md deleted file mode 100644 index 5ea5892af4..0000000000 --- a/docs/02_Components/Core_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Core Component - -The Core Component marries all other Components into one e-commerce suite. \ No newline at end of file diff --git a/docs/02_Components/Currency_Component.md b/docs/02_Components/Currency_Component.md deleted file mode 100644 index 321468cee2..0000000000 --- a/docs/02_Components/Currency_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Currency Component - -Currency Component takes care about Currency, Currency Conversion and Formatting, as well as determining which Currency is the current one. \ No newline at end of file diff --git a/docs/02_Components/Customer_Component.md b/docs/02_Components/Customer_Component.md deleted file mode 100644 index a232ea281b..0000000000 --- a/docs/02_Components/Customer_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Customer Component - -Customer Component takes care about Customer Models. \ No newline at end of file diff --git a/docs/02_Components/Index_Component.md b/docs/02_Components/Index_Component.md deleted file mode 100644 index 128319f1c4..0000000000 --- a/docs/02_Components/Index_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Index Component - -Index Component takes care about storing Meta-Informations for Indexes and Filters. \ No newline at end of file diff --git a/docs/02_Components/Inventory_Component.md b/docs/02_Components/Inventory_Component.md deleted file mode 100644 index 043f412920..0000000000 --- a/docs/02_Components/Inventory_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Inventory Component - -Inventory Component takes care about Stock Information. \ No newline at end of file diff --git a/docs/02_Components/Locale_Component.md b/docs/02_Components/Locale_Component.md deleted file mode 100644 index 00387cc15f..0000000000 --- a/docs/02_Components/Locale_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Locale Component - -Locale Component is a small wrapper around Pimcore's way of handling Locales. \ No newline at end of file diff --git a/docs/02_Components/Notification_Component.md b/docs/02_Components/Notification_Component.md deleted file mode 100644 index 241bb7b0f1..0000000000 --- a/docs/02_Components/Notification_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Notification Component - -TBD \ No newline at end of file diff --git a/docs/02_Components/Order_Component.md b/docs/02_Components/Order_Component.md deleted file mode 100644 index c63498be7d..0000000000 --- a/docs/02_Components/Order_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Order Component - -Order Component takes care about Cart, Orders and Qoutes. All of this three share one Interface "ProposalInterface"/"ProposalItemInterface". \ No newline at end of file diff --git a/docs/02_Components/Payment_Component.md b/docs/02_Components/Payment_Component.md deleted file mode 100644 index 4536f08027..0000000000 --- a/docs/02_Components/Payment_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Payment Component - -Payment Component takes care about Payment Informations. \ No newline at end of file diff --git a/docs/02_Components/Pimcore_Component.md b/docs/02_Components/Pimcore_Component.md deleted file mode 100644 index f88fa7123c..0000000000 --- a/docs/02_Components/Pimcore_Component.md +++ /dev/null @@ -1,216 +0,0 @@ -# CoreShop Pimcore Component - -## Features - -### Data Object Features - -#### Class Converter and Data Migrate -Class converter is a small utility, which lets you migrate all Data from one class to another. Usage: - -```php - true, - 'parentClass' => 'AppBundle\Model\MyProduct' -]; - -//Copies $currentClassName Definition to $newClassName -//$options can overwrite some properties like parentClass -Migrate::migrateClass($currentClassName, $newClassName, $options); - -//This function migrates all data from $currentClassName to $newClassName -//It uses SQL Commands to increase performance of migration -Migrate::migrateData($currentClassName, $newClassName); -``` - -#### Class Installer -Class Installer helps you importing Classes/FieldCollections/ObjectBricks into Pimcore based of a JSON Definition: - -```php - -use CoreShop\Component\Pimcore\ClassInstaller; - -$installer = new ClassInstaller(); - -// For Bricks use -$installer->createBrick($pathToJson, $brickName); - -// For Classes use -$installer->createClass($pathToJson, $className, $updateExistingClass); - -// For FieldCollections use -$installer->createFieldCollection($pathToJson, $fcName); - -``` - -#### Class/Brick/Field Collection Updater -Definition Updaters help you in migrating your Pimcore Class/Bricks or Field Collection Definitions to be properly -migrated from Release to Release. - -To update a Pimcore class use it like this: - -```php -use CoreShop\Component\Pimcore\DataObject\ClassUpdate; - -$classUpdater = new ClassUpdate('Product'); - -//Your JSON Definition from Pimcore -$payment = [ - 'fieldtype' => 'coreShopSerializedData', - 'phpdocType' => 'array', - 'allowedTypes' => - [ - ], - 'maxItems' => 1, - 'name' => 'paymentSettings', - 'title' => 'Payment Settings', - 'tooltip' => '', - 'mandatory' => false, - 'noteditable' => true, - 'index' => false, - 'locked' => null, - 'style' => '', - 'permissions' => null, - 'datatype' => 'data', - 'columnType' => null, - 'queryColumnType' => null, - 'relationType' => false, - 'invisible' => false, - 'visibleGridView' => false, - 'visibleSearch' => false, -]; - -//Check if field exists -if (!$classUpdater->hasField('paymentSettings')) { - //If not insert field after a specific field and save the definition - $classUpdater->insertFieldAfter('paymentProvider', $payment); - $classUpdater->save(); -} - -``` - -Thats it, the same works for FieldCollections with the class `CoreShop\Component\Pimcore\DataObject\FieldCollectionDefinitionUpdate` -and for Bricks with the class `CoreShop\Component\Pimcore\DataObject\BrickDefinitionUpdate` - -#### Inheritance Helper -Inhertiance Helper is a small little but very useful helper class to enable Pimcore inheritance only with a closure function like this: - -```php - -use CoreShop\Component\Pimcore\DataObject\InheritanceHelper; - -$inheritedValue = InheritanceHelper::useInheritedValues(function() use($object) { - return $object->getValueInherited(); -}, true); - -``` - -#### Version Helper -Version Helper is a small little but very useful helper class to disabling or enablind Pimcore Versioning. - -```php - -use CoreShop\Component\Pimcore\DataObject\VersionHelper; - -VersionHelper::useVersioning(function() use($object) { - //Object will be saved without creating a new Version - $object->save(); -}, false); - -``` - -#### Unpublished Helper -Unpublsihed Helper is a small little but very useful helper class to get unpublished objects in Pimcore Frontend. - -```php - -use CoreShop\Component\Pimcore\DataObject\UnpublishedHelper; - -$allProducts = UnpublishedHelper::hideUnpublished(function() use($object) { - //Will return all products, even the unpbulished ones - return $object->getProducts(); -}, false); - -``` - -### Expression Language Features -CoreShop adds some features to the Symfony Expression language like: - - - PimcoreLanguageProvider: to get Pimcore Objects, Assets or Documents inside a Expression Language Query - -### Migration Features - -#### Pimcore Shared Translations -Helps you to install new Shared Translations during Migration: - -```php -use CoreShop\Component\Pimcore\Migration\SharedTranslation; - -SharedTranslation::add('key', 'en', 'value'); -``` - -### Twig Features -CoreShop adds a lot of additional twig functions to make a developers live even more enjoyable :) - -#### Asset Helper Tests - -These tests let you test if a certain object is a Pimcore Asset or one of its subtypes: - - - asset - - asset_archive - - asset_audio - - asset_document - - asset_folder - - asset_image - - asset_text - - asset_unknown - - asset_video - -```twig -{% if image is asset_image %} - {# Process Image #} -{% endif %} -``` - -#### Document Helper Tests -These tests let you test if a certain object is a Pimcore Document or one of its subtypes: - - - document - - document_email - - document_folder - - document_hardlink - - document_newsletter - - document_page - - document_link - - document_page_snippet - - document_print - - document_print_container - - document_print_page - - document_snippet - -```twig -{% if document is document_page %} - {# Process Document #} -{% endif %} -``` - -#### Document Helper Class -These tests let you test if a certain object is a Pimcore DataObject or a DataObject of a specific class. - - - object - - object_class($className) - -```twig -{% if product is object %} - {# product is of any DataObject Tyoe #} -{% endif %} - -{% if product is object_class('Product') %} - {# product is of a Product DataObject #} -{% endif %} -``` diff --git a/docs/02_Components/Product_Component.md b/docs/02_Components/Product_Component.md deleted file mode 100644 index b07c46ab6c..0000000000 --- a/docs/02_Components/Product_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Product Component - -Product Component takes care about Product Models, as well as Product Price Rules, Specific Product Rules and Price Calculators. \ No newline at end of file diff --git a/docs/02_Components/Product_Quantity_Price_Rules_Component.md b/docs/02_Components/Product_Quantity_Price_Rules_Component.md deleted file mode 100644 index b987deb882..0000000000 --- a/docs/02_Components/Product_Quantity_Price_Rules_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Product Quantity Price Rules Component - -Component for Quantity Price Rules. diff --git a/docs/02_Components/Registry_Component.md b/docs/02_Components/Registry_Component.md deleted file mode 100644 index 39deee569f..0000000000 --- a/docs/02_Components/Registry_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Registry Component - -Registry Component takes care about Service Registries and Prioritized Service Registration which are used basically everywhere in CoreShop. \ No newline at end of file diff --git a/docs/02_Components/Resource_Component.md b/docs/02_Components/Resource_Component.md deleted file mode 100644 index e03f7f2fe3..0000000000 --- a/docs/02_Components/Resource_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Resource Component - -Resource Component is the heart of CoreShops Models \ No newline at end of file diff --git a/docs/02_Components/Rule_Component.md b/docs/02_Components/Rule_Component.md deleted file mode 100644 index bebcf7424a..0000000000 --- a/docs/02_Components/Rule_Component.md +++ /dev/null @@ -1,8 +0,0 @@ -# CoreShop Rule Component - -Rule Component is the base-component for all Rule related stuff in CoreShop. For example: - - CoreShop Cart Price Rules - - Product Price Rule - - Product Specific Price Rule - - Shipping Rule - - Mail Rule \ No newline at end of file diff --git a/docs/02_Components/SEO_Component.md b/docs/02_Components/SEO_Component.md deleted file mode 100644 index 150b8562eb..0000000000 --- a/docs/02_Components/SEO_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop SEO Component - -Inventory Component takes care about SEO. \ No newline at end of file diff --git a/docs/02_Components/Sequence_Component.md b/docs/02_Components/Sequence_Component.md deleted file mode 100644 index a5dd08de3a..0000000000 --- a/docs/02_Components/Sequence_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Sequence Component - -Sequence Component creates new Numbers for Orders/Quotes/Invoices etc. \ No newline at end of file diff --git a/docs/02_Components/Shipping_Component.md b/docs/02_Components/Shipping_Component.md deleted file mode 100644 index 0d75cc6f4e..0000000000 --- a/docs/02_Components/Shipping_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Shipping Component - -Shipping Component takes care about Shipping Rules and Carriers \ No newline at end of file diff --git a/docs/02_Components/Store_Component.md b/docs/02_Components/Store_Component.md deleted file mode 100644 index afabd4362f..0000000000 --- a/docs/02_Components/Store_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Store Component - -Store Component takes care about Stores and determines which Store the User is in. \ No newline at end of file diff --git a/docs/02_Components/Taxation_Component.md b/docs/02_Components/Taxation_Component.md deleted file mode 100644 index 64a2534813..0000000000 --- a/docs/02_Components/Taxation_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Taxation Component - -Taxation Component takes about Taxes and calculating them. \ No newline at end of file diff --git a/docs/02_Components/Tracking_Component.md b/docs/02_Components/Tracking_Component.md deleted file mode 100644 index 0b6478c696..0000000000 --- a/docs/02_Components/Tracking_Component.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Tracking Component - -TBD \ No newline at end of file diff --git a/docs/02_Components/index.md b/docs/02_Components/index.md deleted file mode 100644 index 68d9d1cafe..0000000000 --- a/docs/02_Components/index.md +++ /dev/null @@ -1,26 +0,0 @@ -# CoreShop Components - -CoreShop provides several Components which are supposed to be independent. - - - [Address](./Address_Component.md) - - [Configuration](./Configuration_Component.md) - - [Core](./Core_Component.md) - - [Currency](./Currency_Component.md) - - [Customer](./Customer_Component.md) - - [Index](./Index_Component.md) - - [Inventory](./Inventory_Component.md) - - [Locale](./Locale_Component.md) - - [Notification](./Notification_Component.md) - - [Order](./Order_Component.md) - - [Payment](./Payment_Component.md) - - [Pimcore](./Pimcore_Component.md) - - [Product](./Product_Component.md) - - [Registry](./Registry_Component.md) - - [Resource](./Resource_Component.md) - - [Rule](./Rule_Component.md) - - [Sequence](./Sequence_Component.md) - - [Storage List](./StorageList_Component.md) - - [Shipping](./Shipping_Component.md) - - [Store](./Store_Component.md) - - [Taxation](./Taxation_Component.md) - - [Tracking](./Tracking_Component.md) \ No newline at end of file diff --git a/docs/02_User_Documentation/01_Stores.md b/docs/02_User_Documentation/01_Stores.md index 4a4512bc4b..0500f9d0e3 100644 --- a/docs/02_User_Documentation/01_Stores.md +++ b/docs/02_User_Documentation/01_Stores.md @@ -8,7 +8,7 @@ By default a store is connected with a pimcore Site. This is CoreShops default behaviour. One store for your default page, which is also your default store. If you have multiple Domains it's possible to add a store to each domain. -> **Tip:** Learn more about pimcore multi sites: [https://www.pimcore.org/docs/latest/MVC/Routing_and_URLs/Working_with_Sites.html](https://www.pimcore.org/docs/latest/MVC/Routing_and_URLs/Working_with_Sites.html) +> **Tip:** Learn more about pimcore multi sites: [Pimcore Sites](https://pimcore.com/docs/pimcore/current/Development_Documentation/MVC/Routing_and_URLs/Working_with_Sites.html) ## Custom Store Locator Sometimes you have just one site installation but you want do use different Stores. diff --git a/docs/02_User_Documentation/03_Price_Rules/01_Cart_Price_Rules.md b/docs/02_User_Documentation/03_Price_Rules/01_Cart_Price_Rules.md index 95e1aa7bfb..013798adb4 100644 --- a/docs/02_User_Documentation/03_Price_Rules/01_Cart_Price_Rules.md +++ b/docs/02_User_Documentation/03_Price_Rules/01_Cart_Price_Rules.md @@ -1,7 +1,6 @@ -# CoreShop Cart Price Rules +# CoreShop Cart Price Rules Documentation -Cart Price Rules are applied as discount on your cart. -Cart Price Rules can also be used with voucher codes. +Cart price rules in CoreShop provide a flexible way to offer discounts and promotions in your e-commerce store built on the Pimcore platform. These rules can be based on various conditions, such as cart subtotal, specific products, customer groups, or other criteria. This documentation will guide you through creating and managing cart price rules in CoreShop. ![Cart Price Rules](img/cart-pricerule.png) diff --git a/docs/02_User_Documentation/03_Price_Rules/02_Product_Price_Rules.md b/docs/02_User_Documentation/03_Price_Rules/02_Product_Price_Rules.md index 1dc1bb2539..67f9cf6cf4 100644 --- a/docs/02_User_Documentation/03_Price_Rules/02_Product_Price_Rules.md +++ b/docs/02_User_Documentation/03_Price_Rules/02_Product_Price_Rules.md @@ -1,6 +1,6 @@ -# CoreShop Product Price Rules +# CoreShop Product Price Rules Documentation -Product Price Rules are applied directly on products and the "discounted" price will be stored directly in the order. +Product price rules in CoreShop offer a flexible way to provide discounts and special pricing for products in your e-commerce store built on the Pimcore platform. These rules can be based on various conditions and can apply to specific products, categories, or customer groups. This documentation will guide you through creating and managing product price rules in CoreShop. ![Cart Price Rules](img/product-pricerule.png) diff --git a/docs/02_User_Documentation/03_Price_Rules/03_Specific_Price_Rules.md b/docs/02_User_Documentation/03_Price_Rules/03_Specific_Price_Rules.md index acca99e580..9f6cb01cfe 100644 --- a/docs/02_User_Documentation/03_Price_Rules/03_Specific_Price_Rules.md +++ b/docs/02_User_Documentation/03_Price_Rules/03_Specific_Price_Rules.md @@ -1,7 +1,6 @@ -# CoreShop Specific Price Rules +# CoreShop Specific Price Rules Documentation -Specific Prices are basically the same as Product Price Rules, but are configured directly on the -product and therefore are only applied on that product. +Specific price rules in CoreShop provide a flexible way to create targeted discounts and special pricing for products in your e-commerce store built on the Pimcore platform. These rules apply directly to individual products or variants and can be based on customer groups, currencies, or countries. This documentation will guide you through creating and managing specific price rules in CoreShop. ![Specific Price Rules](img/specific-price-rules.png) diff --git a/docs/02_User_Documentation/03_Price_Rules/04_Quantity_Price_Rules.md b/docs/02_User_Documentation/03_Price_Rules/04_Quantity_Price_Rules.md index 6095b8d424..f5c19e9da0 100644 --- a/docs/02_User_Documentation/03_Price_Rules/04_Quantity_Price_Rules.md +++ b/docs/02_User_Documentation/03_Price_Rules/04_Quantity_Price_Rules.md @@ -1,11 +1,6 @@ -# CoreShop Quantity Price Rules +# CoreShop Quantity Price Rules Documentation -Quantity Price Rules are configured directly on the product and therefore are only applied -on that product. The settings are different to specific price rules. Calculation Behaviour -means the property on which the amount is determined. This is volume per default. - -Quantity price rules are only applied to the price in context of a cart. In other cases the -price calculator ignores them. +CoreShop Quantity Price Rules provide a flexible way to offer volume-based discounts for products in your e-commerce store built on the Pimcore platform. These rules apply to specific products and offer tiered pricing depending on the quantity purchased. This documentation will guide you through creating and managing quantity price rules in CoreShop. ![Specific Price Rules](img/quantity-price-rules.png) diff --git a/docs/02_User_Documentation/05_Shipping/01_Carriers.md b/docs/02_User_Documentation/05_Shipping/01_Carriers.md index f87f5c14cb..c9ef0dabc5 100644 --- a/docs/02_User_Documentation/05_Shipping/01_Carriers.md +++ b/docs/02_User_Documentation/05_Shipping/01_Carriers.md @@ -1 +1,24 @@ -# TODO \ No newline at end of file +# CoreShop Carriers Documentation + +CoreShop Carriers are an essential part of the shipping process in the CoreShop e-commerce framework, built on the Pimcore platform. Carriers represent shipping providers (e.g., UPS, FedEx, or DHL) and are responsible for delivering orders to customers. This documentation will guide you through the process of creating and managing carriers in CoreShop. + +## Creating a Carrier + +To create a carrier, follow these steps: + + - Log in to the CoreShop admin interface. + - Navigate to the "Shipping" tab and click on "Carriers." + - Click the "Add new" button to create a new carrier. + - Enter a name for the carrier and configure the other available options as needed. + +## Carrier Options + +When creating a carrier, you can configure various options to customize its behavior: + + - Name: A descriptive name for the carrier (e.g., UPS, FedEx, or DHL). + - Tracking Url: A string value that indicates the tracking url + - Tax Rule Group: The tax rule group applied to shipping costs for this carrier. If you want to apply taxes to shipping costs, you'll need to create a tax rule group and assign it to the carrier. + - Shipping Rules: The shipping rules associated with this carrier. Shipping rules define shipping costs based on various conditions such as weight, price, dimensions, and destination. You can assign multiple shipping rules to a carrier, and the system will evaluate them in order of priority to determine the final shipping cost. + +## Summary +CoreShop Carriers provide a robust way to manage shipping providers and their associated services. By creating carriers and configuring their options, you can offer customers a range of shipping choices based on factors such as delivery time and cost. Combined with shipping rules, carriers give you the flexibility to create a tailored shipping experience for your e-commerce store. \ No newline at end of file diff --git a/docs/02_User_Documentation/05_Shipping/02_Shipping_Rules.md b/docs/02_User_Documentation/05_Shipping/02_Shipping_Rules.md index f87f5c14cb..47da42f5dd 100644 --- a/docs/02_User_Documentation/05_Shipping/02_Shipping_Rules.md +++ b/docs/02_User_Documentation/05_Shipping/02_Shipping_Rules.md @@ -1 +1,53 @@ -# TODO \ No newline at end of file +# CoreShop Shipping Rules Documentation + +CoreShop Shipping Rules is a powerful feature within the CoreShop e-commerce framework built on the Pimcore platform. It allows you to create flexible and customizable shipping rules that define shipping costs based on various conditions such as weight, price, dimensions, and shipping destination. + +## Overview + +Shipping rules in CoreShop can be composed of conditions and actions. Conditions determine whether a rule should be applied, while actions define the changes to the shipping costs. + +CoreShop provides a user-friendly interface for creating and managing shipping rules. You can create multiple rules, each with different conditions and actions, to cover various scenarios. + +## Creating Shipping Rules + + - Navigate to the "Shipping" tab and click on "Shipping Rules." + - Click the "Add new" button to create a new shipping rule. + - Enter a name for the rule and configure the other available options as needed. + +## Configuring Conditions + +Conditions determine whether the shipping rule should be applied to an order. You can create multiple conditions for a single rule, and all conditions must be met for the rule to be applied. CoreShop offers several types of conditions, including: + + - Weight: Based on the total weight of the order. + - Price: Based on the total price of the order. + - Dimension: Based on the dimensions (length, width, and height) of the order. + - Quantity: Based on the total quantity of items in the order. + - Countries: Based on the shipping destination country. + - Zones: Based on the shipping destination zone (a group of countries). + +To add a condition to your shipping rule: + + - Click the "Add Condition" button in the "Conditions" section of the shipping rule. + - Choose the desired condition type from the dropdown menu. + - Configure the condition parameters as needed. + +For example, if you want to apply a shipping rule only to orders with a total weight of over 10kg, you would add a weight condition and set the minimum weight to 10kg. + +## Configuring Actions +Actions define the changes to the shipping costs when a rule is applied. You can create multiple actions for a single rule. CoreShop offers several types of actions, including: + + - Discount Amount: Apply a fixed discount amount to the shipping cost. + - Discount Percentage: Apply a percentage discount to the shipping cost. + - Add Amount: Add a fixed amount to the shipping cost. + - Add Percentage: Add a percentage amount to the shipping cost. + +To add an action to your shipping rule: + + - Click the "Add Action" button in the "Actions" section of the shipping rule. + - Choose the desired action type from the dropdown menu. + - Configure the action parameters as needed. + +For example, if you want to apply a 20% discount to the shipping cost when the rule is applied, you would add a discount percentage action and set the percentage value to 20. + +# Summary +CoreShop Shipping Rules offer a powerful and flexible way to define and manage shipping costs for your e-commerce store. By creating various conditions and actions, you can customize shipping costs based on factors such as weight, price, dimensions, and destination. This allows you to cater to different customer needs and provide more accurate shipping estimates. \ No newline at end of file diff --git a/docs/02_User_Documentation/05_Shipping/index.md b/docs/02_User_Documentation/05_Shipping/index.md index 3ea6374d6b..c50fa16054 100644 --- a/docs/02_User_Documentation/05_Shipping/index.md +++ b/docs/02_User_Documentation/05_Shipping/index.md @@ -1,27 +1,6 @@ # CoreShop Shipping -## Until Build 87 +CoreShop provides a comprehensive shipping management system that allows you to define and configure various aspects of shipping, such as carriers, shipping rules, and carrier services. -Shipping prices have been calculated using Ranges. Ranges can be defined by price or weight. Prices are defined using a Zone and a Range. For example (Range is defined as the total cart weight): - -| Range | 0-100 | 100-400 | 400-1000 | 1000-10000 | -|---|---|---|---|---| -| Europe | 10 | 20 | 30 | 35 | -| America | 20 | 30 | 50 | 80 | -| Asia | 20 | 40 | 50 | 100 | - -The shipping for Europe with a cart-weight of 150kg would be 20. - -![Carriers](img/carriers.png) - -## Since Build 88 - -Since Build 88 CoreShop uses "Shipping Rules". Within shipping rules you can define which conditions must be true for which actions. So for example: - -Carrier "A" only delivers to Europe and only with a max-weight of 100kg. The price is 5€ + 10% fee. - -Your Rule would now look like this: -![Condition](img/example1-conditions.png) - -Your Action would look like this: -![Condition](img/example2-action.png) +* [Carriers](./01_Carriers.md) +* [Shipping Rules](./02_Shipping_Rules.md) \ No newline at end of file diff --git a/docs/02_User_Documentation/07_Catalog/01_Products.md b/docs/02_User_Documentation/07_Catalog/01_Products.md index f87f5c14cb..8ee93715a7 100644 --- a/docs/02_User_Documentation/07_Catalog/01_Products.md +++ b/docs/02_User_Documentation/07_Catalog/01_Products.md @@ -1 +1,3 @@ -# TODO \ No newline at end of file +# CoreShop Products Documentation + +Products are the core of any e-commerce store built on the Pimcore platform. CoreShop provides a flexible and feature-rich system for managing products, including product variants, attributes, images, and more. \ No newline at end of file diff --git a/docs/02_User_Documentation/07_Catalog/02_Product_Variants.md b/docs/02_User_Documentation/07_Catalog/02_Product_Variants.md index f87f5c14cb..74a21e3037 100644 --- a/docs/02_User_Documentation/07_Catalog/02_Product_Variants.md +++ b/docs/02_User_Documentation/07_Catalog/02_Product_Variants.md @@ -1 +1,3 @@ -# TODO \ No newline at end of file +# Product Variants + +CoreShop has the Variant Bundle to handle Variants, see [here](../../02_Bundles/Variant_Bundle.md). \ No newline at end of file diff --git a/docs/02_User_Documentation/07_Catalog/03_Categories.md b/docs/02_User_Documentation/07_Catalog/03_Categories.md index f87f5c14cb..a1aa2e5963 100644 --- a/docs/02_User_Documentation/07_Catalog/03_Categories.md +++ b/docs/02_User_Documentation/07_Catalog/03_Categories.md @@ -1 +1,3 @@ -# TODO \ No newline at end of file +# CoreShop Categories Documentation + +Categories in CoreShop provide a way to organize and structure the products in your e-commerce store built on the Pimcore platform. Using categories, you can create a hierarchical navigation system that allows customers to browse and find products easily. \ No newline at end of file diff --git a/docs/03_Development/02_Localization/01_Currencies/02_Exchange_Rates.md b/docs/03_Development/02_Localization/01_Currencies/02_Exchange_Rates.md deleted file mode 100644 index d920bcf9b6..0000000000 --- a/docs/03_Development/02_Localization/01_Currencies/02_Exchange_Rates.md +++ /dev/null @@ -1,3 +0,0 @@ -# CoreShop Exchange Rates - -TODO \ No newline at end of file diff --git a/docs/03_Development/02_Localization/01_Currencies/index.md b/docs/03_Development/02_Localization/01_Currencies/index.md index 888c9ead4e..1277d81063 100644 --- a/docs/03_Development/02_Localization/01_Currencies/index.md +++ b/docs/03_Development/02_Localization/01_Currencies/index.md @@ -3,5 +3,4 @@ > CoreShop is a multi-currency able eCommerce Framework. Therefore it is possible to create and use different currencies. 1. [Create, Update, Read, Delete](./01_CRUD.md) -2. [Exchange Rates](./02_Exchange_Rates.md) 2. [Currency Context](./03_Context.md) \ No newline at end of file diff --git a/docs/02_Components/Product_Unit.md b/docs/03_Development/03_Products/06_Units.md similarity index 97% rename from docs/02_Components/Product_Unit.md rename to docs/03_Development/03_Products/06_Units.md index 0956a1430d..7a5f3e4a46 100644 --- a/docs/02_Components/Product_Unit.md +++ b/docs/03_Development/03_Products/06_Units.md @@ -1,4 +1,4 @@ -# CoreShop Product Unit Definitions +# CoreShop Product Units Units for Products can be defined globally in the Pimcore Backend on CoreShopMenu > Product > Product Units. diff --git a/docs/03_Development/03_Products/06_Unit_Definitions.md b/docs/03_Development/03_Products/07_Unit_Definitions.md similarity index 100% rename from docs/03_Development/03_Products/06_Unit_Definitions.md rename to docs/03_Development/03_Products/07_Unit_Definitions.md diff --git a/docs/03_Development/03_Products/index.md b/docs/03_Development/03_Products/index.md index 63b54e85e5..39e6cfff29 100644 --- a/docs/03_Development/03_Products/index.md +++ b/docs/03_Development/03_Products/index.md @@ -7,4 +7,5 @@ This guide should lead you through how CoreShop handles Product information and 3. [Price Rules](./03_Price_Rules) 4. [Configuration](./04_Configuration.md) 5. [Multiple Product DataObjects](./05_Multiple_Product_DataObjects.md) - 6. [Product Unit Definitions](./06_Unit_Definitions.md) + 6. [Product Units](./06_Units.md) + 6. [Product Unit Definitions](./07_Unit_Definitions.md) diff --git a/docs/03_Development/04_Cart/03_Cart_Modifier.md b/docs/03_Development/04_Cart/03_Cart_Modifier.md index 52a41e588a..269d719a7d 100644 --- a/docs/03_Development/04_Cart/03_Cart_Modifier.md +++ b/docs/03_Development/04_Cart/03_Cart_Modifier.md @@ -9,4 +9,4 @@ CoreShop provides you with a helper service to modify the cart. It handles follo The Modifier implements the interface [```CoreShop\Component\Order\Cart\CartModifierInterface```](https://github.com/coreshop/CoreShop/blob/master/src/CoreShop/Component/Order/Cart/CartModifierInterface.php) and is implemented by the service ```coreshop.cart.modifier``` -The Cart Modifier itself, uses the [Storage List Component](../../02_Components/StorageList_Component.md) \ No newline at end of file +The Cart Modifier itself, uses the [Storage List Component](../../03_Bundles/StorageList_Bundle.md) \ No newline at end of file diff --git a/docs/03_Development/06_Order/07_Quote/01_Quote_Creation.md b/docs/03_Development/06_Order/07_Quote/01_Quote_Creation.md deleted file mode 100644 index 30404ce4c5..0000000000 --- a/docs/03_Development/06_Order/07_Quote/01_Quote_Creation.md +++ /dev/null @@ -1 +0,0 @@ -TODO \ No newline at end of file diff --git a/docs/03_Development/06_Order/07_Quote/02_Transformer.md b/docs/03_Development/06_Order/07_Quote/02_Transformer.md deleted file mode 100644 index 30404ce4c5..0000000000 --- a/docs/03_Development/06_Order/07_Quote/02_Transformer.md +++ /dev/null @@ -1 +0,0 @@ -TODO \ No newline at end of file diff --git a/docs/03_Development/06_Order/07_Quote/03_Configuration.md b/docs/03_Development/06_Order/07_Quote/03_Configuration.md deleted file mode 100644 index 30404ce4c5..0000000000 --- a/docs/03_Development/06_Order/07_Quote/03_Configuration.md +++ /dev/null @@ -1 +0,0 @@ -TODO \ No newline at end of file diff --git a/docs/03_Development/06_Order/07_Quote/04_Extend_Quote.md b/docs/03_Development/06_Order/07_Quote/04_Extend_Quote.md deleted file mode 100644 index 30404ce4c5..0000000000 --- a/docs/03_Development/06_Order/07_Quote/04_Extend_Quote.md +++ /dev/null @@ -1 +0,0 @@ -TODO \ No newline at end of file diff --git a/docs/03_Development/06_Order/07_Quote/index.md b/docs/03_Development/06_Order/07_Quote/index.md deleted file mode 100644 index 30404ce4c5..0000000000 --- a/docs/03_Development/06_Order/07_Quote/index.md +++ /dev/null @@ -1 +0,0 @@ -TODO \ No newline at end of file diff --git a/docs/03_Development/06_Order/index.md b/docs/03_Development/06_Order/index.md index cda520d0ba..280d4243fc 100644 --- a/docs/03_Development/06_Order/index.md +++ b/docs/03_Development/06_Order/index.md @@ -6,7 +6,6 @@ This guide should lead you through how CoreShop handles Orders. - [Order Workflow](./03_Order_Workflow.md) - [Invoice](./05_Invoice) - [Shipment](./06_Shipment) - - [Quote](./07_Quote) - [Template/Twig Helper](./08_TemplateHelper.md) - [Extend Order with additional data](./09_AdditionalData.md) diff --git a/docs/config.json b/docs/config.json index aed7b35a8c..76463f3c28 100644 --- a/docs/config.json +++ b/docs/config.json @@ -1,19 +1,57 @@ { "title" : "CoreShop 3.0.x - Pimcore eCommerce - Documentation", + "sub_title": "", "tagline" : "CoreShop 3.0.x - Pimcore eCommerce", - "repo": "coreshop/core-shop", - "html": { - "theme": "coreshop-blue", - "edit_on_github" : "coreshop/CoreShop/edit/master/docs" - }, - "themes_directory" : "themes", - "links": { - "Website": "https://www.coreshop.org" - }, - "breadcrumbs": false, - "google_analytics": "UA-75356862-4", + "author": "", + "languages": [], + "format": "html", + "processor": "", "ignore": { "files": ["generate-api.sh", "generate-docs.sh", "generate-docs-local.sh", "config.json", "composer.json", "composer.lock"], - "folders": ["vendor", "themes", "generated_docs", "img"] + "folders": ["vendor", "themes", "generated_docs"] + }, + "timezone": "Europe/Vienna", + "live": { + "clean_urls": true + }, + "html": { + "ribbon_text": "", + "theme": "pimcore-core", + "breadcrumbs": true, + "breadcrumb_separator": "Chevrons", + "toggle_code": false, + "date_modified": false, + "float": false, + "search": true, + "inherit_index": true, + "repo": "pimcore/pimcore", + "twitter": false, + "links": { + "Website": "https://www.coreshop.org", + "Github": "https://github.com/coreshop/CoreShop" + }, + "google_analytics": "UA-75356862-4", + "banner": { + + }, + "linked_docs": { + "pimcore": { + "title": "Pimcore", + "description": "Picmore Docs", + "link": "https://pimcore.com/docs/", + "css_classes": "enterprise", + "ribbon_text": "Pimcore" + } + }, + "edit_on_github": "coreshop/CoreShop/edit/master/doc", + "disqus": { + "include": false, + "url_prefix": "https://coreshop.org/docs/latest/" + }, + "version_info": { + "include": true, + "source_url": "https://github.com/coreshop/CoreShop/commit/{commit_hash}", + "source_name": "coreshop/CoreShop@{short_commit_hash}" + } } } diff --git a/docs/generate-docs-local.sh b/docs/generate-docs-local.sh index 9a5cc212d1..6e2d3d515b 100644 --- a/docs/generate-docs-local.sh +++ b/docs/generate-docs-local.sh @@ -1,4 +1,3 @@ echo "Generate CoreShop Docs" -lessc themes/coreshop/less/theme-coreshop.less themes/coreshop/css/theme-coreshop.min.css -x /opt/homebrew/opt/php@7.4/bin/php vendor/bin/daux generate --destination=generated-docs -s . diff --git a/docs/index.md b/docs/index.md index 94fc9591c9..625f7deb3c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,24 @@ -Welcome to the CoreShop Documentation! +--- +title: CoreShop - Pimcore eCommerce Framework +--- - * [Website](https://www.coreshop.org) - * [API-Documentation](https://api.coreshop.org/3.0.0) - * [Github](https://github.com/coreshop/CoreShop) +# CoreShop Documentation + +> This documentation section provides all information you need to use the CoreShop - Pimcore eCommerce Framework +> +> We've aimed this part of the documentation at a developer's audience. + +CoreShop provides a fully flexible and extendable eCommerce Solution for Pimcore. If you want to know more about Pimcore, please visit [pimcore.com](https://pimcore.com). + +## Documentation Overview + +The Core Framework documentation is divided into three sections that aim to guide the reader through its first use of the platform: + +* See the [Getting Started](./01_Getting_Started) section for an overview and information about the installation process. +* See the [Bundles](./02_Bundles) section for details about the different Bundles CoreShop provides. +* See the [User Documentation](./02_User_Documentation) section for documentation configuration of CoreShop. +* See the [Development](./03_Development) section for documentation about developing with CoreShop. + +## Additional resources for getting started with CoreShop +- [CoreShop Demo](https://demo3.coreshop.org): See CoreShop in action and also use it as a blueprint application for your own implementations. diff --git a/docs/themes/common/less/_fonts.less b/docs/static/themes/common/less/_fonts.less old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/common/less/_fonts.less rename to docs/static/themes/common/less/_fonts.less diff --git a/docs/themes/common/less/_print.less b/docs/static/themes/common/less/_print.less old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/common/less/_print.less rename to docs/static/themes/common/less/_print.less diff --git a/docs/themes/common/less/_typography.less b/docs/static/themes/common/less/_typography.less old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/common/less/_typography.less rename to docs/static/themes/common/less/_typography.less diff --git a/docs/themes/coreshop/config.json b/docs/static/themes/coreshop/config.json old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/config.json rename to docs/static/themes/coreshop/config.json diff --git a/docs/themes/coreshop/css/_variables.css b/docs/static/themes/coreshop/css/_variables.css similarity index 100% rename from docs/themes/coreshop/css/_variables.css rename to docs/static/themes/coreshop/css/_variables.css diff --git a/docs/themes/coreshop/css/theme-blue.min.css b/docs/static/themes/coreshop/css/theme-blue.min.css old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/css/theme-blue.min.css rename to docs/static/themes/coreshop/css/theme-blue.min.css diff --git a/docs/themes/coreshop/css/theme-coreshop.css b/docs/static/themes/coreshop/css/theme-coreshop.css similarity index 100% rename from docs/themes/coreshop/css/theme-coreshop.css rename to docs/static/themes/coreshop/css/theme-coreshop.css diff --git a/docs/themes/coreshop/css/theme-coreshop.min.css b/docs/static/themes/coreshop/css/theme-coreshop.min.css similarity index 100% rename from docs/themes/coreshop/css/theme-coreshop.min.css rename to docs/static/themes/coreshop/css/theme-coreshop.min.css diff --git a/docs/themes/coreshop/img/coreshop_tag.png b/docs/static/themes/coreshop/img/coreshop_tag.png similarity index 100% rename from docs/themes/coreshop/img/coreshop_tag.png rename to docs/static/themes/coreshop/img/coreshop_tag.png diff --git a/docs/themes/coreshop/img/favicon.ico b/docs/static/themes/coreshop/img/favicon.ico similarity index 100% rename from docs/themes/coreshop/img/favicon.ico rename to docs/static/themes/coreshop/img/favicon.ico diff --git a/docs/themes/coreshop/img/logo-full.svg b/docs/static/themes/coreshop/img/logo-full.svg similarity index 100% rename from docs/themes/coreshop/img/logo-full.svg rename to docs/static/themes/coreshop/img/logo-full.svg diff --git a/docs/themes/coreshop/js/bootstrap.min.js b/docs/static/themes/coreshop/js/bootstrap.min.js old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/js/bootstrap.min.js rename to docs/static/themes/coreshop/js/bootstrap.min.js diff --git a/docs/themes/coreshop/js/daux.js b/docs/static/themes/coreshop/js/daux.js old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/js/daux.js rename to docs/static/themes/coreshop/js/daux.js diff --git a/docs/themes/coreshop/js/highlight.pack.js b/docs/static/themes/coreshop/js/highlight.pack.js similarity index 100% rename from docs/themes/coreshop/js/highlight.pack.js rename to docs/static/themes/coreshop/js/highlight.pack.js diff --git a/docs/themes/coreshop/js/jquery-1.11.3.min.js b/docs/static/themes/coreshop/js/jquery-1.11.3.min.js old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/js/jquery-1.11.3.min.js rename to docs/static/themes/coreshop/js/jquery-1.11.3.min.js diff --git a/docs/themes/coreshop/js/pimcore_code_section.js b/docs/static/themes/coreshop/js/pimcore_code_section.js similarity index 100% rename from docs/themes/coreshop/js/pimcore_code_section.js rename to docs/static/themes/coreshop/js/pimcore_code_section.js diff --git a/docs/themes/coreshop/less/_components.less b/docs/static/themes/coreshop/less/_components.less old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/less/_components.less rename to docs/static/themes/coreshop/less/_components.less diff --git a/docs/themes/coreshop/less/_homepage.less b/docs/static/themes/coreshop/less/_homepage.less old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/less/_homepage.less rename to docs/static/themes/coreshop/less/_homepage.less diff --git a/docs/themes/coreshop/less/_mixins.less b/docs/static/themes/coreshop/less/_mixins.less old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/less/_mixins.less rename to docs/static/themes/coreshop/less/_mixins.less diff --git a/docs/themes/coreshop/less/_print.less b/docs/static/themes/coreshop/less/_print.less old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/less/_print.less rename to docs/static/themes/coreshop/less/_print.less diff --git a/docs/themes/coreshop/less/_structure.less b/docs/static/themes/coreshop/less/_structure.less old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/less/_structure.less rename to docs/static/themes/coreshop/less/_structure.less diff --git a/docs/themes/coreshop/less/_typography.less b/docs/static/themes/coreshop/less/_typography.less old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/less/_typography.less rename to docs/static/themes/coreshop/less/_typography.less diff --git a/docs/themes/coreshop/less/_utilities.less b/docs/static/themes/coreshop/less/_utilities.less old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/less/_utilities.less rename to docs/static/themes/coreshop/less/_utilities.less diff --git a/docs/themes/coreshop/less/_variables.less b/docs/static/themes/coreshop/less/_variables.less old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/less/_variables.less rename to docs/static/themes/coreshop/less/_variables.less diff --git a/docs/themes/coreshop/less/theme-coreshop.less b/docs/static/themes/coreshop/less/theme-coreshop.less old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/less/theme-coreshop.less rename to docs/static/themes/coreshop/less/theme-coreshop.less diff --git a/docs/themes/coreshop/less/theme.less b/docs/static/themes/coreshop/less/theme.less old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/less/theme.less rename to docs/static/themes/coreshop/less/theme.less diff --git a/docs/themes/coreshop/templates/content.php b/docs/static/themes/coreshop/templates/content.php old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/templates/content.php rename to docs/static/themes/coreshop/templates/content.php diff --git a/docs/themes/coreshop/templates/home.php b/docs/static/themes/coreshop/templates/home.php old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/templates/home.php rename to docs/static/themes/coreshop/templates/home.php diff --git a/docs/themes/coreshop/templates/layout/00_layout.php b/docs/static/themes/coreshop/templates/layout/00_layout.php old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/templates/layout/00_layout.php rename to docs/static/themes/coreshop/templates/layout/00_layout.php diff --git a/docs/themes/coreshop/templates/layout/05_page.php b/docs/static/themes/coreshop/templates/layout/05_page.php old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/templates/layout/05_page.php rename to docs/static/themes/coreshop/templates/layout/05_page.php diff --git a/docs/themes/coreshop/templates/partials/google_analytics.php b/docs/static/themes/coreshop/templates/partials/google_analytics.php old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/templates/partials/google_analytics.php rename to docs/static/themes/coreshop/templates/partials/google_analytics.php diff --git a/docs/themes/coreshop/templates/partials/navbar_content.php b/docs/static/themes/coreshop/templates/partials/navbar_content.php old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/templates/partials/navbar_content.php rename to docs/static/themes/coreshop/templates/partials/navbar_content.php diff --git a/docs/themes/coreshop/templates/partials/piwik_analytics.php b/docs/static/themes/coreshop/templates/partials/piwik_analytics.php old mode 100755 new mode 100644 similarity index 100% rename from docs/themes/coreshop/templates/partials/piwik_analytics.php rename to docs/static/themes/coreshop/templates/partials/piwik_analytics.php diff --git a/docs/static/themes/pimcore/config.json b/docs/static/themes/pimcore/config.json new file mode 100644 index 0000000000..5640881e93 --- /dev/null +++ b/docs/static/themes/pimcore/config.json @@ -0,0 +1,22 @@ +{ + "favicon": "img/favicon.png", + "css": [], + "js": [ + "js/build/pimcore.min.js" + ], + "fonts": [ + "//fonts.googleapis.com/css?family=Open+Sans:100,200,300,400,500,600,700,800,900" + ], + "variants": { + "core": { + "css": [ + "css/pimcore-core.min.css" + ] + }, + "generic": { + "css": [ + "css/pimcore-generic.min.css" + ] + } + } +} diff --git a/docs/static/themes/pimcore/css/pimcore-core.min.css b/docs/static/themes/pimcore/css/pimcore-core.min.css new file mode 100644 index 0000000000..c16cdddad7 --- /dev/null +++ b/docs/static/themes/pimcore/css/pimcore-core.min.css @@ -0,0 +1,5 @@ +/*! + * Pimcore Documentation + * License: GPLv3 + */ +/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}[hidden],template{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.clearfix:after,.clearfix:before{content:" ";display:table}.clearfix:after{clear:both}.pull-right{float:right!important}.pull-left{float:left!important}.hidden{display:none!important}*,:after,:before{box-sizing:border-box}body{margin:0;padding:0}body,html{height:100%;background-color:#fff;color:#2d2d2d}.Columns__left{background-color:#f7f7f7}.Columns__right__content{padding:10px;background-color:#fff}.Collapsible__content{display:none}.Collapsible__trigger{margin:12px;padding:7px 10px;background-color:transparent;border:none;float:right;background-image:none;filter:none;box-shadow:none}.Collapsible__trigger--bar{display:block;width:18px;height:2px;margin-top:2px;margin-bottom:3px;background-color:#0078be;box-shadow:none}.Collapsible__trigger:hover{background-color:#c5c5cb;box-shadow:none}.Collapsible__trigger:hover .Collapsible__trigger--bar{background-color:#3f4657;box-shadow:none}@media screen and (min-width:768px){body{background-color:#0078be}.Navbar{position:fixed;z-index:1030;width:100%}.Collapsible__trigger{display:none!important}.Collapsible__content{display:block!important}.Columns{height:100%}.Columns:after,.Columns:before{content:" ";display:table}.Columns:after{clear:both}.Columns__left,.Columns__right{position:relative;min-height:1px;float:left;overflow:auto;height:100%}.Columns__left{width:25%;border-right:1px solid #e7e7e9;overflow-x:hidden}.Columns__right{width:75%}.Columns__right__content{padding:0 20px 20px;min-height:100%}}body{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}h1,h2,h3,h4,h5,h6{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:300}.s-content body{font-size:15px}.s-content h1,.s-content h2,.s-content h3,.s-content h4,.s-content h5,.s-content h6{font-weight:300;-webkit-font-smoothing:antialiased;cursor:text;line-height:1.4em;margin-top:.3em;margin-bottom:.3em}.s-content h1 code,.s-content h1 tt,.s-content h2 code,.s-content h2 tt,.s-content h3 code,.s-content h3 tt,.s-content h4 code,.s-content h4 tt,.s-content h5 code,.s-content h5 tt,.s-content h6 code,.s-content h6 tt{font-size:inherit}.s-content h1 i,.s-content h2 i,.s-content h3 i,.s-content h4 i,.s-content h5 i,.s-content h6 i{font-size:.7em}.s-content h1 p,.s-content h2 p,.s-content h3 p,.s-content h4 p,.s-content h5 p,.s-content h6 p{margin-top:0}.s-content h1{font-size:2.66666667em;color:#000}.s-content h2{font-size:2em;border-bottom:1px solid #eee;color:#000}.s-content h3{font-size:1.73333333em}.s-content h4{font-size:1.46666667em}.s-content h5{font-size:1.2em}.s-content h6{font-size:1.06666667em;color:#555}.s-content a{text-decoration:underline}.s-content p{line-height:1.8em;margin-bottom:20px}.s-content ol,.s-content ul{padding-left:30px}.s-content ul p,.s-content ul ul{margin:0}.s-content dl{padding:0}.s-content dl dt{font-weight:700;font-style:italic;padding:0;margin:15px 0 5px}.s-content dl dt:first-child{padding:0}.s-content dl dd{margin:0 0 15px;padding:0 15px}.s-content blockquote{font-size:1.2em;border-left:4px solid #ddd;padding:7px 15px}.s-content blockquote p{font-size:inherit}.s-content table{width:100%;padding:0;border-collapse:collapse}.s-content table tr{border-top:1px solid #eee;background-color:#fff;margin:0;padding:0}.s-content table tr:nth-child(2n){background-color:#f8f8f8}.s-content table th{font-weight:700;background:#eee}.s-content table td,.s-content table th{border:1px solid #eee;margin:0;padding:6px 13px}.s-content blockquote>:first-child,.s-content dl dd>:first-child,.s-content dl dt>:first-child,.s-content ol>:first-child,.s-content table td>:first-child,.s-content table th>:first-child,.s-content ul>:first-child{margin-top:0}.s-content blockquote>:last-child,.s-content dl dd>:last-child,.s-content dl dt>:last-child,.s-content ol>:last-child,.s-content table td>:last-child,.s-content table th>:last-child,.s-content ul>:last-child{margin-bottom:0}.s-content img{max-width:100%;display:block;margin:0 auto}.s-content code{font-family:Monaco,Menlo,Consolas,Courier New,monospace}.s-content code,.s-content tt{margin:0 2px;padding:0 5px;white-space:nowrap;border:1px solid #eaeaea;background-color:#f8f8f8;border-radius:3px}.s-content pre{background:#fdf6e3;color:#657b83;line-height:1.5em;overflow:auto;padding:20px;margin:0 -20px 20px}.s-content pre code{margin:0;padding:0;white-space:pre}.s-content pre code,.s-content pre tt{background-color:transparent;border:none}.s-content pre{border:none;border-radius:0;padding:10px 30px;margin-left:-20px;margin-right:-20px}@media (min-width:1150px){.Columns__right--float .Columns__right__content{height:100%;overflow:auto;padding:0!important;background-color:transparent!important;position:relative}.Columns__right--float .Columns__right__content article{width:100%;min-height:100%;overflow:auto;position:relative;z-index:1}.Columns__right--float .Columns__right__content article:before{content:"";width:50%;min-height:100%;overflow:auto;background-color:#fff;display:block;margin:0;position:absolute;z-index:-1}.Columns__right--float .Page__header,.Columns__right--float .Pager,.Columns__right--float .s-content blockquote,.Columns__right--float .s-content dl,.Columns__right--float .s-content h2,.Columns__right--float .s-content h3,.Columns__right--float .s-content h4,.Columns__right--float .s-content h5,.Columns__right--float .s-content h6,.Columns__right--float .s-content hr,.Columns__right--float .s-content ol,.Columns__right--float .s-content p,.Columns__right--float .s-content table,.Columns__right--float .s-content ul{float:left;clear:left;width:47%;margin-left:1.5%;margin-right:1.5%}.Columns__right--float .s-content table{background-color:#fff;white-space:normal}.Columns__right--float .s-content table code,.Columns__right--float .s-content table pre{white-space:normal}.Columns__right--float .s-content blockquote:before,.Columns__right--float .s-content dl:before,.Columns__right--float .s-content h2:before,.Columns__right--float .s-content h3:before,.Columns__right--float .s-content h4:before,.Columns__right--float .s-content h5:before,.Columns__right--float .s-content h6:before,.Columns__right--float .s-content hr:before,.Columns__right--float .s-content ol:before,.Columns__right--float .s-content p:before,.Columns__right--float .s-content ul:before{width:100%;height:10px;display:block;clear:both}.Columns__right--float .s-content blockquote dl,.Columns__right--float .s-content blockquote h2,.Columns__right--float .s-content blockquote h3,.Columns__right--float .s-content blockquote h4,.Columns__right--float .s-content blockquote h5,.Columns__right--float .s-content blockquote h6,.Columns__right--float .s-content blockquote hr,.Columns__right--float .s-content blockquote ol,.Columns__right--float .s-content blockquote p,.Columns__right--float .s-content blockquote pre,.Columns__right--float .s-content blockquote ul,.Columns__right--float .s-content dl dl,.Columns__right--float .s-content dl h2,.Columns__right--float .s-content dl h3,.Columns__right--float .s-content dl h4,.Columns__right--float .s-content dl h5,.Columns__right--float .s-content dl h6,.Columns__right--float .s-content dl hr,.Columns__right--float .s-content dl ol,.Columns__right--float .s-content dl p,.Columns__right--float .s-content dl pre,.Columns__right--float .s-content dl ul,.Columns__right--float .s-content h2 dl,.Columns__right--float .s-content h2 h2,.Columns__right--float .s-content h2 h3,.Columns__right--float .s-content h2 h4,.Columns__right--float .s-content h2 h5,.Columns__right--float .s-content h2 h6,.Columns__right--float .s-content h2 hr,.Columns__right--float .s-content h2 ol,.Columns__right--float .s-content h2 p,.Columns__right--float .s-content h2 pre,.Columns__right--float .s-content h2 ul,.Columns__right--float .s-content h3 dl,.Columns__right--float .s-content h3 h2,.Columns__right--float .s-content h3 h3,.Columns__right--float .s-content h3 h4,.Columns__right--float .s-content h3 h5,.Columns__right--float .s-content h3 h6,.Columns__right--float .s-content h3 hr,.Columns__right--float .s-content h3 ol,.Columns__right--float .s-content h3 p,.Columns__right--float .s-content h3 pre,.Columns__right--float .s-content h3 ul,.Columns__right--float .s-content h4 dl,.Columns__right--float .s-content h4 h2,.Columns__right--float .s-content h4 h3,.Columns__right--float .s-content h4 h4,.Columns__right--float .s-content h4 h5,.Columns__right--float .s-content h4 h6,.Columns__right--float .s-content h4 hr,.Columns__right--float .s-content h4 ol,.Columns__right--float .s-content h4 p,.Columns__right--float .s-content h4 pre,.Columns__right--float .s-content h4 ul,.Columns__right--float .s-content h5 dl,.Columns__right--float .s-content h5 h2,.Columns__right--float .s-content h5 h3,.Columns__right--float .s-content h5 h4,.Columns__right--float .s-content h5 h5,.Columns__right--float .s-content h5 h6,.Columns__right--float .s-content h5 hr,.Columns__right--float .s-content h5 ol,.Columns__right--float .s-content h5 p,.Columns__right--float .s-content h5 pre,.Columns__right--float .s-content h5 ul,.Columns__right--float .s-content h6 dl,.Columns__right--float .s-content h6 h2,.Columns__right--float .s-content h6 h3,.Columns__right--float .s-content h6 h4,.Columns__right--float .s-content h6 h5,.Columns__right--float .s-content h6 h6,.Columns__right--float .s-content h6 hr,.Columns__right--float .s-content h6 ol,.Columns__right--float .s-content h6 p,.Columns__right--float .s-content h6 pre,.Columns__right--float .s-content h6 ul,.Columns__right--float .s-content hr dl,.Columns__right--float .s-content hr h2,.Columns__right--float .s-content hr h3,.Columns__right--float .s-content hr h4,.Columns__right--float .s-content hr h5,.Columns__right--float .s-content hr h6,.Columns__right--float .s-content hr hr,.Columns__right--float .s-content hr ol,.Columns__right--float .s-content hr p,.Columns__right--float .s-content hr pre,.Columns__right--float .s-content hr ul,.Columns__right--float .s-content ol dl,.Columns__right--float .s-content ol h2,.Columns__right--float .s-content ol h3,.Columns__right--float .s-content ol h4,.Columns__right--float .s-content ol h5,.Columns__right--float .s-content ol h6,.Columns__right--float .s-content ol hr,.Columns__right--float .s-content ol ol,.Columns__right--float .s-content ol p,.Columns__right--float .s-content ol pre,.Columns__right--float .s-content ol ul,.Columns__right--float .s-content p dl,.Columns__right--float .s-content p h2,.Columns__right--float .s-content p h3,.Columns__right--float .s-content p h4,.Columns__right--float .s-content p h5,.Columns__right--float .s-content p h6,.Columns__right--float .s-content p hr,.Columns__right--float .s-content p ol,.Columns__right--float .s-content p p,.Columns__right--float .s-content p pre,.Columns__right--float .s-content p ul,.Columns__right--float .s-content ul dl,.Columns__right--float .s-content ul h2,.Columns__right--float .s-content ul h3,.Columns__right--float .s-content ul h4,.Columns__right--float .s-content ul h5,.Columns__right--float .s-content ul h6,.Columns__right--float .s-content ul hr,.Columns__right--float .s-content ul ol,.Columns__right--float .s-content ul p,.Columns__right--float .s-content ul pre,.Columns__right--float .s-content ul ul{width:auto;float:none;display:block}.Columns__right--float .s-content hr{border-color:#ddd}.Columns__right--float .s-content blockquote p,.Columns__right--float .s-content blockquote pre,.Columns__right--float .s-content li p,.Columns__right--float .s-content li pre{width:100%}.Columns__right--float .s-content pre{float:left;clear:right;width:50%;border:none;border-left:10px solid #fff;margin:0 0 10px;padding:0}.Columns__right--float .s-content pre code{padding:0 .5em}}a{text-decoration:none;color:#0078be}a.external:after{content:" " url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=)}a.broken{color:red}p{margin:0 0 1em}hr{clear:both;margin:1em 0;border:0;border-top:1px solid #ddd}code{color:#3f4657}.Button{display:inline-block;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;border-radius:4px}.Button--small{font-size:12px;line-height:1.5;border-radius:3px}.Button--default{color:#333;background-color:#fff;border-color:#ccc}.Button--default.Button--active{color:#333;background-color:#e6e6e6;border-color:#adadad}.ButtonGroup{position:relative;display:inline-block;vertical-align:middle}.ButtonGroup .Button+.Button{margin-left:-1px}.ButtonGroup>.Button{position:relative;float:left}.ButtonGroup>.Button:focus,.ButtonGroup>.Button:hover{z-index:2}.ButtonGroup>.Button.Button--active,.ButtonGroup>.Button:active{z-index:3}.ButtonGroup>.Button:not(:first-child):not(:last-child){border-radius:0}.ButtonGroup>.Button:first-child{margin-left:0}.ButtonGroup>.Button:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.ButtonGroup>.Button:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.Brand{display:block;padding:15px 20px;font-size:18px;text-shadow:none;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;color:#0078be}.Brand,.Navbar{background-color:#3f4657}.Navbar{height:50px;box-shadow:0 1px 5px rgba(0,0,0,.25);margin-bottom:0}.Navbar .Brand{float:left;line-height:20px;height:50px}.CodeToggler__text{font-size:12px;line-height:1.5;padding:6px 10px 6px 0;display:inline-block;vertical-align:middle}.Nav{margin:0;padding:0}.Nav__arrow{display:inline-block;position:relative;width:16px;margin-left:-16px}.Nav__arrow:before{position:absolute;display:block;content:"";margin:-.25em 0 0 -.4em;left:50%;top:50%;width:.5em;height:.5em;border-right:.15em solid #3f4657;border-top:.15em solid #3f4657;transform:rotate(45deg);transition-duration:.3s}.Nav__item{display:block}.Nav__item a{display:block;margin:0;padding:6px 15px 6px 20px;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#3f4657;font-size:15px;text-shadow:none;border-color:#e7e7e9}.Nav__item a:hover{color:#3f4657;text-shadow:none;background-color:#c5c5cb}.Nav .Nav{display:none;margin-left:15px}.Nav .Nav .Nav__item a{margin:0 0 0 -15px;padding:3px 30px;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;color:#2d2d2d;opacity:.7}.Nav .Nav .Nav__item a:hover{opacity:1}.Nav .Nav .Nav__item--active a{color:#3f4657}.Nav__item--active>a,.Nav__item--open>a{background-color:#c5c5cb}.Nav__item--open>.Nav{display:block}.Nav__item--open>a>.Nav__arrow:before{margin-left:-.25em;transform:rotate(135deg)}.Page__header{margin:0 0 10px;padding:0;border-bottom:1px solid #eee}.Page__header:after,.Page__header:before{content:" ";display:table}.Page__header:after{clear:both}.Page__header h1{margin:0;padding:0;line-height:57px}.Page__header--separator{height:.6em}.Page__header a{text-decoration:none}.Links{padding:0 20px}.Links a{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#0078be;line-height:2em}.Search{position:relative}.Search__field{display:block;width:100%;height:34px;padding:6px 30px 6px 20px;color:#555;border-width:0 0 1px;border-bottom:1px solid #ccc;background:#fff;transition:border-color .15s ease-in-out}.Search__field:focus{border-color:#0078be;outline:0}.Search__icon{position:absolute;right:9px;top:9px;width:16px;height:16px}.Navbar .Search{float:right;margin:8px 20px}.Navbar .Search__field{box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-width:0;border-radius:4px;padding-left:10px}.TableOfContents{font-size:16px;padding-left:0;border-left:6px solid #efefef}.TableOfContents p{margin-bottom:0}.TableOfContents a{text-decoration:none}.TableOfContents .TableOfContents{border-left-width:0}.Pager{padding-left:0;margin:1em 0;list-style:none;text-align:center;clear:both}.Pager:after,.Pager:before{content:" ";display:table}.Pager:after{clear:both}.Pager li{display:inline}.Pager li>a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.Pager li>a:focus,.Pager li>a:hover{text-decoration:none;background-color:#eee}.Pager--next>a{float:right}.Pager--prev>a{float:left}.container{margin-right:auto;margin-left:auto}@media (min-width:992px){.container{width:970px}}@media (min-width:768px){.container{width:750px}}@media (min-width:1200px){.container{width:1170px}}.container--inner{width:80%;margin:0 auto}.Homepage{padding-top:60px!important;background-color:#0078be;border-radius:0;border:none;color:#3f4657;overflow:hidden;padding-bottom:0;margin-bottom:0;box-shadow:none}.HomepageTitle h2{width:80%;font-size:30px;margin:20px auto;text-align:center}.HomepageImage img{display:block;max-width:80%;margin:0 auto;height:auto}.HomepageButtons{padding:20px 0;background-color:#c5c5cb;text-align:center}.HomepageButtons .Button--hero{padding:20px 30px;border-radius:0;text-shadow:none;opacity:.8;margin:0 10px;text-transform:uppercase;border:5px solid #3f4657;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;background-image:none;filter:none;box-shadow:none}@media (max-width:768px){.HomepageButtons .Button--hero{display:block;margin-bottom:10px}}.HomepageButtons .Button--hero:hover{opacity:1}.HomepageButtons .Button--hero.Button--secondary{background-color:#c5c5cb;color:#3f4657}.HomepageButtons .Button--hero.Button--primary{background-color:#3f4657;color:#f7f7f7}.HomepageContent{background-color:#fff;padding:40px 0}@media (min-width:769px){.HomepageContent .row{margin:0 -15px}.HomepageContent .col-third{width:33.333333%;float:left;position:relative;min-height:1px;padding-left:15px;padding-right:15px}}.HomepageContent ol li,.HomepageContent ul li{list-style:none;padding-bottom:.5em}.HomepageContent ol li:before,.HomepageContent ul li:before{content:"";width:0;height:0;border:3px solid transparent;border-left-color:#0078be;float:left;display:block;margin:6px 6px 6px -12px}.HomepageContent .lead{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:300;font-size:16px;margin-bottom:20px;line-height:1.4}@media (min-width:768px){.HomepageContent{padding:40px 20px}.HomepageContent .lead{font-size:21px}}.HomepageFooter{background-color:#3f4657;border-radius:0;color:#0078be;border:none;box-shadow:none}@media (max-width:768px){.HomepageFooter{padding:0 20px;text-align:center}.HomepageFooter .HomepageFooter__links{padding-left:0;list-style-type:none}}@media (min-width:769px){.HomepageFooter .HomepageFooter__links{float:left}.HomepageFooter .HomepageFooter__twitter{float:right}}.HomepageFooter__links{margin:40px 0}.HomepageFooter__links li a{line-height:32px;font-size:16px;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700}.HomepageFooter__links li a:hover{color:#0078be;text-decoration:underline}.HomepageFooter__twitter{margin:40px 0}.HomepageFooter .Twitter{margin-bottom:20px}.s-content code{text-rendering:auto;-webkit-font-smoothing:initial;font-size:13px}.s-content pre{margin:20px -20px;background:#002b36}.s-content pre code{font-size:13px}.code-section pre{margin-top:0}.code-section .tab-pane{display:none}.code-section .tab-pane.active{display:block}.code-section .nav-tabs{list-style:none;border-bottom:none;padding-left:0;clear:left;margin-bottom:0}.code-section .nav-tabs:after,.code-section .nav-tabs:before{content:" ";display:table}.code-section .nav-tabs:after{clear:both}.code-section .nav-tabs li{float:left}.code-section .nav-tabs li a{display:block;background-color:#ddd;border-radius:4px 4px 0 0;border-color:#eee #eee #ddd;color:#333;padding:7px 12px;margin-right:4px}.code-section .nav-tabs li.active>a,.code-section .nav-tabs li.active>a:focus,.code-section .nav-tabs li.active>a:hover{background-color:#002b36;border-color:#222;color:#fff}.hljs{display:block;overflow-x:auto;padding:.5em;background:#002b36;color:#839496}.hljs-comment,.hljs-quote{color:#586e75}.hljs-addition,.hljs-keyword,.hljs-selector-tag{color:#859900}.hljs-doctag,.hljs-literal,.hljs-meta .hljs-meta-string,.hljs-number,.hljs-regexp,.hljs-string{color:#2aa198}.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-title{color:#268bd2}.hljs-attr,.hljs-attribute,.hljs-class .hljs-title,.hljs-template-variable,.hljs-type,.hljs-variable{color:#b58900}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-meta .hljs-keyword,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-subst,.hljs-symbol{color:#cb4b16}.hljs-built_in,.hljs-deletion{color:#dc322f}.hljs-formula{background:#073642}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.alert{color:#464a4e;background:#e7e8ea;border-left:5px solid #dddfe2;min-height:20px;margin:15px 0;padding:15px;position:relative}.alert.alert-note{color:#004085;background:#cce5ff;border-color:#b8daff}.alert.alert-success{color:#155724;background:#d4edda;border-color:#c3e6cb}.alert.alert-warning{color:#856404;background:#fff3cd;border-color:#ffeeba}.alert.alert-danger,.alert.alert-error{color:#721c24;background:#f8d7da;border-color:#f5c6cb}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}h1,h2,h3,h4,h5,h6{page-break-after:avoid;page-break-before:auto}blockquote,pre{border:1px solid #999;font-style:italic}blockquote,img,pre{page-break-inside:avoid}img{border:0}a,a:visited{text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}q{quotes:none}q:before{content:""}q:after{content:" (" attr(cite) ")"}.page-break{display:block;page-break-before:always}.hidden-print,.Pager,aside{display:none}.Columns__right{width:100%!important}.s-content a:after{content:" (" attr(href) ")";font-size:80%;word-wrap:break-word}.s-content a[href^="#"]:after{content:""}h1 a[href]:after{font-size:50%}}body{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif}.Brand{background:#222;color:#fff}.Brand .Brand__logo{color:transparent;display:block;max-width:170px;height:26.4px;background:transparent url(../img/logo-white.svg) no-repeat 0}.Brand .subtitle{margin-top:5px;margin-bottom:0}.Pager{margin:30px 0 10px}.breadcrumbs,.s-content h2{margin-top:25px}.s-content a{text-decoration:none}.s-content img{margin:0}@media screen and (min-width:768px){.s-content img.img-narrow{max-width:50%}}.s-content table{margin-top:15px;margin-bottom:15px}.s-content blockquote{font-size:16px;border-color:#ffeaae;background:#fffdf6;color:#666;margin-left:0;margin-right:0}.s-content h1 .headerlink,.s-content h2 .headerlink,.s-content h3 .headerlink,.s-content h4 .headerlink,.s-content h5 .headerlink,.s-content h6 .headerlink{color:transparent;font-size:75%;font-weight:400;line-height:1;margin:0;padding:0 0 0 6px}.s-content h1:hover .headerlink,.s-content h2:hover .headerlink,.s-content h3:hover .headerlink,.s-content h4:hover .headerlink,.s-content h5:hover .headerlink,.s-content h6:hover .headerlink{color:#c5c5cb}.s-content h1:hover .headerlink:hover,.s-content h2:hover .headerlink:hover,.s-content h3:hover .headerlink:hover,.s-content h4:hover .headerlink:hover,.s-content h5:hover .headerlink:hover,.s-content h6:hover .headerlink:hover{color:#0078be}.disqus-separator{margin:15px 0 20px}.Columns__landing .Nav{padding-left:15px}.ribbon-box{position:relative}.ribbon-box .ribbon{position:absolute;right:-5px;top:-5px;z-index:1;overflow:hidden;width:86px;height:86px;text-align:right}.ribbon-box.navigation .ribbon{right:-26px;top:-78px}.ribbon-box .ribbon span{font-size:10px;font-weight:700;color:#fff;text-transform:uppercase;text-align:center;line-height:20px;transform:rotate(45deg);-webkit-transform:rotate(45deg);width:115px;display:block;background:linear-gradient(#2989d8,#1e5799);box-shadow:0 3px 10px -5px #000;position:absolute;top:24px;right:-23px}.ribbon-box .ribbon span:before{left:0;border-color:#1e5799 transparent transparent #1e5799}.ribbon-box .ribbon span:after,.ribbon-box .ribbon span:before{content:"";position:absolute;top:100%;z-index:-1;border-style:solid;border-width:3px}.ribbon-box .ribbon span:after{right:0;border-color:#1e5799 #1e5799 transparent transparent}@media screen and (max-width:768px){.ribbon-box.navigation .ribbon{top:44px;pointer-events:none}}.extension-card{border:1px solid #e7e7e9;border-radius:4px;padding:20px;height:100%;position:relative}.extension-card .button{display:inline-block;padding:5px 14px;border:1px solid #e7e7e9;border-radius:15px}.extension-card .button:hover{background-color:#e7e7e9}.action-box{font-size:12px;float:right}.action-box .edit_on{color:grey;margin-left:3px;display:block;text-align:right}.action-box .version-switcher{font-size:16px;display:block;margin-bottom:5px}.action-box .version-switcher select{margin-left:3px}.column{margin:20px 0}@media screen and (min-width:768px){.Columns__landing{display:flex;flex-wrap:wrap}.Columns__landing .column{width:48%}.Columns__landing .column:nth-child(2n){margin-left:4%}}aside.Collapsible .version-info{font-size:11px;margin-bottom:25px}.SearchResults .SearchResults__highlight{font-weight:400;background:#bee7ff}.SearchResults .SearchResults__text,.SearchResults .SearchResults__title,.SearchResults .SearchResults__url,.SearchResults .SearchResults__warning{font-weight:400}.SearchResults .SearchResults__text a,.SearchResults .SearchResults__title a,.SearchResults .SearchResults__url a,.SearchResults .SearchResults__warning a{color:#0078be}.landingpage .Nav__item--open>a{background:transparent!important}.landingpage .Columns__landing div>.Nav li a{background:none;line-height:1.5}.landingpage .Columns__landing div>.Nav>li>a{display:block;color:#0078be;padding-left:0;font-size:16px;margin-top:15px}.landingpage .Columns__landing div>.Nav>li ul>li>a{padding-left:16px}.Banner{margin:40px 0 10px}.Banner .img{width:100%}.lightbox{display:none;position:fixed;z-index:999;top:0;left:0;right:0;bottom:0;padding:1em;background:rgba(0,0,0,.8)}.lightbox:target{display:block}.lightbox img{width:100%;height:100%;object-fit:scale-down}.image-as-lightbox+p>img,img.lightbox-thumbnail{max-width:50%;max-height:350px} \ No newline at end of file diff --git a/docs/static/themes/pimcore/css/pimcore-generic.min.css b/docs/static/themes/pimcore/css/pimcore-generic.min.css new file mode 100644 index 0000000000..c16cdddad7 --- /dev/null +++ b/docs/static/themes/pimcore/css/pimcore-generic.min.css @@ -0,0 +1,5 @@ +/*! + * Pimcore Documentation + * License: GPLv3 + */ +/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}[hidden],template{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.clearfix:after,.clearfix:before{content:" ";display:table}.clearfix:after{clear:both}.pull-right{float:right!important}.pull-left{float:left!important}.hidden{display:none!important}*,:after,:before{box-sizing:border-box}body{margin:0;padding:0}body,html{height:100%;background-color:#fff;color:#2d2d2d}.Columns__left{background-color:#f7f7f7}.Columns__right__content{padding:10px;background-color:#fff}.Collapsible__content{display:none}.Collapsible__trigger{margin:12px;padding:7px 10px;background-color:transparent;border:none;float:right;background-image:none;filter:none;box-shadow:none}.Collapsible__trigger--bar{display:block;width:18px;height:2px;margin-top:2px;margin-bottom:3px;background-color:#0078be;box-shadow:none}.Collapsible__trigger:hover{background-color:#c5c5cb;box-shadow:none}.Collapsible__trigger:hover .Collapsible__trigger--bar{background-color:#3f4657;box-shadow:none}@media screen and (min-width:768px){body{background-color:#0078be}.Navbar{position:fixed;z-index:1030;width:100%}.Collapsible__trigger{display:none!important}.Collapsible__content{display:block!important}.Columns{height:100%}.Columns:after,.Columns:before{content:" ";display:table}.Columns:after{clear:both}.Columns__left,.Columns__right{position:relative;min-height:1px;float:left;overflow:auto;height:100%}.Columns__left{width:25%;border-right:1px solid #e7e7e9;overflow-x:hidden}.Columns__right{width:75%}.Columns__right__content{padding:0 20px 20px;min-height:100%}}body{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}h1,h2,h3,h4,h5,h6{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:300}.s-content body{font-size:15px}.s-content h1,.s-content h2,.s-content h3,.s-content h4,.s-content h5,.s-content h6{font-weight:300;-webkit-font-smoothing:antialiased;cursor:text;line-height:1.4em;margin-top:.3em;margin-bottom:.3em}.s-content h1 code,.s-content h1 tt,.s-content h2 code,.s-content h2 tt,.s-content h3 code,.s-content h3 tt,.s-content h4 code,.s-content h4 tt,.s-content h5 code,.s-content h5 tt,.s-content h6 code,.s-content h6 tt{font-size:inherit}.s-content h1 i,.s-content h2 i,.s-content h3 i,.s-content h4 i,.s-content h5 i,.s-content h6 i{font-size:.7em}.s-content h1 p,.s-content h2 p,.s-content h3 p,.s-content h4 p,.s-content h5 p,.s-content h6 p{margin-top:0}.s-content h1{font-size:2.66666667em;color:#000}.s-content h2{font-size:2em;border-bottom:1px solid #eee;color:#000}.s-content h3{font-size:1.73333333em}.s-content h4{font-size:1.46666667em}.s-content h5{font-size:1.2em}.s-content h6{font-size:1.06666667em;color:#555}.s-content a{text-decoration:underline}.s-content p{line-height:1.8em;margin-bottom:20px}.s-content ol,.s-content ul{padding-left:30px}.s-content ul p,.s-content ul ul{margin:0}.s-content dl{padding:0}.s-content dl dt{font-weight:700;font-style:italic;padding:0;margin:15px 0 5px}.s-content dl dt:first-child{padding:0}.s-content dl dd{margin:0 0 15px;padding:0 15px}.s-content blockquote{font-size:1.2em;border-left:4px solid #ddd;padding:7px 15px}.s-content blockquote p{font-size:inherit}.s-content table{width:100%;padding:0;border-collapse:collapse}.s-content table tr{border-top:1px solid #eee;background-color:#fff;margin:0;padding:0}.s-content table tr:nth-child(2n){background-color:#f8f8f8}.s-content table th{font-weight:700;background:#eee}.s-content table td,.s-content table th{border:1px solid #eee;margin:0;padding:6px 13px}.s-content blockquote>:first-child,.s-content dl dd>:first-child,.s-content dl dt>:first-child,.s-content ol>:first-child,.s-content table td>:first-child,.s-content table th>:first-child,.s-content ul>:first-child{margin-top:0}.s-content blockquote>:last-child,.s-content dl dd>:last-child,.s-content dl dt>:last-child,.s-content ol>:last-child,.s-content table td>:last-child,.s-content table th>:last-child,.s-content ul>:last-child{margin-bottom:0}.s-content img{max-width:100%;display:block;margin:0 auto}.s-content code{font-family:Monaco,Menlo,Consolas,Courier New,monospace}.s-content code,.s-content tt{margin:0 2px;padding:0 5px;white-space:nowrap;border:1px solid #eaeaea;background-color:#f8f8f8;border-radius:3px}.s-content pre{background:#fdf6e3;color:#657b83;line-height:1.5em;overflow:auto;padding:20px;margin:0 -20px 20px}.s-content pre code{margin:0;padding:0;white-space:pre}.s-content pre code,.s-content pre tt{background-color:transparent;border:none}.s-content pre{border:none;border-radius:0;padding:10px 30px;margin-left:-20px;margin-right:-20px}@media (min-width:1150px){.Columns__right--float .Columns__right__content{height:100%;overflow:auto;padding:0!important;background-color:transparent!important;position:relative}.Columns__right--float .Columns__right__content article{width:100%;min-height:100%;overflow:auto;position:relative;z-index:1}.Columns__right--float .Columns__right__content article:before{content:"";width:50%;min-height:100%;overflow:auto;background-color:#fff;display:block;margin:0;position:absolute;z-index:-1}.Columns__right--float .Page__header,.Columns__right--float .Pager,.Columns__right--float .s-content blockquote,.Columns__right--float .s-content dl,.Columns__right--float .s-content h2,.Columns__right--float .s-content h3,.Columns__right--float .s-content h4,.Columns__right--float .s-content h5,.Columns__right--float .s-content h6,.Columns__right--float .s-content hr,.Columns__right--float .s-content ol,.Columns__right--float .s-content p,.Columns__right--float .s-content table,.Columns__right--float .s-content ul{float:left;clear:left;width:47%;margin-left:1.5%;margin-right:1.5%}.Columns__right--float .s-content table{background-color:#fff;white-space:normal}.Columns__right--float .s-content table code,.Columns__right--float .s-content table pre{white-space:normal}.Columns__right--float .s-content blockquote:before,.Columns__right--float .s-content dl:before,.Columns__right--float .s-content h2:before,.Columns__right--float .s-content h3:before,.Columns__right--float .s-content h4:before,.Columns__right--float .s-content h5:before,.Columns__right--float .s-content h6:before,.Columns__right--float .s-content hr:before,.Columns__right--float .s-content ol:before,.Columns__right--float .s-content p:before,.Columns__right--float .s-content ul:before{width:100%;height:10px;display:block;clear:both}.Columns__right--float .s-content blockquote dl,.Columns__right--float .s-content blockquote h2,.Columns__right--float .s-content blockquote h3,.Columns__right--float .s-content blockquote h4,.Columns__right--float .s-content blockquote h5,.Columns__right--float .s-content blockquote h6,.Columns__right--float .s-content blockquote hr,.Columns__right--float .s-content blockquote ol,.Columns__right--float .s-content blockquote p,.Columns__right--float .s-content blockquote pre,.Columns__right--float .s-content blockquote ul,.Columns__right--float .s-content dl dl,.Columns__right--float .s-content dl h2,.Columns__right--float .s-content dl h3,.Columns__right--float .s-content dl h4,.Columns__right--float .s-content dl h5,.Columns__right--float .s-content dl h6,.Columns__right--float .s-content dl hr,.Columns__right--float .s-content dl ol,.Columns__right--float .s-content dl p,.Columns__right--float .s-content dl pre,.Columns__right--float .s-content dl ul,.Columns__right--float .s-content h2 dl,.Columns__right--float .s-content h2 h2,.Columns__right--float .s-content h2 h3,.Columns__right--float .s-content h2 h4,.Columns__right--float .s-content h2 h5,.Columns__right--float .s-content h2 h6,.Columns__right--float .s-content h2 hr,.Columns__right--float .s-content h2 ol,.Columns__right--float .s-content h2 p,.Columns__right--float .s-content h2 pre,.Columns__right--float .s-content h2 ul,.Columns__right--float .s-content h3 dl,.Columns__right--float .s-content h3 h2,.Columns__right--float .s-content h3 h3,.Columns__right--float .s-content h3 h4,.Columns__right--float .s-content h3 h5,.Columns__right--float .s-content h3 h6,.Columns__right--float .s-content h3 hr,.Columns__right--float .s-content h3 ol,.Columns__right--float .s-content h3 p,.Columns__right--float .s-content h3 pre,.Columns__right--float .s-content h3 ul,.Columns__right--float .s-content h4 dl,.Columns__right--float .s-content h4 h2,.Columns__right--float .s-content h4 h3,.Columns__right--float .s-content h4 h4,.Columns__right--float .s-content h4 h5,.Columns__right--float .s-content h4 h6,.Columns__right--float .s-content h4 hr,.Columns__right--float .s-content h4 ol,.Columns__right--float .s-content h4 p,.Columns__right--float .s-content h4 pre,.Columns__right--float .s-content h4 ul,.Columns__right--float .s-content h5 dl,.Columns__right--float .s-content h5 h2,.Columns__right--float .s-content h5 h3,.Columns__right--float .s-content h5 h4,.Columns__right--float .s-content h5 h5,.Columns__right--float .s-content h5 h6,.Columns__right--float .s-content h5 hr,.Columns__right--float .s-content h5 ol,.Columns__right--float .s-content h5 p,.Columns__right--float .s-content h5 pre,.Columns__right--float .s-content h5 ul,.Columns__right--float .s-content h6 dl,.Columns__right--float .s-content h6 h2,.Columns__right--float .s-content h6 h3,.Columns__right--float .s-content h6 h4,.Columns__right--float .s-content h6 h5,.Columns__right--float .s-content h6 h6,.Columns__right--float .s-content h6 hr,.Columns__right--float .s-content h6 ol,.Columns__right--float .s-content h6 p,.Columns__right--float .s-content h6 pre,.Columns__right--float .s-content h6 ul,.Columns__right--float .s-content hr dl,.Columns__right--float .s-content hr h2,.Columns__right--float .s-content hr h3,.Columns__right--float .s-content hr h4,.Columns__right--float .s-content hr h5,.Columns__right--float .s-content hr h6,.Columns__right--float .s-content hr hr,.Columns__right--float .s-content hr ol,.Columns__right--float .s-content hr p,.Columns__right--float .s-content hr pre,.Columns__right--float .s-content hr ul,.Columns__right--float .s-content ol dl,.Columns__right--float .s-content ol h2,.Columns__right--float .s-content ol h3,.Columns__right--float .s-content ol h4,.Columns__right--float .s-content ol h5,.Columns__right--float .s-content ol h6,.Columns__right--float .s-content ol hr,.Columns__right--float .s-content ol ol,.Columns__right--float .s-content ol p,.Columns__right--float .s-content ol pre,.Columns__right--float .s-content ol ul,.Columns__right--float .s-content p dl,.Columns__right--float .s-content p h2,.Columns__right--float .s-content p h3,.Columns__right--float .s-content p h4,.Columns__right--float .s-content p h5,.Columns__right--float .s-content p h6,.Columns__right--float .s-content p hr,.Columns__right--float .s-content p ol,.Columns__right--float .s-content p p,.Columns__right--float .s-content p pre,.Columns__right--float .s-content p ul,.Columns__right--float .s-content ul dl,.Columns__right--float .s-content ul h2,.Columns__right--float .s-content ul h3,.Columns__right--float .s-content ul h4,.Columns__right--float .s-content ul h5,.Columns__right--float .s-content ul h6,.Columns__right--float .s-content ul hr,.Columns__right--float .s-content ul ol,.Columns__right--float .s-content ul p,.Columns__right--float .s-content ul pre,.Columns__right--float .s-content ul ul{width:auto;float:none;display:block}.Columns__right--float .s-content hr{border-color:#ddd}.Columns__right--float .s-content blockquote p,.Columns__right--float .s-content blockquote pre,.Columns__right--float .s-content li p,.Columns__right--float .s-content li pre{width:100%}.Columns__right--float .s-content pre{float:left;clear:right;width:50%;border:none;border-left:10px solid #fff;margin:0 0 10px;padding:0}.Columns__right--float .s-content pre code{padding:0 .5em}}a{text-decoration:none;color:#0078be}a.external:after{content:" " url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=)}a.broken{color:red}p{margin:0 0 1em}hr{clear:both;margin:1em 0;border:0;border-top:1px solid #ddd}code{color:#3f4657}.Button{display:inline-block;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;border-radius:4px}.Button--small{font-size:12px;line-height:1.5;border-radius:3px}.Button--default{color:#333;background-color:#fff;border-color:#ccc}.Button--default.Button--active{color:#333;background-color:#e6e6e6;border-color:#adadad}.ButtonGroup{position:relative;display:inline-block;vertical-align:middle}.ButtonGroup .Button+.Button{margin-left:-1px}.ButtonGroup>.Button{position:relative;float:left}.ButtonGroup>.Button:focus,.ButtonGroup>.Button:hover{z-index:2}.ButtonGroup>.Button.Button--active,.ButtonGroup>.Button:active{z-index:3}.ButtonGroup>.Button:not(:first-child):not(:last-child){border-radius:0}.ButtonGroup>.Button:first-child{margin-left:0}.ButtonGroup>.Button:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.ButtonGroup>.Button:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.Brand{display:block;padding:15px 20px;font-size:18px;text-shadow:none;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;color:#0078be}.Brand,.Navbar{background-color:#3f4657}.Navbar{height:50px;box-shadow:0 1px 5px rgba(0,0,0,.25);margin-bottom:0}.Navbar .Brand{float:left;line-height:20px;height:50px}.CodeToggler__text{font-size:12px;line-height:1.5;padding:6px 10px 6px 0;display:inline-block;vertical-align:middle}.Nav{margin:0;padding:0}.Nav__arrow{display:inline-block;position:relative;width:16px;margin-left:-16px}.Nav__arrow:before{position:absolute;display:block;content:"";margin:-.25em 0 0 -.4em;left:50%;top:50%;width:.5em;height:.5em;border-right:.15em solid #3f4657;border-top:.15em solid #3f4657;transform:rotate(45deg);transition-duration:.3s}.Nav__item{display:block}.Nav__item a{display:block;margin:0;padding:6px 15px 6px 20px;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#3f4657;font-size:15px;text-shadow:none;border-color:#e7e7e9}.Nav__item a:hover{color:#3f4657;text-shadow:none;background-color:#c5c5cb}.Nav .Nav{display:none;margin-left:15px}.Nav .Nav .Nav__item a{margin:0 0 0 -15px;padding:3px 30px;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;color:#2d2d2d;opacity:.7}.Nav .Nav .Nav__item a:hover{opacity:1}.Nav .Nav .Nav__item--active a{color:#3f4657}.Nav__item--active>a,.Nav__item--open>a{background-color:#c5c5cb}.Nav__item--open>.Nav{display:block}.Nav__item--open>a>.Nav__arrow:before{margin-left:-.25em;transform:rotate(135deg)}.Page__header{margin:0 0 10px;padding:0;border-bottom:1px solid #eee}.Page__header:after,.Page__header:before{content:" ";display:table}.Page__header:after{clear:both}.Page__header h1{margin:0;padding:0;line-height:57px}.Page__header--separator{height:.6em}.Page__header a{text-decoration:none}.Links{padding:0 20px}.Links a{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#0078be;line-height:2em}.Search{position:relative}.Search__field{display:block;width:100%;height:34px;padding:6px 30px 6px 20px;color:#555;border-width:0 0 1px;border-bottom:1px solid #ccc;background:#fff;transition:border-color .15s ease-in-out}.Search__field:focus{border-color:#0078be;outline:0}.Search__icon{position:absolute;right:9px;top:9px;width:16px;height:16px}.Navbar .Search{float:right;margin:8px 20px}.Navbar .Search__field{box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-width:0;border-radius:4px;padding-left:10px}.TableOfContents{font-size:16px;padding-left:0;border-left:6px solid #efefef}.TableOfContents p{margin-bottom:0}.TableOfContents a{text-decoration:none}.TableOfContents .TableOfContents{border-left-width:0}.Pager{padding-left:0;margin:1em 0;list-style:none;text-align:center;clear:both}.Pager:after,.Pager:before{content:" ";display:table}.Pager:after{clear:both}.Pager li{display:inline}.Pager li>a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.Pager li>a:focus,.Pager li>a:hover{text-decoration:none;background-color:#eee}.Pager--next>a{float:right}.Pager--prev>a{float:left}.container{margin-right:auto;margin-left:auto}@media (min-width:992px){.container{width:970px}}@media (min-width:768px){.container{width:750px}}@media (min-width:1200px){.container{width:1170px}}.container--inner{width:80%;margin:0 auto}.Homepage{padding-top:60px!important;background-color:#0078be;border-radius:0;border:none;color:#3f4657;overflow:hidden;padding-bottom:0;margin-bottom:0;box-shadow:none}.HomepageTitle h2{width:80%;font-size:30px;margin:20px auto;text-align:center}.HomepageImage img{display:block;max-width:80%;margin:0 auto;height:auto}.HomepageButtons{padding:20px 0;background-color:#c5c5cb;text-align:center}.HomepageButtons .Button--hero{padding:20px 30px;border-radius:0;text-shadow:none;opacity:.8;margin:0 10px;text-transform:uppercase;border:5px solid #3f4657;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;background-image:none;filter:none;box-shadow:none}@media (max-width:768px){.HomepageButtons .Button--hero{display:block;margin-bottom:10px}}.HomepageButtons .Button--hero:hover{opacity:1}.HomepageButtons .Button--hero.Button--secondary{background-color:#c5c5cb;color:#3f4657}.HomepageButtons .Button--hero.Button--primary{background-color:#3f4657;color:#f7f7f7}.HomepageContent{background-color:#fff;padding:40px 0}@media (min-width:769px){.HomepageContent .row{margin:0 -15px}.HomepageContent .col-third{width:33.333333%;float:left;position:relative;min-height:1px;padding-left:15px;padding-right:15px}}.HomepageContent ol li,.HomepageContent ul li{list-style:none;padding-bottom:.5em}.HomepageContent ol li:before,.HomepageContent ul li:before{content:"";width:0;height:0;border:3px solid transparent;border-left-color:#0078be;float:left;display:block;margin:6px 6px 6px -12px}.HomepageContent .lead{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:300;font-size:16px;margin-bottom:20px;line-height:1.4}@media (min-width:768px){.HomepageContent{padding:40px 20px}.HomepageContent .lead{font-size:21px}}.HomepageFooter{background-color:#3f4657;border-radius:0;color:#0078be;border:none;box-shadow:none}@media (max-width:768px){.HomepageFooter{padding:0 20px;text-align:center}.HomepageFooter .HomepageFooter__links{padding-left:0;list-style-type:none}}@media (min-width:769px){.HomepageFooter .HomepageFooter__links{float:left}.HomepageFooter .HomepageFooter__twitter{float:right}}.HomepageFooter__links{margin:40px 0}.HomepageFooter__links li a{line-height:32px;font-size:16px;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700}.HomepageFooter__links li a:hover{color:#0078be;text-decoration:underline}.HomepageFooter__twitter{margin:40px 0}.HomepageFooter .Twitter{margin-bottom:20px}.s-content code{text-rendering:auto;-webkit-font-smoothing:initial;font-size:13px}.s-content pre{margin:20px -20px;background:#002b36}.s-content pre code{font-size:13px}.code-section pre{margin-top:0}.code-section .tab-pane{display:none}.code-section .tab-pane.active{display:block}.code-section .nav-tabs{list-style:none;border-bottom:none;padding-left:0;clear:left;margin-bottom:0}.code-section .nav-tabs:after,.code-section .nav-tabs:before{content:" ";display:table}.code-section .nav-tabs:after{clear:both}.code-section .nav-tabs li{float:left}.code-section .nav-tabs li a{display:block;background-color:#ddd;border-radius:4px 4px 0 0;border-color:#eee #eee #ddd;color:#333;padding:7px 12px;margin-right:4px}.code-section .nav-tabs li.active>a,.code-section .nav-tabs li.active>a:focus,.code-section .nav-tabs li.active>a:hover{background-color:#002b36;border-color:#222;color:#fff}.hljs{display:block;overflow-x:auto;padding:.5em;background:#002b36;color:#839496}.hljs-comment,.hljs-quote{color:#586e75}.hljs-addition,.hljs-keyword,.hljs-selector-tag{color:#859900}.hljs-doctag,.hljs-literal,.hljs-meta .hljs-meta-string,.hljs-number,.hljs-regexp,.hljs-string{color:#2aa198}.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-title{color:#268bd2}.hljs-attr,.hljs-attribute,.hljs-class .hljs-title,.hljs-template-variable,.hljs-type,.hljs-variable{color:#b58900}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-meta .hljs-keyword,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-subst,.hljs-symbol{color:#cb4b16}.hljs-built_in,.hljs-deletion{color:#dc322f}.hljs-formula{background:#073642}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.alert{color:#464a4e;background:#e7e8ea;border-left:5px solid #dddfe2;min-height:20px;margin:15px 0;padding:15px;position:relative}.alert.alert-note{color:#004085;background:#cce5ff;border-color:#b8daff}.alert.alert-success{color:#155724;background:#d4edda;border-color:#c3e6cb}.alert.alert-warning{color:#856404;background:#fff3cd;border-color:#ffeeba}.alert.alert-danger,.alert.alert-error{color:#721c24;background:#f8d7da;border-color:#f5c6cb}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}h1,h2,h3,h4,h5,h6{page-break-after:avoid;page-break-before:auto}blockquote,pre{border:1px solid #999;font-style:italic}blockquote,img,pre{page-break-inside:avoid}img{border:0}a,a:visited{text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}q{quotes:none}q:before{content:""}q:after{content:" (" attr(cite) ")"}.page-break{display:block;page-break-before:always}.hidden-print,.Pager,aside{display:none}.Columns__right{width:100%!important}.s-content a:after{content:" (" attr(href) ")";font-size:80%;word-wrap:break-word}.s-content a[href^="#"]:after{content:""}h1 a[href]:after{font-size:50%}}body{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif}.Brand{background:#222;color:#fff}.Brand .Brand__logo{color:transparent;display:block;max-width:170px;height:26.4px;background:transparent url(../img/logo-white.svg) no-repeat 0}.Brand .subtitle{margin-top:5px;margin-bottom:0}.Pager{margin:30px 0 10px}.breadcrumbs,.s-content h2{margin-top:25px}.s-content a{text-decoration:none}.s-content img{margin:0}@media screen and (min-width:768px){.s-content img.img-narrow{max-width:50%}}.s-content table{margin-top:15px;margin-bottom:15px}.s-content blockquote{font-size:16px;border-color:#ffeaae;background:#fffdf6;color:#666;margin-left:0;margin-right:0}.s-content h1 .headerlink,.s-content h2 .headerlink,.s-content h3 .headerlink,.s-content h4 .headerlink,.s-content h5 .headerlink,.s-content h6 .headerlink{color:transparent;font-size:75%;font-weight:400;line-height:1;margin:0;padding:0 0 0 6px}.s-content h1:hover .headerlink,.s-content h2:hover .headerlink,.s-content h3:hover .headerlink,.s-content h4:hover .headerlink,.s-content h5:hover .headerlink,.s-content h6:hover .headerlink{color:#c5c5cb}.s-content h1:hover .headerlink:hover,.s-content h2:hover .headerlink:hover,.s-content h3:hover .headerlink:hover,.s-content h4:hover .headerlink:hover,.s-content h5:hover .headerlink:hover,.s-content h6:hover .headerlink:hover{color:#0078be}.disqus-separator{margin:15px 0 20px}.Columns__landing .Nav{padding-left:15px}.ribbon-box{position:relative}.ribbon-box .ribbon{position:absolute;right:-5px;top:-5px;z-index:1;overflow:hidden;width:86px;height:86px;text-align:right}.ribbon-box.navigation .ribbon{right:-26px;top:-78px}.ribbon-box .ribbon span{font-size:10px;font-weight:700;color:#fff;text-transform:uppercase;text-align:center;line-height:20px;transform:rotate(45deg);-webkit-transform:rotate(45deg);width:115px;display:block;background:linear-gradient(#2989d8,#1e5799);box-shadow:0 3px 10px -5px #000;position:absolute;top:24px;right:-23px}.ribbon-box .ribbon span:before{left:0;border-color:#1e5799 transparent transparent #1e5799}.ribbon-box .ribbon span:after,.ribbon-box .ribbon span:before{content:"";position:absolute;top:100%;z-index:-1;border-style:solid;border-width:3px}.ribbon-box .ribbon span:after{right:0;border-color:#1e5799 #1e5799 transparent transparent}@media screen and (max-width:768px){.ribbon-box.navigation .ribbon{top:44px;pointer-events:none}}.extension-card{border:1px solid #e7e7e9;border-radius:4px;padding:20px;height:100%;position:relative}.extension-card .button{display:inline-block;padding:5px 14px;border:1px solid #e7e7e9;border-radius:15px}.extension-card .button:hover{background-color:#e7e7e9}.action-box{font-size:12px;float:right}.action-box .edit_on{color:grey;margin-left:3px;display:block;text-align:right}.action-box .version-switcher{font-size:16px;display:block;margin-bottom:5px}.action-box .version-switcher select{margin-left:3px}.column{margin:20px 0}@media screen and (min-width:768px){.Columns__landing{display:flex;flex-wrap:wrap}.Columns__landing .column{width:48%}.Columns__landing .column:nth-child(2n){margin-left:4%}}aside.Collapsible .version-info{font-size:11px;margin-bottom:25px}.SearchResults .SearchResults__highlight{font-weight:400;background:#bee7ff}.SearchResults .SearchResults__text,.SearchResults .SearchResults__title,.SearchResults .SearchResults__url,.SearchResults .SearchResults__warning{font-weight:400}.SearchResults .SearchResults__text a,.SearchResults .SearchResults__title a,.SearchResults .SearchResults__url a,.SearchResults .SearchResults__warning a{color:#0078be}.landingpage .Nav__item--open>a{background:transparent!important}.landingpage .Columns__landing div>.Nav li a{background:none;line-height:1.5}.landingpage .Columns__landing div>.Nav>li>a{display:block;color:#0078be;padding-left:0;font-size:16px;margin-top:15px}.landingpage .Columns__landing div>.Nav>li ul>li>a{padding-left:16px}.Banner{margin:40px 0 10px}.Banner .img{width:100%}.lightbox{display:none;position:fixed;z-index:999;top:0;left:0;right:0;bottom:0;padding:1em;background:rgba(0,0,0,.8)}.lightbox:target{display:block}.lightbox img{width:100%;height:100%;object-fit:scale-down}.image-as-lightbox+p>img,img.lightbox-thumbnail{max-width:50%;max-height:350px} \ No newline at end of file diff --git a/docs/static/themes/pimcore/fonts/robotoslab-bold.eot b/docs/static/themes/pimcore/fonts/robotoslab-bold.eot new file mode 100644 index 0000000000..4e88b6cfeb Binary files /dev/null and b/docs/static/themes/pimcore/fonts/robotoslab-bold.eot differ diff --git a/docs/static/themes/pimcore/fonts/robotoslab-bold.svg b/docs/static/themes/pimcore/fonts/robotoslab-bold.svg new file mode 100644 index 0000000000..0c830531b5 --- /dev/null +++ b/docs/static/themes/pimcore/fonts/robotoslab-bold.svg @@ -0,0 +1,688 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/static/themes/pimcore/fonts/robotoslab-bold.ttf b/docs/static/themes/pimcore/fonts/robotoslab-bold.ttf new file mode 100644 index 0000000000..b5120e7f3c Binary files /dev/null and b/docs/static/themes/pimcore/fonts/robotoslab-bold.ttf differ diff --git a/docs/static/themes/pimcore/fonts/robotoslab-bold.woff b/docs/static/themes/pimcore/fonts/robotoslab-bold.woff new file mode 100644 index 0000000000..9e98b2d356 Binary files /dev/null and b/docs/static/themes/pimcore/fonts/robotoslab-bold.woff differ diff --git a/docs/static/themes/pimcore/fonts/robotoslab-bold.woff2 b/docs/static/themes/pimcore/fonts/robotoslab-bold.woff2 new file mode 100644 index 0000000000..a0e46d686e Binary files /dev/null and b/docs/static/themes/pimcore/fonts/robotoslab-bold.woff2 differ diff --git a/docs/static/themes/pimcore/fonts/robotoslab-light.eot b/docs/static/themes/pimcore/fonts/robotoslab-light.eot new file mode 100644 index 0000000000..34511468ec Binary files /dev/null and b/docs/static/themes/pimcore/fonts/robotoslab-light.eot differ diff --git a/docs/static/themes/pimcore/fonts/robotoslab-light.svg b/docs/static/themes/pimcore/fonts/robotoslab-light.svg new file mode 100644 index 0000000000..bf7f6a7372 --- /dev/null +++ b/docs/static/themes/pimcore/fonts/robotoslab-light.svg @@ -0,0 +1,687 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/static/themes/pimcore/fonts/robotoslab-light.ttf b/docs/static/themes/pimcore/fonts/robotoslab-light.ttf new file mode 100644 index 0000000000..067e1e58b0 Binary files /dev/null and b/docs/static/themes/pimcore/fonts/robotoslab-light.ttf differ diff --git a/docs/static/themes/pimcore/fonts/robotoslab-light.woff b/docs/static/themes/pimcore/fonts/robotoslab-light.woff new file mode 100644 index 0000000000..1cbe7902b7 Binary files /dev/null and b/docs/static/themes/pimcore/fonts/robotoslab-light.woff differ diff --git a/docs/static/themes/pimcore/fonts/robotoslab-light.woff2 b/docs/static/themes/pimcore/fonts/robotoslab-light.woff2 new file mode 100644 index 0000000000..b954cfdc86 Binary files /dev/null and b/docs/static/themes/pimcore/fonts/robotoslab-light.woff2 differ diff --git a/docs/static/themes/pimcore/fonts/robotoslab-regular.eot b/docs/static/themes/pimcore/fonts/robotoslab-regular.eot new file mode 100644 index 0000000000..10a7a2b6d2 Binary files /dev/null and b/docs/static/themes/pimcore/fonts/robotoslab-regular.eot differ diff --git a/docs/static/themes/pimcore/fonts/robotoslab-regular.svg b/docs/static/themes/pimcore/fonts/robotoslab-regular.svg new file mode 100644 index 0000000000..f6a9983ebd --- /dev/null +++ b/docs/static/themes/pimcore/fonts/robotoslab-regular.svg @@ -0,0 +1,687 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/static/themes/pimcore/fonts/robotoslab-regular.ttf b/docs/static/themes/pimcore/fonts/robotoslab-regular.ttf new file mode 100644 index 0000000000..9c36f36071 Binary files /dev/null and b/docs/static/themes/pimcore/fonts/robotoslab-regular.ttf differ diff --git a/docs/static/themes/pimcore/fonts/robotoslab-regular.woff b/docs/static/themes/pimcore/fonts/robotoslab-regular.woff new file mode 100644 index 0000000000..2a2e344fdb Binary files /dev/null and b/docs/static/themes/pimcore/fonts/robotoslab-regular.woff differ diff --git a/docs/static/themes/pimcore/fonts/robotoslab-regular.woff2 b/docs/static/themes/pimcore/fonts/robotoslab-regular.woff2 new file mode 100644 index 0000000000..4593d115df Binary files /dev/null and b/docs/static/themes/pimcore/fonts/robotoslab-regular.woff2 differ diff --git a/docs/static/themes/pimcore/img/02_970x250_Billboard.jpg b/docs/static/themes/pimcore/img/02_970x250_Billboard.jpg new file mode 100644 index 0000000000..6d2659986a Binary files /dev/null and b/docs/static/themes/pimcore/img/02_970x250_Billboard.jpg differ diff --git a/docs/static/themes/pimcore/img/favicon.png b/docs/static/themes/pimcore/img/favicon.png new file mode 100644 index 0000000000..52928789fe Binary files /dev/null and b/docs/static/themes/pimcore/img/favicon.png differ diff --git a/docs/static/themes/pimcore/img/logo-white.svg b/docs/static/themes/pimcore/img/logo-white.svg new file mode 100644 index 0000000000..541e195532 --- /dev/null +++ b/docs/static/themes/pimcore/img/logo-white.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + diff --git a/docs/static/themes/pimcore/js/build/pimcore.js b/docs/static/themes/pimcore/js/build/pimcore.js new file mode 100644 index 0000000000..a3e8f4950d --- /dev/null +++ b/docs/static/themes/pimcore/js/build/pimcore.js @@ -0,0 +1,340 @@ +/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; + +return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/\s*$/g,ra={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:k.htmlSerialize?[0,"",""]:[1,"X
","
"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?""!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m(" + + + + + +
+ insert('theme::partials/version_info', ['params' => $params]); ?> + + + + +
+
+
+ section('content'); ?> +
+
+
+ diff --git a/docs/static/themes/pimcore/templates/partials/change_version.php b/docs/static/themes/pimcore/templates/partials/change_version.php new file mode 100644 index 0000000000..297a804114 --- /dev/null +++ b/docs/static/themes/pimcore/templates/partials/change_version.php @@ -0,0 +1,52 @@ + + + + + + + Version: + + + + + + + \ No newline at end of file diff --git a/docs/static/themes/pimcore/templates/partials/disqus.php b/docs/static/themes/pimcore/templates/partials/disqus.php new file mode 100644 index 0000000000..e4f295a8ed --- /dev/null +++ b/docs/static/themes/pimcore/templates/partials/disqus.php @@ -0,0 +1,26 @@ + + +
+ +
+ + + + diff --git a/docs/static/themes/pimcore/templates/partials/edit_on.php b/docs/static/themes/pimcore/templates/partials/edit_on.php new file mode 100644 index 0000000000..8e311200ac --- /dev/null +++ b/docs/static/themes/pimcore/templates/partials/edit_on.php @@ -0,0 +1,7 @@ +getHTML()->getEditOn(); +if ($edit_on) { ?> + + Edit on + + diff --git a/docs/static/themes/pimcore/templates/partials/navbar_content.php b/docs/static/themes/pimcore/templates/partials/navbar_content.php new file mode 100644 index 0000000000..da94f86183 --- /dev/null +++ b/docs/static/themes/pimcore/templates/partials/navbar_content.php @@ -0,0 +1,23 @@ + + + + +

+ + + + + +
+ + + + \ No newline at end of file diff --git a/docs/static/themes/pimcore/templates/partials/version_info.php b/docs/static/themes/pimcore/templates/partials/version_info.php new file mode 100644 index 0000000000..f73137e621 --- /dev/null +++ b/docs/static/themes/pimcore/templates/partials/version_info.php @@ -0,0 +1,34 @@ + + +
+ Built + + $params['build_versions']['source'], + '{short_commit_hash}' => substr($params['build_versions']['source'], 0, 6) + ]; + + $from = 'from '; + $from .= sprintf( + '%s', + str_replace(array_keys($replacements), array_values($replacements), $versionInfo['source_url']), + str_replace(array_keys($replacements), array_values($replacements), $versionInfo['source_name']) + ); + + echo $from; + } + ?> + + with + + + pimcore-docs@ + + . +
+ + diff --git a/docs/themes/common/less/vendor/bootstrap.less b/docs/themes/common/less/vendor/bootstrap.less deleted file mode 100644 index ea876e6f89..0000000000 --- a/docs/themes/common/less/vendor/bootstrap.less +++ /dev/null @@ -1,536 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2017 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -/*! - * Generated using the Bootstrap Customizer (http://getbootstrap.com/docs/3.3/customize/?id=350e77845e8549be4ed71b83bdc02365) - * Config saved to config.json and https://gist.github.com/350e77845e8549be4ed71b83bdc02365 - */ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ -html { - font-family: sans-serif; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - font-size: 2em; - margin: 0.67em 0; -} -mark { - background: #ff0; - color: #000; -} -small { - font-size: 80%; -} -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - color: inherit; - font: inherit; - margin: 0; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; -} -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -input[type="search"] { - -webkit-appearance: textfield; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} -legend { - border: 0; - padding: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-collapse: collapse; - border-spacing: 0; -} -td, -th { - padding: 0; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #333333; - background-color: #ffffff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #337ab7; - text-decoration: none; -} -a:hover, -a:focus { - color: #23527c; - text-decoration: underline; -} -a:focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - padding: 4px; - line-height: 1.42857143; - background-color: #ffffff; - border: 1px solid #dddddd; - border-radius: 4px; - -webkit-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - display: inline-block; - max-width: 100%; - height: auto; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eeeeee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} -[role="button"] { - cursor: pointer; -} -.nav { - margin-bottom: 0; - padding-left: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eeeeee; -} -.nav > li.disabled > a { - color: #777777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777777; - text-decoration: none; - background-color: transparent; - cursor: not-allowed; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eeeeee; - border-color: #337ab7; -} -.nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid #dddddd; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #eeeeee #eeeeee #dddddd; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555555; - background-color: #ffffff; - border: 1px solid #dddddd; - border-bottom-color: transparent; - cursor: default; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav-tabs.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #dddddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #dddddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #ffffff; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 4px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #ffffff; - background-color: #337ab7; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #dddddd; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #dddddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #ffffff; - } -} -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.clearfix:before, -.clearfix:after, -.nav:before, -.nav:after { - content: " "; - display: table; -} -.clearfix:after, -.nav:after { - clear: both; -} -.center-block { - display: block; - margin-left: auto; - margin-right: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; -} -.affix { - position: fixed; -} diff --git a/docs/themes/common/less/vendor/highlight.less b/docs/themes/common/less/vendor/highlight.less deleted file mode 100755 index be182d0b50..0000000000 --- a/docs/themes/common/less/vendor/highlight.less +++ /dev/null @@ -1,77 +0,0 @@ -/* - -Darcula color scheme from the JetBrains family of IDEs - -*/ - - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #2b2b2b; -} - -.hljs { - color: #bababa; -} - -.hljs-strong, -.hljs-emphasis { - color: #a8a8a2; -} - -.hljs-bullet, -.hljs-quote, -.hljs-link, -.hljs-number, -.hljs-regexp, -.hljs-literal { - color: #6896ba; -} - -.hljs-code, -.hljs-selector-class { - color: #a6e22e; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-section, -.hljs-attribute, -.hljs-name, -.hljs-variable { - color: #cb7832; -} - -.hljs-params { - color: #b9b9b9; -} - -.hljs-string { - color: #6a8759; -} - -.hljs-subst, -.hljs-type, -.hljs-built_in, -.hljs-builtin-name, -.hljs-symbol, -.hljs-selector-id, -.hljs-selector-attr, -.hljs-selector-pseudo, -.hljs-template-tag, -.hljs-template-variable, -.hljs-addition { - color: #e0c46c; -} - -.hljs-comment, -.hljs-deletion, -.hljs-meta { - color: #7f7f7f; -} diff --git a/docs/themes/common/less/vendor/normalize.less b/docs/themes/common/less/vendor/normalize.less deleted file mode 100755 index f9fca6136e..0000000000 --- a/docs/themes/common/less/vendor/normalize.less +++ /dev/null @@ -1,419 +0,0 @@ -/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */ - -/** - * 1. Change the default font family in all browsers (opinionated). - * 2. Prevent adjustments of font size after orientation changes in IE and iOS. - */ - -html { - font-family: sans-serif; /* 1 */ - -ms-text-size-adjust: 100%; /* 2 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/** - * Remove the margin in all browsers (opinionated). - */ - -body { - margin: 0; -} - -/* HTML5 display definitions - ========================================================================== */ - -/** - * Add the correct display in IE 9-. - * 1. Add the correct display in Edge, IE, and Firefox. - * 2. Add the correct display in IE. - */ - -article, -aside, -details, /* 1 */ -figcaption, -figure, -footer, -header, -main, /* 2 */ -menu, -nav, -section, -summary { /* 1 */ - display: block; -} - -/** - * Add the correct display in IE 9-. - */ - -audio, -canvas, -progress, -video { - display: inline-block; -} - -/** - * Add the correct display in iOS 4-7. - */ - -audio:not([controls]) { - display: none; - height: 0; -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ - -progress { - vertical-align: baseline; -} - -/** - * Add the correct display in IE 10-. - * 1. Add the correct display in IE. - */ - -template, /* 1 */ -[hidden] { - display: none; -} - -/* Links - ========================================================================== */ - -/** - * 1. Remove the gray background on active links in IE 10. - * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. - */ - -a { - background-color: transparent; /* 1 */ - -webkit-text-decoration-skip: objects; /* 2 */ -} - -/** - * Remove the outline on focused links when they are also active or hovered - * in all browsers (opinionated). - */ - -a:active, -a:hover { - outline-width: 0; -} - -/* Text-level semantics - ========================================================================== */ - -/** - * 1. Remove the bottom border in Firefox 39-. - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ - -abbr[title] { - border-bottom: none; /* 1 */ - text-decoration: underline; /* 2 */ - text-decoration: underline dotted; /* 2 */ -} - -/** - * Prevent the duplicate application of `bolder` by the next rule in Safari 6. - */ - -b, -strong { - font-weight: inherit; -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ - -b, -strong { - font-weight: bolder; -} - -/** - * Add the correct font style in Android 4.3-. - */ - -dfn { - font-style: italic; -} - -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/** - * Add the correct background and color in IE 9-. - */ - -mark { - background-color: #ff0; - color: #000; -} - -/** - * Add the correct font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* Embedded content - ========================================================================== */ - -/** - * Remove the border on images inside links in IE 10-. - */ - -img { - border-style: none; -} - -/** - * Hide the overflow in IE. - */ - -svg:not(:root) { - overflow: hidden; -} - -/* Grouping content - ========================================================================== */ - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -code, -kbd, -pre, -samp { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/** - * Add the correct margin in IE 8. - */ - -figure { - margin: 1em 40px; -} - -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ - -hr { - box-sizing: content-box; /* 1 */ - height: 0; /* 1 */ - overflow: visible; /* 2 */ -} - -/* Forms - ========================================================================== */ - -/** - * 1. Change font properties to `inherit` in all browsers (opinionated). - * 2. Remove the margin in Firefox and Safari. - */ - -button, -input, -select, -textarea { - font: inherit; /* 1 */ - margin: 0; /* 2 */ -} - -/** - * Restore the font weight unset by the previous rule. - */ - -optgroup { - font-weight: bold; -} - -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ - -button, -input { /* 1 */ - overflow: visible; -} - -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ - -button, -select { /* 1 */ - text-transform: none; -} - -/** - * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` - * controls in Android 4. - * 2. Correct the inability to style clickable types in iOS and Safari. - */ - -button, -html [type="button"], /* 1 */ -[type="reset"], -[type="submit"] { - -webkit-appearance: button; /* 2 */ -} - -/** - * Remove the inner border and padding in Firefox. - */ - -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus styles unset by the previous rule. - */ - -button:-moz-focusring, -[type="button"]:-moz-focusring, -[type="reset"]:-moz-focusring, -[type="submit"]:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Change the border, margin, and padding in all browsers (opinionated). - */ - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ - -legend { - box-sizing: border-box; /* 1 */ - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - padding: 0; /* 3 */ - white-space: normal; /* 1 */ -} - -/** - * Remove the default vertical scrollbar in IE. - */ - -textarea { - overflow: auto; -} - -/** - * 1. Add the correct box sizing in IE 10-. - * 2. Remove the padding in IE 10-. - */ - -[type="checkbox"], -[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ - -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ - -[type="search"] { - -webkit-appearance: textfield; /* 1 */ - outline-offset: -2px; /* 2 */ -} - -/** - * Remove the inner padding and cancel buttons in Chrome and Safari on OS X. - */ - -[type="search"]::-webkit-search-cancel-button, -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * Correct the text style of placeholders in Chrome, Edge, and Safari. - */ - -::-webkit-input-placeholder { - color: inherit; - opacity: 0.54; -} - -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ - -::-webkit-file-upload-button { - -webkit-appearance: button; /* 1 */ - font: inherit; /* 2 */ -} diff --git a/docs/themes/pimcore/config.json b/docs/themes/pimcore/config.json new file mode 100755 index 0000000000..5640881e93 --- /dev/null +++ b/docs/themes/pimcore/config.json @@ -0,0 +1,22 @@ +{ + "favicon": "img/favicon.png", + "css": [], + "js": [ + "js/build/pimcore.min.js" + ], + "fonts": [ + "//fonts.googleapis.com/css?family=Open+Sans:100,200,300,400,500,600,700,800,900" + ], + "variants": { + "core": { + "css": [ + "css/pimcore-core.min.css" + ] + }, + "generic": { + "css": [ + "css/pimcore-generic.min.css" + ] + } + } +} diff --git a/docs/themes/pimcore/css/pimcore-core.min.css b/docs/themes/pimcore/css/pimcore-core.min.css new file mode 100755 index 0000000000..04cf4e0e15 --- /dev/null +++ b/docs/themes/pimcore/css/pimcore-core.min.css @@ -0,0 +1,5 @@ +/*! + * Pimcore Documentation + * License: GPLv3 + */ +/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}[hidden],template{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.clearfix:after,.clearfix:before{content:" ";display:table}.clearfix:after{clear:both}.pull-right{float:right!important}.pull-left{float:left!important}.hidden{display:none!important}*,:after,:before{box-sizing:border-box}body{margin:0;padding:0}body,html{height:100%;background-color:#fff;color:#2d2d2d}.Columns__left{background-color:#f7f7f7}.Columns__right__content{padding:10px;background-color:#fff}.Collapsible__content{display:none}.Collapsible__trigger{margin:12px;padding:7px 10px;background-color:transparent;border:none;float:right;background-image:none;filter:none;box-shadow:none}.Collapsible__trigger--bar{display:block;width:18px;height:2px;margin-top:2px;margin-bottom:3px;background-color:#0078be;box-shadow:none}.Collapsible__trigger:hover{background-color:#c5c5cb;box-shadow:none}.Collapsible__trigger:hover .Collapsible__trigger--bar{background-color:#3f4657;box-shadow:none}@media screen and (min-width:768px){body{background-color:#0078be}.Navbar{position:fixed;z-index:1030;width:100%}.Collapsible__trigger{display:none!important}.Collapsible__content{display:block!important}.Columns{height:100%}.Columns:after,.Columns:before{content:" ";display:table}.Columns:after{clear:both}.Columns__left,.Columns__right{position:relative;min-height:1px;float:left;overflow:auto;height:100%}.Columns__left{width:25%;border-right:1px solid #e7e7e9;overflow-x:hidden}.Columns__right{width:75%}.Columns__right__content{padding:0 20px 20px;min-height:100%}}body{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}h1,h2,h3,h4,h5,h6{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:300}.s-content body{font-size:15px}.s-content h1,.s-content h2,.s-content h3,.s-content h4,.s-content h5,.s-content h6{font-weight:300;-webkit-font-smoothing:antialiased;cursor:text;line-height:1.4em;margin-top:.3em;margin-bottom:.3em}.s-content h1 code,.s-content h1 tt,.s-content h2 code,.s-content h2 tt,.s-content h3 code,.s-content h3 tt,.s-content h4 code,.s-content h4 tt,.s-content h5 code,.s-content h5 tt,.s-content h6 code,.s-content h6 tt{font-size:inherit}.s-content h1 i,.s-content h2 i,.s-content h3 i,.s-content h4 i,.s-content h5 i,.s-content h6 i{font-size:.7em}.s-content h1 p,.s-content h2 p,.s-content h3 p,.s-content h4 p,.s-content h5 p,.s-content h6 p{margin-top:0}.s-content h1{font-size:2.66666667em;color:#000}.s-content h2{font-size:2em;border-bottom:1px solid #eee;color:#000}.s-content h3{font-size:1.73333333em}.s-content h4{font-size:1.46666667em}.s-content h5{font-size:1.2em}.s-content h6{font-size:1.06666667em;color:#555}.s-content a{text-decoration:underline}.s-content p{line-height:1.8em;margin-bottom:20px}.s-content ol,.s-content ul{padding-left:30px}.s-content ul p,.s-content ul ul{margin:0}.s-content dl{padding:0}.s-content dl dt{font-weight:700;font-style:italic;padding:0;margin:15px 0 5px}.s-content dl dt:first-child{padding:0}.s-content dl dd{margin:0 0 15px;padding:0 15px}.s-content blockquote{font-size:1.2em;border-left:4px solid #ddd;padding:7px 15px}.s-content blockquote p{font-size:inherit}.s-content table{width:100%;padding:0;border-collapse:collapse}.s-content table tr{border-top:1px solid #eee;background-color:#fff;margin:0;padding:0}.s-content table tr:nth-child(2n){background-color:#f8f8f8}.s-content table th{font-weight:700;background:#eee}.s-content table td,.s-content table th{border:1px solid #eee;margin:0;padding:6px 13px}.s-content blockquote>:first-child,.s-content dl dd>:first-child,.s-content dl dt>:first-child,.s-content ol>:first-child,.s-content table td>:first-child,.s-content table th>:first-child,.s-content ul>:first-child{margin-top:0}.s-content blockquote>:last-child,.s-content dl dd>:last-child,.s-content dl dt>:last-child,.s-content ol>:last-child,.s-content table td>:last-child,.s-content table th>:last-child,.s-content ul>:last-child{margin-bottom:0}.s-content img{max-width:100%;display:block;margin:0 auto}.s-content code{font-family:Monaco,Menlo,Consolas,Courier New,monospace}.s-content code,.s-content tt{margin:0 2px;padding:0 5px;white-space:nowrap;border:1px solid #eaeaea;background-color:#f8f8f8;border-radius:3px}.s-content pre{background:#fdf6e3;color:#657b83;line-height:1.5em;overflow:auto;padding:20px;margin:0 -20px 20px}.s-content pre code{margin:0;padding:0;white-space:pre}.s-content pre code,.s-content pre tt{background-color:transparent;border:none}.s-content pre{border:none;border-radius:0;padding:10px 30px;margin-left:-20px;margin-right:-20px}@media (min-width:1150px){.Columns__right--float .Columns__right__content{height:100%;overflow:auto;padding:0!important;background-color:transparent!important;position:relative}.Columns__right--float .Columns__right__content article{width:100%;min-height:100%;overflow:auto;position:relative;z-index:1}.Columns__right--float .Columns__right__content article:before{content:"";width:50%;min-height:100%;overflow:auto;background-color:#fff;display:block;margin:0;position:absolute;z-index:-1}.Columns__right--float .Page__header,.Columns__right--float .Pager,.Columns__right--float .s-content blockquote,.Columns__right--float .s-content dl,.Columns__right--float .s-content h2,.Columns__right--float .s-content h3,.Columns__right--float .s-content h4,.Columns__right--float .s-content h5,.Columns__right--float .s-content h6,.Columns__right--float .s-content hr,.Columns__right--float .s-content ol,.Columns__right--float .s-content p,.Columns__right--float .s-content table,.Columns__right--float .s-content ul{float:left;clear:left;width:47%;margin-left:1.5%;margin-right:1.5%}.Columns__right--float .s-content table{background-color:#fff;white-space:normal}.Columns__right--float .s-content table code,.Columns__right--float .s-content table pre{white-space:normal}.Columns__right--float .s-content blockquote:before,.Columns__right--float .s-content dl:before,.Columns__right--float .s-content h2:before,.Columns__right--float .s-content h3:before,.Columns__right--float .s-content h4:before,.Columns__right--float .s-content h5:before,.Columns__right--float .s-content h6:before,.Columns__right--float .s-content hr:before,.Columns__right--float .s-content ol:before,.Columns__right--float .s-content p:before,.Columns__right--float .s-content ul:before{width:100%;height:10px;display:block;clear:both}.Columns__right--float .s-content blockquote dl,.Columns__right--float .s-content blockquote h2,.Columns__right--float .s-content blockquote h3,.Columns__right--float .s-content blockquote h4,.Columns__right--float .s-content blockquote h5,.Columns__right--float .s-content blockquote h6,.Columns__right--float .s-content blockquote hr,.Columns__right--float .s-content blockquote ol,.Columns__right--float .s-content blockquote p,.Columns__right--float .s-content blockquote pre,.Columns__right--float .s-content blockquote ul,.Columns__right--float .s-content dl dl,.Columns__right--float .s-content dl h2,.Columns__right--float .s-content dl h3,.Columns__right--float .s-content dl h4,.Columns__right--float .s-content dl h5,.Columns__right--float .s-content dl h6,.Columns__right--float .s-content dl hr,.Columns__right--float .s-content dl ol,.Columns__right--float .s-content dl p,.Columns__right--float .s-content dl pre,.Columns__right--float .s-content dl ul,.Columns__right--float .s-content h2 dl,.Columns__right--float .s-content h2 h2,.Columns__right--float .s-content h2 h3,.Columns__right--float .s-content h2 h4,.Columns__right--float .s-content h2 h5,.Columns__right--float .s-content h2 h6,.Columns__right--float .s-content h2 hr,.Columns__right--float .s-content h2 ol,.Columns__right--float .s-content h2 p,.Columns__right--float .s-content h2 pre,.Columns__right--float .s-content h2 ul,.Columns__right--float .s-content h3 dl,.Columns__right--float .s-content h3 h2,.Columns__right--float .s-content h3 h3,.Columns__right--float .s-content h3 h4,.Columns__right--float .s-content h3 h5,.Columns__right--float .s-content h3 h6,.Columns__right--float .s-content h3 hr,.Columns__right--float .s-content h3 ol,.Columns__right--float .s-content h3 p,.Columns__right--float .s-content h3 pre,.Columns__right--float .s-content h3 ul,.Columns__right--float .s-content h4 dl,.Columns__right--float .s-content h4 h2,.Columns__right--float .s-content h4 h3,.Columns__right--float .s-content h4 h4,.Columns__right--float .s-content h4 h5,.Columns__right--float .s-content h4 h6,.Columns__right--float .s-content h4 hr,.Columns__right--float .s-content h4 ol,.Columns__right--float .s-content h4 p,.Columns__right--float .s-content h4 pre,.Columns__right--float .s-content h4 ul,.Columns__right--float .s-content h5 dl,.Columns__right--float .s-content h5 h2,.Columns__right--float .s-content h5 h3,.Columns__right--float .s-content h5 h4,.Columns__right--float .s-content h5 h5,.Columns__right--float .s-content h5 h6,.Columns__right--float .s-content h5 hr,.Columns__right--float .s-content h5 ol,.Columns__right--float .s-content h5 p,.Columns__right--float .s-content h5 pre,.Columns__right--float .s-content h5 ul,.Columns__right--float .s-content h6 dl,.Columns__right--float .s-content h6 h2,.Columns__right--float .s-content h6 h3,.Columns__right--float .s-content h6 h4,.Columns__right--float .s-content h6 h5,.Columns__right--float .s-content h6 h6,.Columns__right--float .s-content h6 hr,.Columns__right--float .s-content h6 ol,.Columns__right--float .s-content h6 p,.Columns__right--float .s-content h6 pre,.Columns__right--float .s-content h6 ul,.Columns__right--float .s-content hr dl,.Columns__right--float .s-content hr h2,.Columns__right--float .s-content hr h3,.Columns__right--float .s-content hr h4,.Columns__right--float .s-content hr h5,.Columns__right--float .s-content hr h6,.Columns__right--float .s-content hr hr,.Columns__right--float .s-content hr ol,.Columns__right--float .s-content hr p,.Columns__right--float .s-content hr pre,.Columns__right--float .s-content hr ul,.Columns__right--float .s-content ol dl,.Columns__right--float .s-content ol h2,.Columns__right--float .s-content ol h3,.Columns__right--float .s-content ol h4,.Columns__right--float .s-content ol h5,.Columns__right--float .s-content ol h6,.Columns__right--float .s-content ol hr,.Columns__right--float .s-content ol ol,.Columns__right--float .s-content ol p,.Columns__right--float .s-content ol pre,.Columns__right--float .s-content ol ul,.Columns__right--float .s-content p dl,.Columns__right--float .s-content p h2,.Columns__right--float .s-content p h3,.Columns__right--float .s-content p h4,.Columns__right--float .s-content p h5,.Columns__right--float .s-content p h6,.Columns__right--float .s-content p hr,.Columns__right--float .s-content p ol,.Columns__right--float .s-content p p,.Columns__right--float .s-content p pre,.Columns__right--float .s-content p ul,.Columns__right--float .s-content ul dl,.Columns__right--float .s-content ul h2,.Columns__right--float .s-content ul h3,.Columns__right--float .s-content ul h4,.Columns__right--float .s-content ul h5,.Columns__right--float .s-content ul h6,.Columns__right--float .s-content ul hr,.Columns__right--float .s-content ul ol,.Columns__right--float .s-content ul p,.Columns__right--float .s-content ul pre,.Columns__right--float .s-content ul ul{width:auto;float:none;display:block}.Columns__right--float .s-content hr{border-color:#ddd}.Columns__right--float .s-content blockquote p,.Columns__right--float .s-content blockquote pre,.Columns__right--float .s-content li p,.Columns__right--float .s-content li pre{width:100%}.Columns__right--float .s-content pre{float:left;clear:right;width:50%;border:none;border-left:10px solid #fff;margin:0 0 10px;padding:0}.Columns__right--float .s-content pre code{padding:0 .5em}}a{text-decoration:none;color:#cd1017}a.external:after{content:" " url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=)}a.broken{color:red}p{margin:0 0 1em}hr{clear:both;margin:1em 0;border:0;border-top:1px solid #ddd}code{color:#3f4657}.Button{display:inline-block;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;border-radius:4px}.Button--small{font-size:12px;line-height:1.5;border-radius:3px}.Button--default{color:#333;background-color:#fff;border-color:#ccc}.Button--default.Button--active{color:#333;background-color:#e6e6e6;border-color:#adadad}.ButtonGroup{position:relative;display:inline-block;vertical-align:middle}.ButtonGroup .Button+.Button{margin-left:-1px}.ButtonGroup>.Button{position:relative;float:left}.ButtonGroup>.Button:focus,.ButtonGroup>.Button:hover{z-index:2}.ButtonGroup>.Button.Button--active,.ButtonGroup>.Button:active{z-index:3}.ButtonGroup>.Button:not(:first-child):not(:last-child){border-radius:0}.ButtonGroup>.Button:first-child{margin-left:0}.ButtonGroup>.Button:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.ButtonGroup>.Button:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.Brand{display:block;padding:15px 20px;font-size:18px;text-shadow:none;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;color:#0078be}.Brand,.Navbar{background-color:#3f4657}.Navbar{height:50px;box-shadow:0 1px 5px rgba(0,0,0,.25);margin-bottom:0}.Navbar .Brand{float:left;line-height:20px;height:50px}.CodeToggler__text{font-size:12px;line-height:1.5;padding:6px 10px 6px 0;display:inline-block;vertical-align:middle}.Nav{margin:0;padding:0}.Nav__arrow{display:inline-block;position:relative;width:16px;margin-left:-16px}.Nav__arrow:before{position:absolute;display:block;content:"";margin:-.25em 0 0 -.4em;left:50%;top:50%;width:.5em;height:.5em;border-right:.15em solid #3f4657;border-top:.15em solid #3f4657;transform:rotate(45deg);transition-duration:.3s}.Nav__item{display:block}.Nav__item a{display:block;margin:0;padding:6px 15px 6px 20px;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#3f4657;font-size:15px;text-shadow:none;border-color:#e7e7e9}.Nav__item a:hover{color:#3f4657;text-shadow:none;background-color:#c5c5cb}.Nav .Nav{display:none;margin-left:15px}.Nav .Nav .Nav__item a{margin:0 0 0 -15px;padding:3px 30px;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;color:#2d2d2d;opacity:.7}.Nav .Nav .Nav__item a:hover{opacity:1}.Nav .Nav .Nav__item--active a{color:#3f4657}.Nav__item--active>a,.Nav__item--open>a{background-color:#c5c5cb}.Nav__item--open>.Nav{display:block}.Nav__item--open>a>.Nav__arrow:before{margin-left:-.25em;transform:rotate(135deg)}.Page__header{margin:0 0 10px;padding:0;border-bottom:1px solid #eee}.Page__header:after,.Page__header:before{content:" ";display:table}.Page__header:after{clear:both}.Page__header h1{margin:0;padding:0;line-height:57px}.Page__header--separator{height:.6em}.Page__header a{text-decoration:none}.Links{padding:0 20px}.Links a{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#0078be;line-height:2em}.Search{position:relative}.Search__field{display:block;width:100%;height:34px;padding:6px 30px 6px 20px;color:#555;border-width:0 0 1px;border-bottom:1px solid #ccc;background:#fff;transition:border-color .15s ease-in-out}.Search__field:focus{border-color:#0078be;outline:0}.Search__icon{position:absolute;right:9px;top:9px;width:16px;height:16px}.Navbar .Search{float:right;margin:8px 20px}.Navbar .Search__field{box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-width:0;border-radius:4px;padding-left:10px}.TableOfContents{font-size:16px;padding-left:0;border-left:6px solid #efefef}.TableOfContents p{margin-bottom:0}.TableOfContents a{text-decoration:none}.TableOfContents .TableOfContents{border-left-width:0}.Pager{padding-left:0;margin:1em 0;list-style:none;text-align:center;clear:both}.Pager:after,.Pager:before{content:" ";display:table}.Pager:after{clear:both}.Pager li{display:inline}.Pager li>a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.Pager li>a:focus,.Pager li>a:hover{text-decoration:none;background-color:#eee}.Pager--next>a{float:right}.Pager--prev>a{float:left}.container{margin-right:auto;margin-left:auto}@media (min-width:992px){.container{width:970px}}@media (min-width:768px){.container{width:750px}}@media (min-width:1200px){.container{width:1170px}}.container--inner{width:80%;margin:0 auto}.Homepage{padding-top:60px!important;background-color:#0078be;border-radius:0;border:none;color:#3f4657;overflow:hidden;padding-bottom:0;margin-bottom:0;box-shadow:none}.HomepageTitle h2{width:80%;font-size:30px;margin:20px auto;text-align:center}.HomepageImage img{display:block;max-width:80%;margin:0 auto;height:auto}.HomepageButtons{padding:20px 0;background-color:#c5c5cb;text-align:center}.HomepageButtons .Button--hero{padding:20px 30px;border-radius:0;text-shadow:none;opacity:.8;margin:0 10px;text-transform:uppercase;border:5px solid #3f4657;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;background-image:none;filter:none;box-shadow:none}@media (max-width:768px){.HomepageButtons .Button--hero{display:block;margin-bottom:10px}}.HomepageButtons .Button--hero:hover{opacity:1}.HomepageButtons .Button--hero.Button--secondary{background-color:#c5c5cb;color:#3f4657}.HomepageButtons .Button--hero.Button--primary{background-color:#3f4657;color:#f7f7f7}.HomepageContent{background-color:#fff;padding:40px 0}@media (min-width:769px){.HomepageContent .row{margin:0 -15px}.HomepageContent .col-third{width:33.333333%;float:left;position:relative;min-height:1px;padding-left:15px;padding-right:15px}}.HomepageContent ol li,.HomepageContent ul li{list-style:none;padding-bottom:.5em}.HomepageContent ol li:before,.HomepageContent ul li:before{content:"";width:0;height:0;border:3px solid transparent;border-left-color:#0078be;float:left;display:block;margin:6px 6px 6px -12px}.HomepageContent .lead{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:300;font-size:16px;margin-bottom:20px;line-height:1.4}@media (min-width:768px){.HomepageContent{padding:40px 20px}.HomepageContent .lead{font-size:21px}}.HomepageFooter{background-color:#3f4657;border-radius:0;color:#0078be;border:none;box-shadow:none}@media (max-width:768px){.HomepageFooter{padding:0 20px;text-align:center}.HomepageFooter .HomepageFooter__links{padding-left:0;list-style-type:none}}@media (min-width:769px){.HomepageFooter .HomepageFooter__links{float:left}.HomepageFooter .HomepageFooter__twitter{float:right}}.HomepageFooter__links{margin:40px 0}.HomepageFooter__links li a{line-height:32px;font-size:16px;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700}.HomepageFooter__links li a:hover{color:#0078be;text-decoration:underline}.HomepageFooter__twitter{margin:40px 0}.HomepageFooter .Twitter{margin-bottom:20px}.s-content code{text-rendering:auto;-webkit-font-smoothing:initial;font-size:13px}.s-content pre{margin:20px -20px;background:#002b36}.s-content pre code{font-size:13px}.code-section pre{margin-top:0}.code-section .tab-pane{display:none}.code-section .tab-pane.active{display:block}.code-section .nav-tabs{list-style:none;border-bottom:none;padding-left:0;clear:left;margin-bottom:0}.code-section .nav-tabs:after,.code-section .nav-tabs:before{content:" ";display:table}.code-section .nav-tabs:after{clear:both}.code-section .nav-tabs li{float:left}.code-section .nav-tabs li a{display:block;background-color:#ddd;border-radius:4px 4px 0 0;border-color:#eee #eee #ddd;color:#333;padding:7px 12px;margin-right:4px}.code-section .nav-tabs li.active>a,.code-section .nav-tabs li.active>a:focus,.code-section .nav-tabs li.active>a:hover{background-color:#002b36;border-color:#222;color:#fff}.hljs{display:block;overflow-x:auto;padding:.5em;background:#002b36;color:#839496}.hljs-comment,.hljs-quote{color:#586e75}.hljs-addition,.hljs-keyword,.hljs-selector-tag{color:#859900}.hljs-doctag,.hljs-literal,.hljs-meta .hljs-meta-string,.hljs-number,.hljs-regexp,.hljs-string{color:#2aa198}.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-title{color:#268bd2}.hljs-attr,.hljs-attribute,.hljs-class .hljs-title,.hljs-template-variable,.hljs-type,.hljs-variable{color:#b58900}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-meta .hljs-keyword,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-subst,.hljs-symbol{color:#cb4b16}.hljs-built_in,.hljs-deletion{color:#dc322f}.hljs-formula{background:#073642}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.alert{color:#464a4e;background:#e7e8ea;border-left:5px solid #dddfe2;min-height:20px;margin:15px 0;padding:15px;position:relative}.alert.alert-note{color:#004085;background:#cce5ff;border-color:#b8daff}.alert.alert-success{color:#155724;background:#d4edda;border-color:#c3e6cb}.alert.alert-warning{color:#856404;background:#fff3cd;border-color:#ffeeba}.alert.alert-danger,.alert.alert-error{color:#721c24;background:#f8d7da;border-color:#f5c6cb}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}h1,h2,h3,h4,h5,h6{page-break-after:avoid;page-break-before:auto}blockquote,pre{border:1px solid #999;font-style:italic}blockquote,img,pre{page-break-inside:avoid}img{border:0}a,a:visited{text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}q{quotes:none}q:before{content:""}q:after{content:" (" attr(cite) ")"}.page-break{display:block;page-break-before:always}.hidden-print,.Pager,aside{display:none}.Columns__right{width:100%!important}.s-content a:after{content:" (" attr(href) ")";font-size:80%;word-wrap:break-word}.s-content a[href^="#"]:after{content:""}h1 a[href]:after{font-size:50%}}body{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif}.Brand{background:#222;color:#fff}.Brand .Brand__logo{color:transparent;display:block;max-width:170px;height:50px;background:transparent url(../img/logo-white.svg) no-repeat 0}.Brand .subtitle{margin-top:5px;margin-bottom:0}.Pager{margin:30px 0 10px}.breadcrumbs,.s-content h2{margin-top:25px}.s-content a{text-decoration:none}.s-content img{margin:0}@media screen and (min-width:768px){.s-content img.img-narrow{max-width:50%}}.s-content table{margin-top:15px;margin-bottom:15px}.s-content blockquote{font-size:16px;border-color:#ffeaae;background:#fffdf6;color:#666;margin-left:0;margin-right:0}.s-content h1 .headerlink,.s-content h2 .headerlink,.s-content h3 .headerlink,.s-content h4 .headerlink,.s-content h5 .headerlink,.s-content h6 .headerlink{color:transparent;font-size:75%;font-weight:400;line-height:1;margin:0;padding:0 0 0 6px}.s-content h1:hover .headerlink,.s-content h2:hover .headerlink,.s-content h3:hover .headerlink,.s-content h4:hover .headerlink,.s-content h5:hover .headerlink,.s-content h6:hover .headerlink{color:#c5c5cb}.s-content h1:hover .headerlink:hover,.s-content h2:hover .headerlink:hover,.s-content h3:hover .headerlink:hover,.s-content h4:hover .headerlink:hover,.s-content h5:hover .headerlink:hover,.s-content h6:hover .headerlink:hover{color:#0078be}.disqus-separator{margin:15px 0 20px}.Columns__landing .Nav{padding-left:15px}.ribbon-box{position:relative}.ribbon-box .ribbon{position:absolute;right:-5px;top:-5px;z-index:1;overflow:hidden;width:86px;height:86px;text-align:right}.ribbon-box.navigation .ribbon{right:-26px;top:-78px}.ribbon-box .ribbon span{font-size:10px;font-weight:700;color:#fff;text-transform:uppercase;text-align:center;line-height:20px;transform:rotate(45deg);-webkit-transform:rotate(45deg);width:115px;display:block;background:linear-gradient(#2989d8,#1e5799);box-shadow:0 3px 10px -5px #000;position:absolute;top:24px;right:-23px}.ribbon-box .ribbon span:before{left:0;border-color:#1e5799 transparent transparent #1e5799}.ribbon-box .ribbon span:after,.ribbon-box .ribbon span:before{content:"";position:absolute;top:100%;z-index:-1;border-style:solid;border-width:3px}.ribbon-box .ribbon span:after{right:0;border-color:#1e5799 #1e5799 transparent transparent}@media screen and (max-width:768px){.ribbon-box.navigation .ribbon{top:44px;pointer-events:none}}.extension-card{border:1px solid #e7e7e9;border-radius:4px;padding:20px;height:100%;position:relative}.extension-card .button{display:inline-block;padding:5px 14px;border:1px solid #e7e7e9;border-radius:15px}.extension-card .button:hover{background-color:#e7e7e9}.action-box{font-size:12px;float:right}.action-box .edit_on{color:grey;margin-left:3px;display:block;text-align:right}.action-box .version-switcher{font-size:16px;display:block;margin-bottom:5px}.action-box .version-switcher select{margin-left:3px}.column{margin:20px 0}@media screen and (min-width:768px){.Columns__landing{display:flex;flex-wrap:wrap}.Columns__landing .column{width:48%}.Columns__landing .column:nth-child(2n){margin-left:4%}}aside.Collapsible .version-info{font-size:11px;margin-bottom:25px}.SearchResults .SearchResults__highlight{font-weight:400;background:#bee7ff}.SearchResults .SearchResults__text,.SearchResults .SearchResults__title,.SearchResults .SearchResults__url,.SearchResults .SearchResults__warning{font-weight:400}.SearchResults .SearchResults__text a,.SearchResults .SearchResults__title a,.SearchResults .SearchResults__url a,.SearchResults .SearchResults__warning a{color:#0078be}.landingpage .Nav__item--open>a{background:transparent!important}.landingpage .Columns__landing div>.Nav li a{background:none;line-height:1.5}.landingpage .Columns__landing div>.Nav>li>a{display:block;color:#0078be;padding-left:0;font-size:16px;margin-top:15px}.landingpage .Columns__landing div>.Nav>li ul>li>a{padding-left:16px}.Banner{margin:40px 0 10px}.Banner .img{width:100%}.lightbox{display:none;position:fixed;z-index:999;top:0;left:0;right:0;bottom:0;padding:1em;background:rgba(0,0,0,.8)}.lightbox:target{display:block}.lightbox img{width:100%;height:100%;object-fit:scale-down}.image-as-lightbox+p>img,img.lightbox-thumbnail{max-width:50%;max-height:350px} \ No newline at end of file diff --git a/docs/themes/pimcore/css/pimcore-generic.min.css b/docs/themes/pimcore/css/pimcore-generic.min.css new file mode 100755 index 0000000000..c16cdddad7 --- /dev/null +++ b/docs/themes/pimcore/css/pimcore-generic.min.css @@ -0,0 +1,5 @@ +/*! + * Pimcore Documentation + * License: GPLv3 + */ +/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}[hidden],template{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.clearfix:after,.clearfix:before{content:" ";display:table}.clearfix:after{clear:both}.pull-right{float:right!important}.pull-left{float:left!important}.hidden{display:none!important}*,:after,:before{box-sizing:border-box}body{margin:0;padding:0}body,html{height:100%;background-color:#fff;color:#2d2d2d}.Columns__left{background-color:#f7f7f7}.Columns__right__content{padding:10px;background-color:#fff}.Collapsible__content{display:none}.Collapsible__trigger{margin:12px;padding:7px 10px;background-color:transparent;border:none;float:right;background-image:none;filter:none;box-shadow:none}.Collapsible__trigger--bar{display:block;width:18px;height:2px;margin-top:2px;margin-bottom:3px;background-color:#0078be;box-shadow:none}.Collapsible__trigger:hover{background-color:#c5c5cb;box-shadow:none}.Collapsible__trigger:hover .Collapsible__trigger--bar{background-color:#3f4657;box-shadow:none}@media screen and (min-width:768px){body{background-color:#0078be}.Navbar{position:fixed;z-index:1030;width:100%}.Collapsible__trigger{display:none!important}.Collapsible__content{display:block!important}.Columns{height:100%}.Columns:after,.Columns:before{content:" ";display:table}.Columns:after{clear:both}.Columns__left,.Columns__right{position:relative;min-height:1px;float:left;overflow:auto;height:100%}.Columns__left{width:25%;border-right:1px solid #e7e7e9;overflow-x:hidden}.Columns__right{width:75%}.Columns__right__content{padding:0 20px 20px;min-height:100%}}body{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}h1,h2,h3,h4,h5,h6{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:300}.s-content body{font-size:15px}.s-content h1,.s-content h2,.s-content h3,.s-content h4,.s-content h5,.s-content h6{font-weight:300;-webkit-font-smoothing:antialiased;cursor:text;line-height:1.4em;margin-top:.3em;margin-bottom:.3em}.s-content h1 code,.s-content h1 tt,.s-content h2 code,.s-content h2 tt,.s-content h3 code,.s-content h3 tt,.s-content h4 code,.s-content h4 tt,.s-content h5 code,.s-content h5 tt,.s-content h6 code,.s-content h6 tt{font-size:inherit}.s-content h1 i,.s-content h2 i,.s-content h3 i,.s-content h4 i,.s-content h5 i,.s-content h6 i{font-size:.7em}.s-content h1 p,.s-content h2 p,.s-content h3 p,.s-content h4 p,.s-content h5 p,.s-content h6 p{margin-top:0}.s-content h1{font-size:2.66666667em;color:#000}.s-content h2{font-size:2em;border-bottom:1px solid #eee;color:#000}.s-content h3{font-size:1.73333333em}.s-content h4{font-size:1.46666667em}.s-content h5{font-size:1.2em}.s-content h6{font-size:1.06666667em;color:#555}.s-content a{text-decoration:underline}.s-content p{line-height:1.8em;margin-bottom:20px}.s-content ol,.s-content ul{padding-left:30px}.s-content ul p,.s-content ul ul{margin:0}.s-content dl{padding:0}.s-content dl dt{font-weight:700;font-style:italic;padding:0;margin:15px 0 5px}.s-content dl dt:first-child{padding:0}.s-content dl dd{margin:0 0 15px;padding:0 15px}.s-content blockquote{font-size:1.2em;border-left:4px solid #ddd;padding:7px 15px}.s-content blockquote p{font-size:inherit}.s-content table{width:100%;padding:0;border-collapse:collapse}.s-content table tr{border-top:1px solid #eee;background-color:#fff;margin:0;padding:0}.s-content table tr:nth-child(2n){background-color:#f8f8f8}.s-content table th{font-weight:700;background:#eee}.s-content table td,.s-content table th{border:1px solid #eee;margin:0;padding:6px 13px}.s-content blockquote>:first-child,.s-content dl dd>:first-child,.s-content dl dt>:first-child,.s-content ol>:first-child,.s-content table td>:first-child,.s-content table th>:first-child,.s-content ul>:first-child{margin-top:0}.s-content blockquote>:last-child,.s-content dl dd>:last-child,.s-content dl dt>:last-child,.s-content ol>:last-child,.s-content table td>:last-child,.s-content table th>:last-child,.s-content ul>:last-child{margin-bottom:0}.s-content img{max-width:100%;display:block;margin:0 auto}.s-content code{font-family:Monaco,Menlo,Consolas,Courier New,monospace}.s-content code,.s-content tt{margin:0 2px;padding:0 5px;white-space:nowrap;border:1px solid #eaeaea;background-color:#f8f8f8;border-radius:3px}.s-content pre{background:#fdf6e3;color:#657b83;line-height:1.5em;overflow:auto;padding:20px;margin:0 -20px 20px}.s-content pre code{margin:0;padding:0;white-space:pre}.s-content pre code,.s-content pre tt{background-color:transparent;border:none}.s-content pre{border:none;border-radius:0;padding:10px 30px;margin-left:-20px;margin-right:-20px}@media (min-width:1150px){.Columns__right--float .Columns__right__content{height:100%;overflow:auto;padding:0!important;background-color:transparent!important;position:relative}.Columns__right--float .Columns__right__content article{width:100%;min-height:100%;overflow:auto;position:relative;z-index:1}.Columns__right--float .Columns__right__content article:before{content:"";width:50%;min-height:100%;overflow:auto;background-color:#fff;display:block;margin:0;position:absolute;z-index:-1}.Columns__right--float .Page__header,.Columns__right--float .Pager,.Columns__right--float .s-content blockquote,.Columns__right--float .s-content dl,.Columns__right--float .s-content h2,.Columns__right--float .s-content h3,.Columns__right--float .s-content h4,.Columns__right--float .s-content h5,.Columns__right--float .s-content h6,.Columns__right--float .s-content hr,.Columns__right--float .s-content ol,.Columns__right--float .s-content p,.Columns__right--float .s-content table,.Columns__right--float .s-content ul{float:left;clear:left;width:47%;margin-left:1.5%;margin-right:1.5%}.Columns__right--float .s-content table{background-color:#fff;white-space:normal}.Columns__right--float .s-content table code,.Columns__right--float .s-content table pre{white-space:normal}.Columns__right--float .s-content blockquote:before,.Columns__right--float .s-content dl:before,.Columns__right--float .s-content h2:before,.Columns__right--float .s-content h3:before,.Columns__right--float .s-content h4:before,.Columns__right--float .s-content h5:before,.Columns__right--float .s-content h6:before,.Columns__right--float .s-content hr:before,.Columns__right--float .s-content ol:before,.Columns__right--float .s-content p:before,.Columns__right--float .s-content ul:before{width:100%;height:10px;display:block;clear:both}.Columns__right--float .s-content blockquote dl,.Columns__right--float .s-content blockquote h2,.Columns__right--float .s-content blockquote h3,.Columns__right--float .s-content blockquote h4,.Columns__right--float .s-content blockquote h5,.Columns__right--float .s-content blockquote h6,.Columns__right--float .s-content blockquote hr,.Columns__right--float .s-content blockquote ol,.Columns__right--float .s-content blockquote p,.Columns__right--float .s-content blockquote pre,.Columns__right--float .s-content blockquote ul,.Columns__right--float .s-content dl dl,.Columns__right--float .s-content dl h2,.Columns__right--float .s-content dl h3,.Columns__right--float .s-content dl h4,.Columns__right--float .s-content dl h5,.Columns__right--float .s-content dl h6,.Columns__right--float .s-content dl hr,.Columns__right--float .s-content dl ol,.Columns__right--float .s-content dl p,.Columns__right--float .s-content dl pre,.Columns__right--float .s-content dl ul,.Columns__right--float .s-content h2 dl,.Columns__right--float .s-content h2 h2,.Columns__right--float .s-content h2 h3,.Columns__right--float .s-content h2 h4,.Columns__right--float .s-content h2 h5,.Columns__right--float .s-content h2 h6,.Columns__right--float .s-content h2 hr,.Columns__right--float .s-content h2 ol,.Columns__right--float .s-content h2 p,.Columns__right--float .s-content h2 pre,.Columns__right--float .s-content h2 ul,.Columns__right--float .s-content h3 dl,.Columns__right--float .s-content h3 h2,.Columns__right--float .s-content h3 h3,.Columns__right--float .s-content h3 h4,.Columns__right--float .s-content h3 h5,.Columns__right--float .s-content h3 h6,.Columns__right--float .s-content h3 hr,.Columns__right--float .s-content h3 ol,.Columns__right--float .s-content h3 p,.Columns__right--float .s-content h3 pre,.Columns__right--float .s-content h3 ul,.Columns__right--float .s-content h4 dl,.Columns__right--float .s-content h4 h2,.Columns__right--float .s-content h4 h3,.Columns__right--float .s-content h4 h4,.Columns__right--float .s-content h4 h5,.Columns__right--float .s-content h4 h6,.Columns__right--float .s-content h4 hr,.Columns__right--float .s-content h4 ol,.Columns__right--float .s-content h4 p,.Columns__right--float .s-content h4 pre,.Columns__right--float .s-content h4 ul,.Columns__right--float .s-content h5 dl,.Columns__right--float .s-content h5 h2,.Columns__right--float .s-content h5 h3,.Columns__right--float .s-content h5 h4,.Columns__right--float .s-content h5 h5,.Columns__right--float .s-content h5 h6,.Columns__right--float .s-content h5 hr,.Columns__right--float .s-content h5 ol,.Columns__right--float .s-content h5 p,.Columns__right--float .s-content h5 pre,.Columns__right--float .s-content h5 ul,.Columns__right--float .s-content h6 dl,.Columns__right--float .s-content h6 h2,.Columns__right--float .s-content h6 h3,.Columns__right--float .s-content h6 h4,.Columns__right--float .s-content h6 h5,.Columns__right--float .s-content h6 h6,.Columns__right--float .s-content h6 hr,.Columns__right--float .s-content h6 ol,.Columns__right--float .s-content h6 p,.Columns__right--float .s-content h6 pre,.Columns__right--float .s-content h6 ul,.Columns__right--float .s-content hr dl,.Columns__right--float .s-content hr h2,.Columns__right--float .s-content hr h3,.Columns__right--float .s-content hr h4,.Columns__right--float .s-content hr h5,.Columns__right--float .s-content hr h6,.Columns__right--float .s-content hr hr,.Columns__right--float .s-content hr ol,.Columns__right--float .s-content hr p,.Columns__right--float .s-content hr pre,.Columns__right--float .s-content hr ul,.Columns__right--float .s-content ol dl,.Columns__right--float .s-content ol h2,.Columns__right--float .s-content ol h3,.Columns__right--float .s-content ol h4,.Columns__right--float .s-content ol h5,.Columns__right--float .s-content ol h6,.Columns__right--float .s-content ol hr,.Columns__right--float .s-content ol ol,.Columns__right--float .s-content ol p,.Columns__right--float .s-content ol pre,.Columns__right--float .s-content ol ul,.Columns__right--float .s-content p dl,.Columns__right--float .s-content p h2,.Columns__right--float .s-content p h3,.Columns__right--float .s-content p h4,.Columns__right--float .s-content p h5,.Columns__right--float .s-content p h6,.Columns__right--float .s-content p hr,.Columns__right--float .s-content p ol,.Columns__right--float .s-content p p,.Columns__right--float .s-content p pre,.Columns__right--float .s-content p ul,.Columns__right--float .s-content ul dl,.Columns__right--float .s-content ul h2,.Columns__right--float .s-content ul h3,.Columns__right--float .s-content ul h4,.Columns__right--float .s-content ul h5,.Columns__right--float .s-content ul h6,.Columns__right--float .s-content ul hr,.Columns__right--float .s-content ul ol,.Columns__right--float .s-content ul p,.Columns__right--float .s-content ul pre,.Columns__right--float .s-content ul ul{width:auto;float:none;display:block}.Columns__right--float .s-content hr{border-color:#ddd}.Columns__right--float .s-content blockquote p,.Columns__right--float .s-content blockquote pre,.Columns__right--float .s-content li p,.Columns__right--float .s-content li pre{width:100%}.Columns__right--float .s-content pre{float:left;clear:right;width:50%;border:none;border-left:10px solid #fff;margin:0 0 10px;padding:0}.Columns__right--float .s-content pre code{padding:0 .5em}}a{text-decoration:none;color:#0078be}a.external:after{content:" " url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=)}a.broken{color:red}p{margin:0 0 1em}hr{clear:both;margin:1em 0;border:0;border-top:1px solid #ddd}code{color:#3f4657}.Button{display:inline-block;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;border-radius:4px}.Button--small{font-size:12px;line-height:1.5;border-radius:3px}.Button--default{color:#333;background-color:#fff;border-color:#ccc}.Button--default.Button--active{color:#333;background-color:#e6e6e6;border-color:#adadad}.ButtonGroup{position:relative;display:inline-block;vertical-align:middle}.ButtonGroup .Button+.Button{margin-left:-1px}.ButtonGroup>.Button{position:relative;float:left}.ButtonGroup>.Button:focus,.ButtonGroup>.Button:hover{z-index:2}.ButtonGroup>.Button.Button--active,.ButtonGroup>.Button:active{z-index:3}.ButtonGroup>.Button:not(:first-child):not(:last-child){border-radius:0}.ButtonGroup>.Button:first-child{margin-left:0}.ButtonGroup>.Button:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.ButtonGroup>.Button:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.Brand{display:block;padding:15px 20px;font-size:18px;text-shadow:none;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;color:#0078be}.Brand,.Navbar{background-color:#3f4657}.Navbar{height:50px;box-shadow:0 1px 5px rgba(0,0,0,.25);margin-bottom:0}.Navbar .Brand{float:left;line-height:20px;height:50px}.CodeToggler__text{font-size:12px;line-height:1.5;padding:6px 10px 6px 0;display:inline-block;vertical-align:middle}.Nav{margin:0;padding:0}.Nav__arrow{display:inline-block;position:relative;width:16px;margin-left:-16px}.Nav__arrow:before{position:absolute;display:block;content:"";margin:-.25em 0 0 -.4em;left:50%;top:50%;width:.5em;height:.5em;border-right:.15em solid #3f4657;border-top:.15em solid #3f4657;transform:rotate(45deg);transition-duration:.3s}.Nav__item{display:block}.Nav__item a{display:block;margin:0;padding:6px 15px 6px 20px;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#3f4657;font-size:15px;text-shadow:none;border-color:#e7e7e9}.Nav__item a:hover{color:#3f4657;text-shadow:none;background-color:#c5c5cb}.Nav .Nav{display:none;margin-left:15px}.Nav .Nav .Nav__item a{margin:0 0 0 -15px;padding:3px 30px;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;color:#2d2d2d;opacity:.7}.Nav .Nav .Nav__item a:hover{opacity:1}.Nav .Nav .Nav__item--active a{color:#3f4657}.Nav__item--active>a,.Nav__item--open>a{background-color:#c5c5cb}.Nav__item--open>.Nav{display:block}.Nav__item--open>a>.Nav__arrow:before{margin-left:-.25em;transform:rotate(135deg)}.Page__header{margin:0 0 10px;padding:0;border-bottom:1px solid #eee}.Page__header:after,.Page__header:before{content:" ";display:table}.Page__header:after{clear:both}.Page__header h1{margin:0;padding:0;line-height:57px}.Page__header--separator{height:.6em}.Page__header a{text-decoration:none}.Links{padding:0 20px}.Links a{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;color:#0078be;line-height:2em}.Search{position:relative}.Search__field{display:block;width:100%;height:34px;padding:6px 30px 6px 20px;color:#555;border-width:0 0 1px;border-bottom:1px solid #ccc;background:#fff;transition:border-color .15s ease-in-out}.Search__field:focus{border-color:#0078be;outline:0}.Search__icon{position:absolute;right:9px;top:9px;width:16px;height:16px}.Navbar .Search{float:right;margin:8px 20px}.Navbar .Search__field{box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-width:0;border-radius:4px;padding-left:10px}.TableOfContents{font-size:16px;padding-left:0;border-left:6px solid #efefef}.TableOfContents p{margin-bottom:0}.TableOfContents a{text-decoration:none}.TableOfContents .TableOfContents{border-left-width:0}.Pager{padding-left:0;margin:1em 0;list-style:none;text-align:center;clear:both}.Pager:after,.Pager:before{content:" ";display:table}.Pager:after{clear:both}.Pager li{display:inline}.Pager li>a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.Pager li>a:focus,.Pager li>a:hover{text-decoration:none;background-color:#eee}.Pager--next>a{float:right}.Pager--prev>a{float:left}.container{margin-right:auto;margin-left:auto}@media (min-width:992px){.container{width:970px}}@media (min-width:768px){.container{width:750px}}@media (min-width:1200px){.container{width:1170px}}.container--inner{width:80%;margin:0 auto}.Homepage{padding-top:60px!important;background-color:#0078be;border-radius:0;border:none;color:#3f4657;overflow:hidden;padding-bottom:0;margin-bottom:0;box-shadow:none}.HomepageTitle h2{width:80%;font-size:30px;margin:20px auto;text-align:center}.HomepageImage img{display:block;max-width:80%;margin:0 auto;height:auto}.HomepageButtons{padding:20px 0;background-color:#c5c5cb;text-align:center}.HomepageButtons .Button--hero{padding:20px 30px;border-radius:0;text-shadow:none;opacity:.8;margin:0 10px;text-transform:uppercase;border:5px solid #3f4657;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;background-image:none;filter:none;box-shadow:none}@media (max-width:768px){.HomepageButtons .Button--hero{display:block;margin-bottom:10px}}.HomepageButtons .Button--hero:hover{opacity:1}.HomepageButtons .Button--hero.Button--secondary{background-color:#c5c5cb;color:#3f4657}.HomepageButtons .Button--hero.Button--primary{background-color:#3f4657;color:#f7f7f7}.HomepageContent{background-color:#fff;padding:40px 0}@media (min-width:769px){.HomepageContent .row{margin:0 -15px}.HomepageContent .col-third{width:33.333333%;float:left;position:relative;min-height:1px;padding-left:15px;padding-right:15px}}.HomepageContent ol li,.HomepageContent ul li{list-style:none;padding-bottom:.5em}.HomepageContent ol li:before,.HomepageContent ul li:before{content:"";width:0;height:0;border:3px solid transparent;border-left-color:#0078be;float:left;display:block;margin:6px 6px 6px -12px}.HomepageContent .lead{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:300;font-size:16px;margin-bottom:20px;line-height:1.4}@media (min-width:768px){.HomepageContent{padding:40px 20px}.HomepageContent .lead{font-size:21px}}.HomepageFooter{background-color:#3f4657;border-radius:0;color:#0078be;border:none;box-shadow:none}@media (max-width:768px){.HomepageFooter{padding:0 20px;text-align:center}.HomepageFooter .HomepageFooter__links{padding-left:0;list-style-type:none}}@media (min-width:769px){.HomepageFooter .HomepageFooter__links{float:left}.HomepageFooter .HomepageFooter__twitter{float:right}}.HomepageFooter__links{margin:40px 0}.HomepageFooter__links li a{line-height:32px;font-size:16px;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700}.HomepageFooter__links li a:hover{color:#0078be;text-decoration:underline}.HomepageFooter__twitter{margin:40px 0}.HomepageFooter .Twitter{margin-bottom:20px}.s-content code{text-rendering:auto;-webkit-font-smoothing:initial;font-size:13px}.s-content pre{margin:20px -20px;background:#002b36}.s-content pre code{font-size:13px}.code-section pre{margin-top:0}.code-section .tab-pane{display:none}.code-section .tab-pane.active{display:block}.code-section .nav-tabs{list-style:none;border-bottom:none;padding-left:0;clear:left;margin-bottom:0}.code-section .nav-tabs:after,.code-section .nav-tabs:before{content:" ";display:table}.code-section .nav-tabs:after{clear:both}.code-section .nav-tabs li{float:left}.code-section .nav-tabs li a{display:block;background-color:#ddd;border-radius:4px 4px 0 0;border-color:#eee #eee #ddd;color:#333;padding:7px 12px;margin-right:4px}.code-section .nav-tabs li.active>a,.code-section .nav-tabs li.active>a:focus,.code-section .nav-tabs li.active>a:hover{background-color:#002b36;border-color:#222;color:#fff}.hljs{display:block;overflow-x:auto;padding:.5em;background:#002b36;color:#839496}.hljs-comment,.hljs-quote{color:#586e75}.hljs-addition,.hljs-keyword,.hljs-selector-tag{color:#859900}.hljs-doctag,.hljs-literal,.hljs-meta .hljs-meta-string,.hljs-number,.hljs-regexp,.hljs-string{color:#2aa198}.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-title{color:#268bd2}.hljs-attr,.hljs-attribute,.hljs-class .hljs-title,.hljs-template-variable,.hljs-type,.hljs-variable{color:#b58900}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-meta .hljs-keyword,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-subst,.hljs-symbol{color:#cb4b16}.hljs-built_in,.hljs-deletion{color:#dc322f}.hljs-formula{background:#073642}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.alert{color:#464a4e;background:#e7e8ea;border-left:5px solid #dddfe2;min-height:20px;margin:15px 0;padding:15px;position:relative}.alert.alert-note{color:#004085;background:#cce5ff;border-color:#b8daff}.alert.alert-success{color:#155724;background:#d4edda;border-color:#c3e6cb}.alert.alert-warning{color:#856404;background:#fff3cd;border-color:#ffeeba}.alert.alert-danger,.alert.alert-error{color:#721c24;background:#f8d7da;border-color:#f5c6cb}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}h1,h2,h3,h4,h5,h6{page-break-after:avoid;page-break-before:auto}blockquote,pre{border:1px solid #999;font-style:italic}blockquote,img,pre{page-break-inside:avoid}img{border:0}a,a:visited{text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}q{quotes:none}q:before{content:""}q:after{content:" (" attr(cite) ")"}.page-break{display:block;page-break-before:always}.hidden-print,.Pager,aside{display:none}.Columns__right{width:100%!important}.s-content a:after{content:" (" attr(href) ")";font-size:80%;word-wrap:break-word}.s-content a[href^="#"]:after{content:""}h1 a[href]:after{font-size:50%}}body{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif}.Brand{background:#222;color:#fff}.Brand .Brand__logo{color:transparent;display:block;max-width:170px;height:26.4px;background:transparent url(../img/logo-white.svg) no-repeat 0}.Brand .subtitle{margin-top:5px;margin-bottom:0}.Pager{margin:30px 0 10px}.breadcrumbs,.s-content h2{margin-top:25px}.s-content a{text-decoration:none}.s-content img{margin:0}@media screen and (min-width:768px){.s-content img.img-narrow{max-width:50%}}.s-content table{margin-top:15px;margin-bottom:15px}.s-content blockquote{font-size:16px;border-color:#ffeaae;background:#fffdf6;color:#666;margin-left:0;margin-right:0}.s-content h1 .headerlink,.s-content h2 .headerlink,.s-content h3 .headerlink,.s-content h4 .headerlink,.s-content h5 .headerlink,.s-content h6 .headerlink{color:transparent;font-size:75%;font-weight:400;line-height:1;margin:0;padding:0 0 0 6px}.s-content h1:hover .headerlink,.s-content h2:hover .headerlink,.s-content h3:hover .headerlink,.s-content h4:hover .headerlink,.s-content h5:hover .headerlink,.s-content h6:hover .headerlink{color:#c5c5cb}.s-content h1:hover .headerlink:hover,.s-content h2:hover .headerlink:hover,.s-content h3:hover .headerlink:hover,.s-content h4:hover .headerlink:hover,.s-content h5:hover .headerlink:hover,.s-content h6:hover .headerlink:hover{color:#0078be}.disqus-separator{margin:15px 0 20px}.Columns__landing .Nav{padding-left:15px}.ribbon-box{position:relative}.ribbon-box .ribbon{position:absolute;right:-5px;top:-5px;z-index:1;overflow:hidden;width:86px;height:86px;text-align:right}.ribbon-box.navigation .ribbon{right:-26px;top:-78px}.ribbon-box .ribbon span{font-size:10px;font-weight:700;color:#fff;text-transform:uppercase;text-align:center;line-height:20px;transform:rotate(45deg);-webkit-transform:rotate(45deg);width:115px;display:block;background:linear-gradient(#2989d8,#1e5799);box-shadow:0 3px 10px -5px #000;position:absolute;top:24px;right:-23px}.ribbon-box .ribbon span:before{left:0;border-color:#1e5799 transparent transparent #1e5799}.ribbon-box .ribbon span:after,.ribbon-box .ribbon span:before{content:"";position:absolute;top:100%;z-index:-1;border-style:solid;border-width:3px}.ribbon-box .ribbon span:after{right:0;border-color:#1e5799 #1e5799 transparent transparent}@media screen and (max-width:768px){.ribbon-box.navigation .ribbon{top:44px;pointer-events:none}}.extension-card{border:1px solid #e7e7e9;border-radius:4px;padding:20px;height:100%;position:relative}.extension-card .button{display:inline-block;padding:5px 14px;border:1px solid #e7e7e9;border-radius:15px}.extension-card .button:hover{background-color:#e7e7e9}.action-box{font-size:12px;float:right}.action-box .edit_on{color:grey;margin-left:3px;display:block;text-align:right}.action-box .version-switcher{font-size:16px;display:block;margin-bottom:5px}.action-box .version-switcher select{margin-left:3px}.column{margin:20px 0}@media screen and (min-width:768px){.Columns__landing{display:flex;flex-wrap:wrap}.Columns__landing .column{width:48%}.Columns__landing .column:nth-child(2n){margin-left:4%}}aside.Collapsible .version-info{font-size:11px;margin-bottom:25px}.SearchResults .SearchResults__highlight{font-weight:400;background:#bee7ff}.SearchResults .SearchResults__text,.SearchResults .SearchResults__title,.SearchResults .SearchResults__url,.SearchResults .SearchResults__warning{font-weight:400}.SearchResults .SearchResults__text a,.SearchResults .SearchResults__title a,.SearchResults .SearchResults__url a,.SearchResults .SearchResults__warning a{color:#0078be}.landingpage .Nav__item--open>a{background:transparent!important}.landingpage .Columns__landing div>.Nav li a{background:none;line-height:1.5}.landingpage .Columns__landing div>.Nav>li>a{display:block;color:#0078be;padding-left:0;font-size:16px;margin-top:15px}.landingpage .Columns__landing div>.Nav>li ul>li>a{padding-left:16px}.Banner{margin:40px 0 10px}.Banner .img{width:100%}.lightbox{display:none;position:fixed;z-index:999;top:0;left:0;right:0;bottom:0;padding:1em;background:rgba(0,0,0,.8)}.lightbox:target{display:block}.lightbox img{width:100%;height:100%;object-fit:scale-down}.image-as-lightbox+p>img,img.lightbox-thumbnail{max-width:50%;max-height:350px} \ No newline at end of file diff --git a/docs/themes/pimcore/fonts/robotoslab-bold.eot b/docs/themes/pimcore/fonts/robotoslab-bold.eot new file mode 100755 index 0000000000..4e88b6cfeb Binary files /dev/null and b/docs/themes/pimcore/fonts/robotoslab-bold.eot differ diff --git a/docs/themes/pimcore/fonts/robotoslab-bold.svg b/docs/themes/pimcore/fonts/robotoslab-bold.svg new file mode 100755 index 0000000000..0c830531b5 --- /dev/null +++ b/docs/themes/pimcore/fonts/robotoslab-bold.svg @@ -0,0 +1,688 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/themes/pimcore/fonts/robotoslab-bold.ttf b/docs/themes/pimcore/fonts/robotoslab-bold.ttf new file mode 100755 index 0000000000..b5120e7f3c Binary files /dev/null and b/docs/themes/pimcore/fonts/robotoslab-bold.ttf differ diff --git a/docs/themes/pimcore/fonts/robotoslab-bold.woff b/docs/themes/pimcore/fonts/robotoslab-bold.woff new file mode 100755 index 0000000000..9e98b2d356 Binary files /dev/null and b/docs/themes/pimcore/fonts/robotoslab-bold.woff differ diff --git a/docs/themes/pimcore/fonts/robotoslab-bold.woff2 b/docs/themes/pimcore/fonts/robotoslab-bold.woff2 new file mode 100755 index 0000000000..a0e46d686e Binary files /dev/null and b/docs/themes/pimcore/fonts/robotoslab-bold.woff2 differ diff --git a/docs/themes/pimcore/fonts/robotoslab-light.eot b/docs/themes/pimcore/fonts/robotoslab-light.eot new file mode 100755 index 0000000000..34511468ec Binary files /dev/null and b/docs/themes/pimcore/fonts/robotoslab-light.eot differ diff --git a/docs/themes/pimcore/fonts/robotoslab-light.svg b/docs/themes/pimcore/fonts/robotoslab-light.svg new file mode 100755 index 0000000000..bf7f6a7372 --- /dev/null +++ b/docs/themes/pimcore/fonts/robotoslab-light.svg @@ -0,0 +1,687 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/themes/pimcore/fonts/robotoslab-light.ttf b/docs/themes/pimcore/fonts/robotoslab-light.ttf new file mode 100755 index 0000000000..067e1e58b0 Binary files /dev/null and b/docs/themes/pimcore/fonts/robotoslab-light.ttf differ diff --git a/docs/themes/pimcore/fonts/robotoslab-light.woff b/docs/themes/pimcore/fonts/robotoslab-light.woff new file mode 100755 index 0000000000..1cbe7902b7 Binary files /dev/null and b/docs/themes/pimcore/fonts/robotoslab-light.woff differ diff --git a/docs/themes/pimcore/fonts/robotoslab-light.woff2 b/docs/themes/pimcore/fonts/robotoslab-light.woff2 new file mode 100755 index 0000000000..b954cfdc86 Binary files /dev/null and b/docs/themes/pimcore/fonts/robotoslab-light.woff2 differ diff --git a/docs/themes/pimcore/fonts/robotoslab-regular.eot b/docs/themes/pimcore/fonts/robotoslab-regular.eot new file mode 100755 index 0000000000..10a7a2b6d2 Binary files /dev/null and b/docs/themes/pimcore/fonts/robotoslab-regular.eot differ diff --git a/docs/themes/pimcore/fonts/robotoslab-regular.svg b/docs/themes/pimcore/fonts/robotoslab-regular.svg new file mode 100755 index 0000000000..f6a9983ebd --- /dev/null +++ b/docs/themes/pimcore/fonts/robotoslab-regular.svg @@ -0,0 +1,687 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/themes/pimcore/fonts/robotoslab-regular.ttf b/docs/themes/pimcore/fonts/robotoslab-regular.ttf new file mode 100755 index 0000000000..9c36f36071 Binary files /dev/null and b/docs/themes/pimcore/fonts/robotoslab-regular.ttf differ diff --git a/docs/themes/pimcore/fonts/robotoslab-regular.woff b/docs/themes/pimcore/fonts/robotoslab-regular.woff new file mode 100755 index 0000000000..2a2e344fdb Binary files /dev/null and b/docs/themes/pimcore/fonts/robotoslab-regular.woff differ diff --git a/docs/themes/pimcore/fonts/robotoslab-regular.woff2 b/docs/themes/pimcore/fonts/robotoslab-regular.woff2 new file mode 100755 index 0000000000..4593d115df Binary files /dev/null and b/docs/themes/pimcore/fonts/robotoslab-regular.woff2 differ diff --git a/docs/themes/pimcore/img/favicon.png b/docs/themes/pimcore/img/favicon.png new file mode 100755 index 0000000000..e03a184d6f Binary files /dev/null and b/docs/themes/pimcore/img/favicon.png differ diff --git a/docs/themes/pimcore/img/logo-white.svg b/docs/themes/pimcore/img/logo-white.svg new file mode 100755 index 0000000000..decd2a44df --- /dev/null +++ b/docs/themes/pimcore/img/logo-white.svg @@ -0,0 +1,10 @@ + + + + + coreshopWon rgb + + + \ No newline at end of file diff --git a/docs/themes/pimcore/js/build/pimcore.js b/docs/themes/pimcore/js/build/pimcore.js new file mode 100755 index 0000000000..a3e8f4950d --- /dev/null +++ b/docs/themes/pimcore/js/build/pimcore.js @@ -0,0 +1,340 @@ +/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; + +return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/\s*$/g,ra={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:k.htmlSerialize?[0,"",""]:[1,"X
","
"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?""!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m(" + + + + + +
+ insert('theme::partials/version_info', ['params' => $params]); ?> + + + + +
+
+
+ section('content'); ?> +
+
+
+ diff --git a/docs/themes/pimcore/templates/partials/change_version.php b/docs/themes/pimcore/templates/partials/change_version.php new file mode 100755 index 0000000000..297a804114 --- /dev/null +++ b/docs/themes/pimcore/templates/partials/change_version.php @@ -0,0 +1,52 @@ + + + + + + + Version: + + + + + + + \ No newline at end of file diff --git a/docs/themes/pimcore/templates/partials/disqus.php b/docs/themes/pimcore/templates/partials/disqus.php new file mode 100755 index 0000000000..e4f295a8ed --- /dev/null +++ b/docs/themes/pimcore/templates/partials/disqus.php @@ -0,0 +1,26 @@ + + +
+ +
+ + + + diff --git a/docs/themes/pimcore/templates/partials/edit_on.php b/docs/themes/pimcore/templates/partials/edit_on.php new file mode 100755 index 0000000000..8e311200ac --- /dev/null +++ b/docs/themes/pimcore/templates/partials/edit_on.php @@ -0,0 +1,7 @@ +getHTML()->getEditOn(); +if ($edit_on) { ?> + + Edit on + + diff --git a/docs/themes/pimcore/templates/partials/navbar_content.php b/docs/themes/pimcore/templates/partials/navbar_content.php new file mode 100755 index 0000000000..da94f86183 --- /dev/null +++ b/docs/themes/pimcore/templates/partials/navbar_content.php @@ -0,0 +1,23 @@ + + + + +

+ + + + + +
+ + + + \ No newline at end of file diff --git a/docs/themes/pimcore/templates/partials/version_info.php b/docs/themes/pimcore/templates/partials/version_info.php new file mode 100755 index 0000000000..f73137e621 --- /dev/null +++ b/docs/themes/pimcore/templates/partials/version_info.php @@ -0,0 +1,34 @@ + + +
+ Built + + $params['build_versions']['source'], + '{short_commit_hash}' => substr($params['build_versions']['source'], 0, 6) + ]; + + $from = 'from '; + $from .= sprintf( + '%s', + str_replace(array_keys($replacements), array_values($replacements), $versionInfo['source_url']), + str_replace(array_keys($replacements), array_values($replacements), $versionInfo['source_name']) + ); + + echo $from; + } + ?> + + with + + + pimcore-docs@ + + . +
+ + diff --git a/features/domain/shipping/shipping_rules/amount_total_condition.feature b/features/domain/shipping/shipping_rules/amount_total_condition.feature new file mode 100644 index 0000000000..8551d3664a --- /dev/null +++ b/features/domain/shipping/shipping_rules/amount_total_condition.feature @@ -0,0 +1,27 @@ +@domain @shipping +Feature: Adding a new Shipping Rule + In order to calculate shipping + I'll create a new shipping rule + with an amount condition based on the total value of the cart + + Background: + Given the site operates on a store in "Austria" + And the site has a currency "Euro" with iso "EUR" + And I am in country "Austria" + And the site has a tax rate "AT" with "20%" rate + And the site has a tax rule group "AT" + And the tax rule group has a tax rule for country "Austria" with tax rate "AT" + And adding a cart price rule named "100% discount" + And the cart rule is active + And the cart rule is not a voucher rule + And the cart rule has a action discount-percent with 100% discount + And the site has a product "Shoe" priced at 10000 + And the product has the tax rule group "AT" + And I add the product "Shoe" to my cart + And the site has a carrier "Post" + + Scenario: Add a new amount shipping rule which is valid + Given adding a shipping rule named "amount" + And the shipping rule is active + And the shipping rule has a condition amount from total "0" to "1" + Then the shipping rule should be valid for my cart with carrier "Post" diff --git a/src/CoreShop/Behat/Context/Domain/CartContext.php b/src/CoreShop/Behat/Context/Domain/CartContext.php index 49138635c5..1d7fdedca6 100644 --- a/src/CoreShop/Behat/Context/Domain/CartContext.php +++ b/src/CoreShop/Behat/Context/Domain/CartContext.php @@ -355,6 +355,7 @@ public function cartShouldUseCarrier(CarrierInterface $carrier): void $cart = $this->cartContext->getCart(); Assert::isInstanceOf($cart, OrderInterface::class); + Assert::isInstanceOf($cart->getCarrier(), CarrierInterface::class); Assert::eq( $carrier->getId(), diff --git a/src/CoreShop/Behat/Context/Setup/ShippingContext.php b/src/CoreShop/Behat/Context/Setup/ShippingContext.php index 10ee3da3f1..f9a76509aa 100644 --- a/src/CoreShop/Behat/Context/Setup/ShippingContext.php +++ b/src/CoreShop/Behat/Context/Setup/ShippingContext.php @@ -241,6 +241,38 @@ public function theShippingRuleHasAAmountConditionWhichIsNet(ShippingRuleInterfa ])); } + /** + * @Given /^the (shipping rule "[^"]+") has a condition amount from total "([^"]+)" to "([^"]+)"$/ + * @Given /^the (shipping rule) has a condition amount from total "([^"]+)" to "([^"]+)"$/ + */ + public function theShippingRuleHasAAmountFromTotalCondition(ShippingRuleInterface $rule, $minAmount, $maxAmount): void + { + $this->assertConditionForm(AmountConfigurationType::class, 'amount'); + + $this->addCondition($rule, $this->createConditionWithForm('amount', [ + 'minAmount' => $minAmount, + 'maxAmount' => $maxAmount, + 'gross' => true, + 'useTotal' => true, + ])); + } + + /** + * @Given /^the (shipping rule "[^"]+") has a condition amount from total "([^"]+)" to "([^"]+)" which is net$/ + * @Given /^the (shipping rule) has a condition amount from total "([^"]+)" to "([^"]+)" which is net$/ + */ + public function theShippingRuleHasAAmountFromTotalConditionWhichIsNet(ShippingRuleInterface $rule, $minAmount, $maxAmount): void + { + $this->assertConditionForm(AmountConfigurationType::class, 'amount'); + + $this->addCondition($rule, $this->createConditionWithForm('amount', [ + 'minAmount' => $minAmount, + 'maxAmount' => $maxAmount, + 'gross' => false, + 'useTotal' => true, + ])); + } + /** * @Given /^the (shipping rule "[^"]+") has a condition postcode with "([^"]+)"$/ * @Given /^the (shipping rule) has a condition postcode with "([^"]+)"$/ diff --git a/src/CoreShop/Behat/Resources/config/suites/domain/shipping.yml b/src/CoreShop/Behat/Resources/config/suites/domain/shipping.yml index 6629ac8230..a2853b551e 100644 --- a/src/CoreShop/Behat/Resources/config/suites/domain/shipping.yml +++ b/src/CoreShop/Behat/Resources/config/suites/domain/shipping.yml @@ -23,6 +23,7 @@ default: - coreshop.behat.context.transform.tax_rule_group - coreshop.behat.context.transform.shipping - coreshop.behat.context.transform.cart + - coreshop.behat.context.transform.cart_price_rule - coreshop.behat.context.setup.product - coreshop.behat.context.setup.product_price_rule @@ -38,6 +39,7 @@ default: - coreshop.behat.context.setup.tax_rule_group - coreshop.behat.context.setup.shipping - coreshop.behat.context.setup.cart + - coreshop.behat.context.setup.cart_price_rule - coreshop.behat.context.domain.shipping - coreshop.behat.context.domain.cart diff --git a/src/CoreShop/Bundle/AddressBundle/README.md b/src/CoreShop/Bundle/AddressBundle/README.md index 7c2e9acc11..4cbe04458b 100644 --- a/src/CoreShop/Bundle/AddressBundle/README.md +++ b/src/CoreShop/Bundle/AddressBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Address_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/ConfigurationBundle/README.md b/src/CoreShop/Bundle/ConfigurationBundle/README.md index 73190c536b..45412163ce 100644 --- a/src/CoreShop/Bundle/ConfigurationBundle/README.md +++ b/src/CoreShop/Bundle/ConfigurationBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Configuration_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/CoreBundle/README.md b/src/CoreShop/Bundle/CoreBundle/README.md index 057d481346..029b6f4053 100644 --- a/src/CoreShop/Bundle/CoreBundle/README.md +++ b/src/CoreShop/Bundle/CoreBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Core_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/CurrencyBundle/README.md b/src/CoreShop/Bundle/CurrencyBundle/README.md index 86c5744730..2d82c15401 100644 --- a/src/CoreShop/Bundle/CurrencyBundle/README.md +++ b/src/CoreShop/Bundle/CurrencyBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Currency_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/CustomerBundle/README.md b/src/CoreShop/Bundle/CustomerBundle/README.md index 18fea2d33b..bc31b98d19 100644 --- a/src/CoreShop/Bundle/CustomerBundle/README.md +++ b/src/CoreShop/Bundle/CustomerBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Customer_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/FixtureBundle/README.md b/src/CoreShop/Bundle/FixtureBundle/README.md index 35a6fc3aeb..1c1e73a789 100644 --- a/src/CoreShop/Bundle/FixtureBundle/README.md +++ b/src/CoreShop/Bundle/FixtureBundle/README.md @@ -14,7 +14,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Fixture_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/IndexBundle/README.md b/src/CoreShop/Bundle/IndexBundle/README.md index fa755159dd..5ff3066881 100644 --- a/src/CoreShop/Bundle/IndexBundle/README.md +++ b/src/CoreShop/Bundle/IndexBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Index_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/InventoryBundle/README.md b/src/CoreShop/Bundle/InventoryBundle/README.md index bd0f718e87..c1fe632009 100644 --- a/src/CoreShop/Bundle/InventoryBundle/README.md +++ b/src/CoreShop/Bundle/InventoryBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Inventory_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/LocaleBundle/README.md b/src/CoreShop/Bundle/LocaleBundle/README.md index 55d1554b07..8f8dd30a79 100644 --- a/src/CoreShop/Bundle/LocaleBundle/README.md +++ b/src/CoreShop/Bundle/LocaleBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundle/Locale_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/MenuBundle/README.md b/src/CoreShop/Bundle/MenuBundle/README.md index 469f6974b6..00f1d23844 100644 --- a/src/CoreShop/Bundle/MenuBundle/README.md +++ b/src/CoreShop/Bundle/MenuBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Menu_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/MessengerBundle/README.md b/src/CoreShop/Bundle/MessengerBundle/README.md index d756b80aba..f135313cb0 100644 --- a/src/CoreShop/Bundle/MessengerBundle/README.md +++ b/src/CoreShop/Bundle/MessengerBundle/README.md @@ -12,7 +12,7 @@ code. [Read more on coreshop.org](http://www.coreshop.org) Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Messenger_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/MoneyBundle/README.md b/src/CoreShop/Bundle/MoneyBundle/README.md index ea97d73a09..23be1c16b9 100644 --- a/src/CoreShop/Bundle/MoneyBundle/README.md +++ b/src/CoreShop/Bundle/MoneyBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Money_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/NotificationBundle/README.md b/src/CoreShop/Bundle/NotificationBundle/README.md index e2b6f78277..c7e5a935d8 100644 --- a/src/CoreShop/Bundle/NotificationBundle/README.md +++ b/src/CoreShop/Bundle/NotificationBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Notification_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/OptimisticEntityLockBundle/README.md b/src/CoreShop/Bundle/OptimisticEntityLockBundle/README.md index 6db9f646aa..5c64935c33 100644 --- a/src/CoreShop/Bundle/OptimisticEntityLockBundle/README.md +++ b/src/CoreShop/Bundle/OptimisticEntityLockBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/OptimisticEntityLock_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/OrderBundle/Manager/CartManager.php b/src/CoreShop/Bundle/OrderBundle/Manager/CartManager.php index 56d994c3b4..ba46cf6acc 100644 --- a/src/CoreShop/Bundle/OrderBundle/Manager/CartManager.php +++ b/src/CoreShop/Bundle/OrderBundle/Manager/CartManager.php @@ -26,7 +26,6 @@ use CoreShop\Component\Resource\Service\FolderCreationServiceInterface; use CoreShop\Component\StorageList\Model\StorageListInterface; use CoreShop\Component\StorageList\StorageListManagerInterface; -use Doctrine\DBAL\Connection; use Webmozart\Assert\Assert; final class CartManager implements CartManagerInterface, StorageListManagerInterface @@ -34,7 +33,6 @@ final class CartManager implements CartManagerInterface, StorageListManagerInter public function __construct( private CartProcessorInterface $cartProcessor, private FolderCreationServiceInterface $folderCreationService, - private Connection $connection, ) { } @@ -52,50 +50,50 @@ public function persistCart(OrderInterface $cart): void 'path' => 'cart', ]); - $this->connection->transactional(function () use ($cart, $cartsFolder) { - VersionHelper::useVersioning(function () use ($cart, $cartsFolder) { + VersionHelper::useVersioning(function () use ($cart, $cartsFolder) { + if (!$cart->getId()) { $tempItems = $cart->getItems(); - - if (!$cart->getId()) { - $cart->setItems([]); - - /** - * @psalm-suppress DocblockTypeContradiction - */ - if (!$cart->getParent()) { - $cart->setParent($cartsFolder); - } - - $cart->save(); - } + $cart->setItems([]); /** - * @var OrderItemInterface $item + * @psalm-suppress DocblockTypeContradiction */ - foreach ($tempItems as $index => $item) { - $item->setParent( - $this->folderCreationService->createFolderForResource( - $item, - ['prefix' => $cart->getFullPath()], - ), - ); - $item->setPublished(true); - $item->setKey($index + 1); - $item->save(); - } - - $cart->setItems($tempItems); - $this->cartProcessor->process($cart); - - /** - * @var OrderItemInterface $cartItem - */ - foreach ($cart->getItems() as $cartItem) { - $cartItem->save(); + if (!$cart->getParent()) { + $cart->setParent($cartsFolder); } $cart->save(); - }, false); - }); + $cart->setItems($tempItems); + } + + $items = array_values($cart->getObjectVar('items') ?? []); + + /** + * @var OrderItemInterface $item + */ + foreach ($items as $index => $item) { + $item->setParent( + $this->folderCreationService->createFolderForResource( + $item, + ['prefix' => $cart->getFullPath()], + ), + ); + //$item->setPath($cart->getFullPath()); + $item->setPublished(true); + $item->setKey((string)((int)$index + 1)); + $item->save(); + } + + $this->cartProcessor->process($cart); + + /** + * @var OrderItemInterface $cartItem + */ + foreach ($cart->getItems() as $cartItem) { + $cartItem->save(); + } + + $cart->save(); + }, false); } } diff --git a/src/CoreShop/Bundle/OrderBundle/README.md b/src/CoreShop/Bundle/OrderBundle/README.md index d685dd3f16..0ec6618482 100644 --- a/src/CoreShop/Bundle/OrderBundle/README.md +++ b/src/CoreShop/Bundle/OrderBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Order_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/OrderBundle/Resources/config/services.yml b/src/CoreShop/Bundle/OrderBundle/Resources/config/services.yml index 9db037425d..b2a05b0dce 100644 --- a/src/CoreShop/Bundle/OrderBundle/Resources/config/services.yml +++ b/src/CoreShop/Bundle/OrderBundle/Resources/config/services.yml @@ -31,7 +31,6 @@ services: arguments: - '@CoreShop\Component\Order\Processor\CartProcessorInterface' - '@CoreShop\Component\Resource\Service\FolderCreationServiceInterface' - - '@doctrine.dbal.default_connection' coreshop.cart_item.quantity_modifier: '@CoreShop\Component\StorageList\StorageListItemQuantityModifier' CoreShop\Component\StorageList\StorageListItemQuantityModifier: ~ diff --git a/src/CoreShop/Bundle/PaymentBundle/README.md b/src/CoreShop/Bundle/PaymentBundle/README.md index 2f1ec3ccab..dc67f3db14 100644 --- a/src/CoreShop/Bundle/PaymentBundle/README.md +++ b/src/CoreShop/Bundle/PaymentBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Payment_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/PayumBundle/README.md b/src/CoreShop/Bundle/PayumBundle/README.md index 230bc40dda..0a2abc50cf 100644 --- a/src/CoreShop/Bundle/PayumBundle/README.md +++ b/src/CoreShop/Bundle/PayumBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Payum_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/PimcoreBundle/README.md b/src/CoreShop/Bundle/PimcoreBundle/README.md index 88b7392fbc..1eeff93926 100644 --- a/src/CoreShop/Bundle/PimcoreBundle/README.md +++ b/src/CoreShop/Bundle/PimcoreBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Pimcore_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/ProductBundle/README.md b/src/CoreShop/Bundle/ProductBundle/README.md index a62654c28c..80747034f9 100644 --- a/src/CoreShop/Bundle/ProductBundle/README.md +++ b/src/CoreShop/Bundle/ProductBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Product_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/ProductQuantityPriceRulesBundle/README.md b/src/CoreShop/Bundle/ProductQuantityPriceRulesBundle/README.md index 3e97b8e206..37af807c3f 100644 --- a/src/CoreShop/Bundle/ProductQuantityPriceRulesBundle/README.md +++ b/src/CoreShop/Bundle/ProductQuantityPriceRulesBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Product_Quantity_Price_Rules_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/ResourceBundle/README.md b/src/CoreShop/Bundle/ResourceBundle/README.md index 1488bdc4a6..6d9d273106 100644 --- a/src/CoreShop/Bundle/ResourceBundle/README.md +++ b/src/CoreShop/Bundle/ResourceBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Resource_Bundle/index.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/RuleBundle/README.md b/src/CoreShop/Bundle/RuleBundle/README.md index aac4300c3a..220551301e 100644 --- a/src/CoreShop/Bundle/RuleBundle/README.md +++ b/src/CoreShop/Bundle/RuleBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Rule_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/SEOBundle/README.md b/src/CoreShop/Bundle/SEOBundle/README.md index 3690709f2a..d19c988b5e 100644 --- a/src/CoreShop/Bundle/SEOBundle/README.md +++ b/src/CoreShop/Bundle/SEOBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/SEO_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/SequenceBundle/README.md b/src/CoreShop/Bundle/SequenceBundle/README.md index 6e17b45ef0..f8f0bea6e0 100644 --- a/src/CoreShop/Bundle/SequenceBundle/README.md +++ b/src/CoreShop/Bundle/SequenceBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Sequence_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/ShippingBundle/Form/Type/Rule/Condition/AmountConfigurationType.php b/src/CoreShop/Bundle/ShippingBundle/Form/Type/Rule/Condition/AmountConfigurationType.php index c6ed84e8d7..9b100b3162 100644 --- a/src/CoreShop/Bundle/ShippingBundle/Form/Type/Rule/Condition/AmountConfigurationType.php +++ b/src/CoreShop/Bundle/ShippingBundle/Form/Type/Rule/Condition/AmountConfigurationType.php @@ -52,7 +52,8 @@ public function buildForm(FormBuilderInterface $builder, array $options): void new Type(['type' => 'numeric', 'groups' => $this->validationGroups]), ], ]) - ->add('gross', CheckboxType::class, []) + ->add('gross', CheckboxType::class) + ->add('useTotal', CheckboxType::class) ; } diff --git a/src/CoreShop/Bundle/ShippingBundle/README.md b/src/CoreShop/Bundle/ShippingBundle/README.md index c51c855941..87dbb42f77 100644 --- a/src/CoreShop/Bundle/ShippingBundle/README.md +++ b/src/CoreShop/Bundle/ShippingBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Shipping_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/ShippingBundle/Resources/public/pimcore/js/shippingrule/conditions/amount.js b/src/CoreShop/Bundle/ShippingBundle/Resources/public/pimcore/js/shippingrule/conditions/amount.js index 4066622534..8d2341f83d 100644 --- a/src/CoreShop/Bundle/ShippingBundle/Resources/public/pimcore/js/shippingrule/conditions/amount.js +++ b/src/CoreShop/Bundle/ShippingBundle/Resources/public/pimcore/js/shippingrule/conditions/amount.js @@ -18,6 +18,7 @@ coreshop.shippingrule.conditions.amount = Class.create(coreshop.rules.conditions var minAmountValue = 0; var maxAmountValue = 0; var grossValue = true; + var useTotalValue = false; var me = this; if (this.data && this.data.minAmount) { @@ -32,6 +33,10 @@ coreshop.shippingrule.conditions.amount = Class.create(coreshop.rules.conditions grossValue = this.data.gross; } + if (this.data && this.data.hasOwnProperty('useTotal')) { + useTotalValue = this.data.useTotal; + } + var minAmount = new Ext.form.NumberField({ fieldLabel: t('coreshop_condition_amount_minAmount'), name: 'minAmount', @@ -54,9 +59,15 @@ coreshop.shippingrule.conditions.amount = Class.create(coreshop.rules.conditions value: grossValue }); + var useTotal = new Ext.form.Checkbox({ + fieldLabel: t('coreshop_condition_amount_use_total'), + name: 'useTotal', + value: useTotalValue + }); + this.form = Ext.create('Ext.form.Panel', { items: [ - minAmount, maxAmount, gross + minAmount, maxAmount, gross, useTotal ] }); diff --git a/src/CoreShop/Bundle/ShippingBundle/Resources/translations/admin.de.yml b/src/CoreShop/Bundle/ShippingBundle/Resources/translations/admin.de.yml index 272501cb69..435bf0c37b 100644 --- a/src/CoreShop/Bundle/ShippingBundle/Resources/translations/admin.de.yml +++ b/src/CoreShop/Bundle/ShippingBundle/Resources/translations/admin.de.yml @@ -31,6 +31,7 @@ coreshop_action_additionAmount: 'Aufschlag Menge' coreshop_action_additionPercent: 'Aufschlag Prozent' coreshop_shipping: 'Versand' coreshop_condition_amount_gross: 'Nutze Bruttowert' +coreshop_condition_amount_use_total: 'Nutze Gesamtbetrag' coreshop_shipping_tax_calc_strategy: 'Steuerberechnung' coreshop_shipping_tax_strategy_taxRule: 'Basierend auf Steuerregel' coreshop_shipping_tax_strategy_cartItems: 'Basierend auf Warenkorb-Artikeln' diff --git a/src/CoreShop/Bundle/ShippingBundle/Resources/translations/admin.en.yml b/src/CoreShop/Bundle/ShippingBundle/Resources/translations/admin.en.yml index 64ccf0b869..db4e1dcca3 100644 --- a/src/CoreShop/Bundle/ShippingBundle/Resources/translations/admin.en.yml +++ b/src/CoreShop/Bundle/ShippingBundle/Resources/translations/admin.en.yml @@ -30,6 +30,7 @@ coreshop_action_additionAmount: 'Addition Amount' coreshop_action_additionPercent: 'Addition Percent' coreshop_shipping: 'Shipping' coreshop_condition_amount_gross: 'Use Gross Value' +coreshop_condition_amount_use_total: 'Use Total Value' coreshop_shipping_tax_calc_strategy: 'Tax Calculation' coreshop_shipping_tax_strategy_taxRule: 'based on tax rule' coreshop_shipping_tax_strategy_cartItems: 'based on cart items' diff --git a/src/CoreShop/Bundle/StorageListBundle/DependencyInjection/CoreShopStorageListExtension.php b/src/CoreShop/Bundle/StorageListBundle/DependencyInjection/CoreShopStorageListExtension.php index fdbb55b418..084faffc10 100644 --- a/src/CoreShop/Bundle/StorageListBundle/DependencyInjection/CoreShopStorageListExtension.php +++ b/src/CoreShop/Bundle/StorageListBundle/DependencyInjection/CoreShopStorageListExtension.php @@ -21,6 +21,7 @@ use CoreShop\Bundle\ResourceBundle\DependencyInjection\Extension\AbstractModelExtension; use CoreShop\Bundle\StorageListBundle\Core\EventListener\SessionStoreStorageListSubscriber; use CoreShop\Bundle\StorageListBundle\Core\EventListener\StorageListBlamerListener; +use CoreShop\Bundle\StorageListBundle\EventListener\CacheListener; use CoreShop\Bundle\StorageListBundle\EventListener\SessionSubscriber; use CoreShop\Component\Customer\Model\CustomerAwareInterface; use CoreShop\Component\StorageList\Context\CompositeStorageListContext; @@ -102,10 +103,20 @@ public function load(array $configs, ContainerBuilder $container): void new Reference($contextCompositeServiceName), $list['session']['key'], ]); + $sessionSubscriber->addTag('kernel.event_subscriber'); $container->setDefinition('coreshop.storage_list.session_subscriber.' . $name, $sessionSubscriber); + } + $cacheSubscriber = new Definition(CacheListener::class, [ + new Reference(PimcoreContextResolver::class), + new Reference($contextCompositeServiceName), + ]); + $cacheSubscriber->addTag('kernel.event_subscriber'); + + $container->setDefinition('coreshop.storage_list.cache_subscriber.' . $name, $cacheSubscriber); + if ($list['controller']['enabled']) { $class = $list['controller']['class']; diff --git a/src/CoreShop/Bundle/StorageListBundle/EventListener/CacheListener.php b/src/CoreShop/Bundle/StorageListBundle/EventListener/CacheListener.php new file mode 100644 index 0000000000..95548aaf16 --- /dev/null +++ b/src/CoreShop/Bundle/StorageListBundle/EventListener/CacheListener.php @@ -0,0 +1,84 @@ + ['onKernelResponse'], + ]; + } + + public function onKernelResponse(ResponseEvent $event): void + { + if ($this->pimcoreContext->matchesPimcoreContext($event->getRequest(), PimcoreContextResolver::CONTEXT_ADMIN)) { + return; + } + + if (!$event->isMainRequest()) { + return; + } + + if ($event->getRequest()->attributes->get('_route') === '_wdt') { + return; + } + + /** @var Request $request */ + $request = $event->getRequest(); + + if (!$request->hasSession()) { + return; + } + + try { + $list = $this->context->getStorageList(); + } catch (StorageListNotFoundException) { + return; + } + + if ($list->getId()) { + foreach ($list->getItems() as $item) { + if (!$item->getId()) { + continue; + } + + Cache::addIgnoredTagOnSave('object_'.$item->getId()); + } + + Cache::addIgnoredTagOnSave('object_'.$list->getId()); + } + } +} diff --git a/src/CoreShop/Bundle/StorageListBundle/README.md b/src/CoreShop/Bundle/StorageListBundle/README.md index c310ae7dcc..bb9d6771e9 100644 --- a/src/CoreShop/Bundle/StorageListBundle/README.md +++ b/src/CoreShop/Bundle/StorageListBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Storage_List_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/StoreBundle/README.md b/src/CoreShop/Bundle/StoreBundle/README.md index 2bb6925c2e..238a8370e0 100644 --- a/src/CoreShop/Bundle/StoreBundle/README.md +++ b/src/CoreShop/Bundle/StoreBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Store_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/TaxationBundle/README.md b/src/CoreShop/Bundle/TaxationBundle/README.md index 76cf72e9c8..bd53ab1209 100644 --- a/src/CoreShop/Bundle/TaxationBundle/README.md +++ b/src/CoreShop/Bundle/TaxationBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Taxation_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/TestBundle/README.md b/src/CoreShop/Bundle/TestBundle/README.md index 41ad184900..ee29feabff 100644 --- a/src/CoreShop/Bundle/TestBundle/README.md +++ b/src/CoreShop/Bundle/TestBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Test_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/ThemeBundle/README.md b/src/CoreShop/Bundle/ThemeBundle/README.md index 26cb8f66e1..5221e84fd9 100644 --- a/src/CoreShop/Bundle/ThemeBundle/README.md +++ b/src/CoreShop/Bundle/ThemeBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Theme_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/TrackingBundle/README.md b/src/CoreShop/Bundle/TrackingBundle/README.md index 03e2c8cda7..7b12b0a58d 100644 --- a/src/CoreShop/Bundle/TrackingBundle/README.md +++ b/src/CoreShop/Bundle/TrackingBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Tracking_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/VariantBundle/README.md b/src/CoreShop/Bundle/VariantBundle/README.md index 8fe2c31075..8cdfd45379 100644 --- a/src/CoreShop/Bundle/VariantBundle/README.md +++ b/src/CoreShop/Bundle/VariantBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Variant_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/WishlistBundle/README.md b/src/CoreShop/Bundle/WishlistBundle/README.md index 1564d35ad1..2841d19fa5 100644 --- a/src/CoreShop/Bundle/WishlistBundle/README.md +++ b/src/CoreShop/Bundle/WishlistBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Wishlist_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Bundle/WorkflowBundle/README.md b/src/CoreShop/Bundle/WorkflowBundle/README.md index f0e7febade..0e7058ec71 100644 --- a/src/CoreShop/Bundle/WorkflowBundle/README.md +++ b/src/CoreShop/Bundle/WorkflowBundle/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Bundles/Workflow_Bundle.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Address/README.md b/src/CoreShop/Component/Address/README.md index 3a6d033f7d..e6c48385e0 100644 --- a/src/CoreShop/Component/Address/README.md +++ b/src/CoreShop/Component/Address/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Address_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Configuration/README.md b/src/CoreShop/Component/Configuration/README.md index 1e40c469ad..31f0bc684b 100644 --- a/src/CoreShop/Component/Configuration/README.md +++ b/src/CoreShop/Component/Configuration/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Configuration_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Core/Provider/ContextBasedDefaultTaxAddressProvider.php b/src/CoreShop/Component/Core/Provider/ContextBasedDefaultTaxAddressProvider.php index 288925e03c..bebfaa5ab8 100644 --- a/src/CoreShop/Component/Core/Provider/ContextBasedDefaultTaxAddressProvider.php +++ b/src/CoreShop/Component/Core/Provider/ContextBasedDefaultTaxAddressProvider.php @@ -20,6 +20,7 @@ use CoreShop\Component\Address\Context\CountryNotFoundException; use CoreShop\Component\Address\Model\AddressInterface; +use CoreShop\Component\Order\Model\OrderInterface; use CoreShop\Component\Resource\Factory\PimcoreFactoryInterface; class ContextBasedDefaultTaxAddressProvider implements DefaultTaxAddressProviderInterface @@ -31,6 +32,13 @@ public function __construct( public function getAddress(array $context = []): ?AddressInterface { + if (array_key_exists('cart', $context) && $context['cart'] instanceof OrderInterface) { + $invoiceAddress = $context['cart']->getInvoiceAddress(); + if ($invoiceAddress instanceof AddressInterface) { + return $invoiceAddress; + } + } + $address = $this->addressFactory->createNew(); if (array_key_exists('country', $context)) { diff --git a/src/CoreShop/Component/Core/README.md b/src/CoreShop/Component/Core/README.md index 494fa6965b..b2d6f57adf 100644 --- a/src/CoreShop/Component/Core/README.md +++ b/src/CoreShop/Component/Core/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Core_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Currency/README.md b/src/CoreShop/Component/Currency/README.md index 447479da8b..bcd61ccae2 100644 --- a/src/CoreShop/Component/Currency/README.md +++ b/src/CoreShop/Component/Currency/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Currency_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Customer/README.md b/src/CoreShop/Component/Customer/README.md index bf8f6c3c21..8f123bffac 100644 --- a/src/CoreShop/Component/Customer/README.md +++ b/src/CoreShop/Component/Customer/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Customer_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Index/README.md b/src/CoreShop/Component/Index/README.md index 7a6338c625..636997a8ac 100644 --- a/src/CoreShop/Component/Index/README.md +++ b/src/CoreShop/Component/Index/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Index_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Inventory/README.md b/src/CoreShop/Component/Inventory/README.md index e5b7daf40d..456450144f 100644 --- a/src/CoreShop/Component/Inventory/README.md +++ b/src/CoreShop/Component/Inventory/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Inventory_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Locale/README.md b/src/CoreShop/Component/Locale/README.md index e2ca5a1bf5..18e8cd6012 100644 --- a/src/CoreShop/Component/Locale/README.md +++ b/src/CoreShop/Component/Locale/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Locale_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Notification/README.md b/src/CoreShop/Component/Notification/README.md index f2dbc215a1..262afd69a7 100644 --- a/src/CoreShop/Component/Notification/README.md +++ b/src/CoreShop/Component/Notification/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Notification_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Order/Cart/Rule/Action/CartItemActionProcessor.php b/src/CoreShop/Component/Order/Cart/Rule/Action/CartItemActionProcessor.php index 24bfef7e86..e92d5072de 100644 --- a/src/CoreShop/Component/Order/Cart/Rule/Action/CartItemActionProcessor.php +++ b/src/CoreShop/Component/Order/Cart/Rule/Action/CartItemActionProcessor.php @@ -95,8 +95,7 @@ public function applyRule(OrderInterface $cart, array $configuration, PriceRuleI if (!$result) { $item->removePriceRule($priceRuleItem); } - - if (!$existingPriceRule) { + else if (!$existingPriceRule) { $item->addPriceRule($priceRuleItem); } diff --git a/src/CoreShop/Component/Order/Context/CartContext.php b/src/CoreShop/Component/Order/Context/CartContext.php index 790e894500..632068bd04 100644 --- a/src/CoreShop/Component/Order/Context/CartContext.php +++ b/src/CoreShop/Component/Order/Context/CartContext.php @@ -44,7 +44,6 @@ public function getCart(): OrderInterface * @var OrderInterface $cart */ $cart = $this->cartFactory->createNew(); - $cart->setKey(uniqid()); $cart->setPublished(true); $cart->setSaleState(OrderSaleStates::STATE_CART); $cart->setOrderState(OrderStates::STATE_INITIALIZED); diff --git a/src/CoreShop/Component/Order/README.md b/src/CoreShop/Component/Order/README.md index 6fba16498c..f4b164c4d9 100644 --- a/src/CoreShop/Component/Order/README.md +++ b/src/CoreShop/Component/Order/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Order_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Payment/README.md b/src/CoreShop/Component/Payment/README.md index 7faad5de84..a7019f540b 100644 --- a/src/CoreShop/Component/Payment/README.md +++ b/src/CoreShop/Component/Payment/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Payment_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Pimcore/README.md b/src/CoreShop/Component/Pimcore/README.md index 1a94cc9d86..64d000a2ff 100644 --- a/src/CoreShop/Component/Pimcore/README.md +++ b/src/CoreShop/Component/Pimcore/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Pimcore_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Pimcore/Slug/DataObjectSlugGenerator.php b/src/CoreShop/Component/Pimcore/Slug/DataObjectSlugGenerator.php index 3407fe4fb7..9100f39ee0 100644 --- a/src/CoreShop/Component/Pimcore/Slug/DataObjectSlugGenerator.php +++ b/src/CoreShop/Component/Pimcore/Slug/DataObjectSlugGenerator.php @@ -18,6 +18,8 @@ namespace CoreShop\Component\Pimcore\Slug; +use CoreShop\Component\Pimcore\DataObject\InheritanceHelper; +use Pimcore\Model\DataObject\Concrete; use Pimcore\Model\DataObject\Data\UrlSlug; use Pimcore\Model\Site; use Pimcore\Tool; @@ -41,7 +43,10 @@ public function generateSlugs(SluggableInterface $sluggable): void new UrlSlug($fallbackSlug, 0), ]; $actualSlugs = []; - $existingSlugs = $sluggable->getSlug($language); + $existingSlugs = InheritanceHelper::useInheritedValues( + fn () => $sluggable->getSlug($language), + false, + ); foreach ($sites as $site) { $siteSlug = $this->generator->generateSlugsForSite($sluggable, $language, $site); @@ -61,11 +66,24 @@ public function generateSlugs(SluggableInterface $sluggable): void if ($existingSlug->getSlug() === $newSlug->getSlug()) { $actualSlugs[] = $existingSlug; } else { - /** - * @psalm-suppress InternalMethod - */ - $newSlug->setPreviousSlug($existingSlug->getSlug()); - $actualSlugs[] = $newSlug; + // $existingSlug is the slug to be saved from backend + $dbSlug = null; + if ($sluggable instanceof Concrete) { + /** @psalm-suppress InternalMethod */ + $dbSlug = $sluggable->retrieveSlugData(['fieldname' => 'slug', 'ownertype' => 'object', 'position' => $language, 'siteId' => $existingSlug->getSiteId()])[0]['slug'] ?? null; + if ($dbSlug === null) { + /** @psalm-suppress InternalMethod */ + $dbSlug = $sluggable->retrieveSlugData(['fieldname' => 'slug', 'ownertype' => 'object', 'position' => $language])[0]['slug'] ?? null; // fallback slug + } + } + + if ($dbSlug && $dbSlug !== $existingSlug->getSlug()) { + $existingSlug->setPreviousSlug($dbSlug); + } elseif (!$dbSlug && !$existingSlug->getSlug()) { + $actualSlugs[] = $newSlug; + } else { + $actualSlugs[] = $existingSlug; + } } $found = true; diff --git a/src/CoreShop/Component/Product/README.md b/src/CoreShop/Component/Product/README.md index 5680d13829..ec162e179a 100644 --- a/src/CoreShop/Component/Product/README.md +++ b/src/CoreShop/Component/Product/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Product_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/ProductQuantityPriceRules/README.md b/src/CoreShop/Component/ProductQuantityPriceRules/README.md index 824394f358..a3e44ad252 100644 --- a/src/CoreShop/Component/ProductQuantityPriceRules/README.md +++ b/src/CoreShop/Component/ProductQuantityPriceRules/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/ProductQuantityPriceRules_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Registry/README.md b/src/CoreShop/Component/Registry/README.md index 6ed7f0677a..e6c48385e0 100644 --- a/src/CoreShop/Component/Registry/README.md +++ b/src/CoreShop/Component/Registry/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Registry_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Resource/README.md b/src/CoreShop/Component/Resource/README.md index 197f04450c..ecf357bb28 100644 --- a/src/CoreShop/Component/Resource/README.md +++ b/src/CoreShop/Component/Resource/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Resource_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Rule/README.md b/src/CoreShop/Component/Rule/README.md index 3ebfa3eb24..39f6687721 100644 --- a/src/CoreShop/Component/Rule/README.md +++ b/src/CoreShop/Component/Rule/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Rule_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/SEO/README.md b/src/CoreShop/Component/SEO/README.md index 352bd73e41..17b60d57ec 100644 --- a/src/CoreShop/Component/SEO/README.md +++ b/src/CoreShop/Component/SEO/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/SEO_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Sequence/README.md b/src/CoreShop/Component/Sequence/README.md index bfcdbe197c..9bb7f9f44f 100644 --- a/src/CoreShop/Component/Sequence/README.md +++ b/src/CoreShop/Component/Sequence/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Sequence_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Shipping/Model/ShippableInterface.php b/src/CoreShop/Component/Shipping/Model/ShippableInterface.php index f91c17b3b2..9490eb2f45 100644 --- a/src/CoreShop/Component/Shipping/Model/ShippableInterface.php +++ b/src/CoreShop/Component/Shipping/Model/ShippableInterface.php @@ -30,4 +30,8 @@ public function getWeight(): ?float; public function setWeight(?float $weight); public function getSubtotal(bool $withTax = true): int; + + public function getTotal(bool $withTax = true): int; + + public function getShipping(bool $withTax = true): int; } diff --git a/src/CoreShop/Component/Shipping/README.md b/src/CoreShop/Component/Shipping/README.md index 96a5f846af..318739f762 100644 --- a/src/CoreShop/Component/Shipping/README.md +++ b/src/CoreShop/Component/Shipping/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Shipping_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Shipping/Rule/Condition/AmountConditionChecker.php b/src/CoreShop/Component/Shipping/Rule/Condition/AmountConditionChecker.php index 31d66d8864..012dba4f41 100644 --- a/src/CoreShop/Component/Shipping/Rule/Condition/AmountConditionChecker.php +++ b/src/CoreShop/Component/Shipping/Rule/Condition/AmountConditionChecker.php @@ -29,8 +29,17 @@ public function isShippingRuleValid(CarrierInterface $carrier, ShippableInterfac $minAmount = $configuration['minAmount']; $maxAmount = $configuration['maxAmount']; $gross = $configuration['gross'] ?? true; + $total = $configuration['useTotal'] ?? true; - $totalAmount = $shippable->getSubtotal($gross); + if ($total) { + $totalAmount = $shippable->getTotal($gross) - $shippable->getShipping($gross); + } else { + $totalAmount = $shippable->getSubtotal($gross); + } + + if ($totalAmount < 0) { + $totalAmount = 0; + } if ($minAmount > 0) { if ($totalAmount < $minAmount) { diff --git a/src/CoreShop/Component/StorageList/README.md b/src/CoreShop/Component/StorageList/README.md index cba7a56a4b..765c471021 100644 --- a/src/CoreShop/Component/StorageList/README.md +++ b/src/CoreShop/Component/StorageList/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Sequence_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Store/README.md b/src/CoreShop/Component/Store/README.md index 0cc7e5963c..99d9ae87aa 100644 --- a/src/CoreShop/Component/Store/README.md +++ b/src/CoreShop/Component/Store/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Store_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Taxation/README.md b/src/CoreShop/Component/Taxation/README.md index e7a2d1b43e..1836dd1267 100644 --- a/src/CoreShop/Component/Taxation/README.md +++ b/src/CoreShop/Component/Taxation/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Taxation_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Tracking/README.md b/src/CoreShop/Component/Tracking/README.md index 287f5024de..924adad9ac 100644 --- a/src/CoreShop/Component/Tracking/README.md +++ b/src/CoreShop/Component/Tracking/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Tracking_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------ diff --git a/src/CoreShop/Component/Wishlist/README.md b/src/CoreShop/Component/Wishlist/README.md index 47319be765..d9d9e87d3b 100644 --- a/src/CoreShop/Component/Wishlist/README.md +++ b/src/CoreShop/Component/Wishlist/README.md @@ -11,7 +11,7 @@ CoreShop is an eCommerce Solution for Pimcore. It is build from decoupled compon Documentation ------------- -Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0/Components/Wishlist_Component.html). +Documentation is available on [**coreshop.org**](https://docs.coreshop.org/3.0.0). Bug tracking ------------