├── .circleci └── config.yml ├── .coveralls.yml ├── .devcontainer └── devcontainer.json ├── LICENSE ├── README.md ├── composer.json ├── config ├── default.php └── shop.php ├── public └── mimeicons │ ├── application │ ├── illustrator.png │ ├── javascript.png │ ├── msword.png │ ├── octet-stream.png │ ├── pdf.png │ ├── pgp-encrypted.png │ ├── pgp-keys.png │ ├── pkcs7-mime.png │ ├── postscript.png │ ├── relaxng.png │ ├── rss+xml.png │ ├── rtf.png │ ├── sxw.png │ ├── vnd.ms-access.png │ ├── vnd.ms-excel.png │ ├── vnd.ms-powerpoint.png │ ├── vnd.oasis.opendocument.chart.png │ ├── vnd.oasis.opendocument.database.png │ ├── vnd.oasis.opendocument.formula.png │ ├── vnd.oasis.opendocument.graphics.png │ ├── vnd.oasis.opendocument.image.png │ ├── vnd.oasis.opendocument.presentation-template.png │ ├── vnd.oasis.opendocument.presentation.png │ ├── vnd.oasis.opendocument.spreadsheet-template.png │ ├── vnd.oasis.opendocument.spreadsheet.png │ ├── vnd.oasis.opendocument.text.png │ ├── vnd.rn-realmedia.png │ ├── vnd.scribus.png │ ├── vnd.stardivision.calc.png │ ├── vnd.stardivision.draw.png │ ├── vnd.sun.xml.calc.png │ ├── vnd.sun.xml.calc.template.png │ ├── vnd.sun.xml.draw.png │ ├── vnd.sun.xml.draw.template.png │ ├── x-7z-compressed.png │ ├── x-ace.png │ ├── x-applix-spreadsheet.png │ ├── x-ar.png │ ├── x-arc.png │ ├── x-archive.png │ ├── x-arj.png │ ├── x-awk.png │ ├── x-bittorrent.png │ ├── x-bzdvi.png │ ├── x-bzip-compressed-tar.png │ ├── x-bzip.png │ ├── x-cd-image.png │ ├── x-cda.png │ ├── x-compress.png │ ├── x-compressed-tar.png │ ├── x-cpio.png │ ├── x-cue.png │ ├── x-deb.png │ ├── x-designer.png │ ├── x-desktop.png │ ├── x-egon.png │ ├── x-executable-script.png │ ├── x-executable.png │ ├── x-font-afm.png │ ├── x-font-bdf.png │ ├── x-font-otf.png │ ├── x-font-pcf.png │ ├── x-font-snf.png │ ├── x-font-ttf.png │ ├── x-font-type1.png │ ├── x-gnumeric.png │ ├── x-gzdvi.png │ ├── x-gzip.png │ ├── x-gzpostscript.png │ ├── x-java-applet.png │ ├── x-java-archive.png │ ├── x-java.png │ ├── x-javascript.png │ ├── x-k3b.png │ ├── x-kcsrc.png │ ├── x-kgetlist.png │ ├── x-kontour.png │ ├── x-kplato.png │ ├── x-krita.png │ ├── x-kvtml.png │ ├── x-lha.png │ ├── x-lyx.png │ ├── x-lzma-compressed-tar.png │ ├── x-lzop.png │ ├── x-m4.png │ ├── x-marble.png │ ├── x-mimearchive.png │ ├── x-mplayer2.png │ ├── x-ms-dos-executable.png │ ├── x-mswinurl.png │ ├── x-mswrite.png │ ├── x-nzb.png │ ├── x-object.png │ ├── x-pak.png │ ├── x-pem-key.png │ ├── x-perl.png │ ├── x-php.png │ ├── x-plasma.png │ ├── x-python-bytecode.png │ ├── x-qet-element.png │ ├── x-qet-project.png │ ├── x-quattropro.png │ ├── x-rar.png │ ├── x-rpm.png │ ├── x-ruby.png │ ├── x-sharedlib.png │ ├── x-shellscript.png │ ├── x-shockwave-flash.png │ ├── x-siag.png │ ├── x-smb-server.png │ ├── x-smb-workgroup.png │ ├── x-subrip.png │ ├── x-tar.png │ ├── x-tarz.png │ ├── x-tgif.png │ ├── x-trash.png │ ├── x-troff-man.png │ ├── x-tzo.png │ ├── x-wmf.png │ ├── x-zerosize.png │ ├── x-zoo.png │ ├── xhtml+xml.png │ ├── xml.png │ ├── xsd.png │ ├── xslt+xml.png │ └── zip.png │ ├── audio │ ├── ac3.png │ ├── midi.png │ ├── prs.sid.png │ ├── vnd.rn-realvideo.png │ ├── x-adpcm.png │ ├── x-aiff.png │ ├── x-flac+ogg.png │ ├── x-flac.png │ ├── x-generic.png │ ├── x-monkey.png │ ├── x-speex+ogg.png │ └── x-wav.png │ ├── fonts │ └── package.png │ ├── image │ ├── svg+xml-compressed.png │ ├── svg+xml.png │ ├── x-eps.png │ ├── x-generic.png │ ├── x-vnd.trolltech.qpicture.png │ └── x-xfig.png │ ├── inode │ └── directory.png │ ├── message │ ├── news.png │ └── rfc822.png │ ├── package │ └── x-generic.png │ ├── text │ ├── calendar.png │ ├── css.png │ ├── csv.png │ ├── directory.png │ ├── enriched.png │ ├── html.png │ ├── mathml.png │ ├── plain.png │ ├── rdf.png │ ├── rtf.png │ ├── sgml.png │ ├── troff.png │ ├── vcalendar.png │ ├── vnd.abc.png │ ├── vnd.wap.wml.png │ ├── x-adasrc.png │ ├── x-authors.png │ ├── x-bibtex.png │ ├── x-c++hdr.png │ ├── x-c++src.png │ ├── x-changelog.png │ ├── x-chdr.png │ ├── x-cmake.png │ ├── x-copying.png │ ├── x-csharp.png │ ├── x-csrc.png │ ├── x-dtd.png │ ├── x-generic.png │ ├── x-haskell.png │ ├── x-hex.png │ ├── x-install.png │ ├── x-java.png │ ├── x-katefilelist.png │ ├── x-ldif.png │ ├── x-log.png │ ├── x-makefile.png │ ├── x-nfo.png │ ├── x-objchdr.png │ ├── x-objcsrc.png │ ├── x-pascal.png │ ├── x-patch.png │ ├── x-po.png │ ├── x-python.png │ ├── x-readme.png │ ├── x-script.png │ ├── x-sql.png │ ├── x-tcl.png │ ├── x-tex.png │ ├── x-texinfo.png │ ├── x-vcard.png │ ├── x-xslfo.png │ ├── xmcd.png │ └── xml.png │ ├── unknown.png │ ├── uri │ ├── mms.png │ ├── mmst.png │ ├── mmsu.png │ ├── pnm.png │ ├── rtspt.png │ └── rtspu.png │ └── video │ ├── mp4.png │ ├── webm.png │ ├── x-generic.png │ ├── x-mng.png │ └── x-wmv.png ├── routes └── aimeos.php ├── src ├── Base │ ├── Aimeos.php │ ├── Config.php │ ├── Context.php │ ├── I18n.php │ ├── Locale.php │ ├── Shop.php │ ├── Support.php │ └── View.php ├── Command │ ├── AbstractCommand.php │ ├── AccountCommand.php │ ├── ClearCommand.php │ ├── JobsCommand.php │ └── SetupCommand.php ├── Composer.php ├── Controller │ ├── AccountController.php │ ├── AdminController.php │ ├── BasketController.php │ ├── CatalogController.php │ ├── CheckoutController.php │ ├── GraphqlController.php │ ├── JqadmController.php │ ├── JsonadmController.php │ ├── JsonapiController.php │ ├── PageController.php │ ├── ResolveController.php │ └── SupplierController.php ├── Facades │ ├── Attribute.php │ ├── Basket.php │ ├── Catalog.php │ ├── Cms.php │ ├── Customer.php │ ├── Locale.php │ ├── Order.php │ ├── Product.php │ ├── Service.php │ ├── Shop.php │ ├── Stock.php │ ├── Subscription.php │ └── Supplier.php ├── ShopServiceProvider.php └── helpers.php └── views ├── account └── index.blade.php ├── admin └── index.blade.php ├── base.blade.php ├── basket └── index.blade.php ├── catalog ├── count.blade.php ├── detail.blade.php ├── home.blade.php ├── list.blade.php ├── session.blade.php ├── stock.blade.php ├── suggest.blade.php └── tree.blade.php ├── checkout ├── confirm.blade.php ├── index.blade.php └── update.blade.php ├── jqadm └── index.blade.php ├── page └── index.blade.php └── supplier └── detail.blade.php /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | # PHP CircleCI 2.0 configuration file 2 | # 3 | # Check https://circleci.com/docs/2.0/language-php/ for more details 4 | # 5 | version: 2 6 | 7 | jobs: 8 | "php82-mysql80": 9 | docker: 10 | - image: aimeos/ci-php:8.2 11 | - image: cimg/mysql:8.0 12 | environment: 13 | MYSQL_ROOT_PASSWORD: rootpw 14 | MYSQL_DATABASE: laravel 15 | MYSQL_USER: aimeos 16 | MYSQL_PASSWORD: aimeos 17 | steps: 18 | - checkout 19 | - run: wget https://getcomposer.org/download/latest-stable/composer.phar -O composer 20 | - run: php composer req "laravel/framework:~10.0" --no-update 21 | - run: php composer req "phpunit/phpunit:~10.0" --no-update --dev 22 | - restore_cache: 23 | keys: 24 | - php82-{{ checksum "composer.json" }} 25 | - run: php composer update -n --prefer-dist 26 | - save_cache: 27 | key: php82-{{ checksum "composer.json" }} 28 | paths: [./vendor] 29 | - run: for i in `seq 1 10`; do nc -z 127.0.0.1 3306 && echo OK && exit 0; echo -n .; sleep 1; done 30 | - run: ./vendor/bin/phpunit 31 | 32 | "php83-mysql80": 33 | docker: 34 | - image: aimeos/ci-php:8.3 35 | - image: cimg/mysql:8.0 36 | environment: 37 | MYSQL_ROOT_PASSWORD: rootpw 38 | MYSQL_DATABASE: laravel 39 | MYSQL_USER: aimeos 40 | MYSQL_PASSWORD: aimeos 41 | steps: 42 | - checkout 43 | - run: wget https://getcomposer.org/download/latest-stable/composer.phar -O composer 44 | - run: php composer req "laravel/framework:~11.0" --no-update 45 | - run: php composer req "phpunit/phpunit:~11.0" --no-update --dev 46 | - restore_cache: 47 | keys: 48 | - php83-{{ checksum "composer.json" }} 49 | - run: php composer update -n --prefer-dist 50 | - save_cache: 51 | key: php83-{{ checksum "composer.json" }} 52 | paths: [./vendor] 53 | - run: for i in `seq 1 10`; do nc -z 127.0.0.1 3306 && echo OK && exit 0; echo -n .; sleep 1; done 54 | - run: ./vendor/bin/phpunit 55 | 56 | "php84-mysql80": 57 | docker: 58 | - image: aimeos/ci-php:8.4 59 | - image: cimg/mysql:8.0 60 | environment: 61 | MYSQL_ROOT_PASSWORD: rootpw 62 | MYSQL_DATABASE: laravel 63 | MYSQL_USER: aimeos 64 | MYSQL_PASSWORD: aimeos 65 | steps: 66 | - checkout 67 | - run: wget https://getcomposer.org/download/latest-stable/composer.phar -O composer 68 | - run: php composer req "laravel/framework:~12.0" --no-update 69 | - run: php composer req "phpunit/phpunit:~11.0" --no-update --dev 70 | - restore_cache: 71 | keys: 72 | - php84-{{ checksum "composer.json" }} 73 | - run: php composer update -n --prefer-dist 74 | - save_cache: 75 | key: php84-{{ checksum "composer.json" }} 76 | paths: [./vendor] 77 | - run: for i in `seq 1 10`; do nc -z 127.0.0.1 3306 && echo OK && exit 0; echo -n .; sleep 1; done 78 | - run: ./vendor/bin/phpunit --coverage-clover coverage.xml 79 | 80 | workflows: 81 | version: 2 82 | unittest: 83 | jobs: 84 | - "php82-mysql80" 85 | - "php83-mysql80" 86 | - "php84-mysql80" 87 | -------------------------------------------------------------------------------- /.coveralls.yml: -------------------------------------------------------------------------------- 1 | src_dir: ./ 2 | json_path: coveralls.json 3 | coverage_clover: coverage.xml 4 | -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "image": "mcr.microsoft.com/devcontainers/universal:2", 3 | "features": { 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Aimeos 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aimeos/aimeos-laravel", 3 | "description": "Cloud native, API first Laravel eCommerce package with integrated AI for ultra-fast online shops, marketplaces and complex B2B projects", 4 | "homepage": "https://aimeos.org/Laravel", 5 | "type": "laravel-bundle", 6 | "license": "MIT", 7 | "keywords": ["aimeos", "laravel", "e-commerce", "ecommerce", "B2B", "shop", "portal", "marketplace", "API", "JSON", "GraphQL"], 8 | "support": { 9 | "source": "https://github.com/Aimeos/aimeos-laravel", 10 | "issues": "https://github.com/Aimeos/aimeos-laravel/issues", 11 | "forum": "https://aimeos.org/help", 12 | "wiki": "https://aimeos.org/docs" 13 | }, 14 | "prefer-stable": true, 15 | "minimum-stability": "dev", 16 | "require": { 17 | "composer-runtime-api": "^2.1", 18 | "laravel/framework": "^10.0||^11.0||^12.0", 19 | "symfony/psr-http-message-bridge": "~6.0||~7.0", 20 | "laminas/laminas-diactoros": "~2.5||~3.0", 21 | "nyholm/psr7": "~1.2", 22 | "aimeos/aimeos-core": "dev-master", 23 | "aimeos/ai-laravel": "dev-master", 24 | "aimeos/ai-admin-graphql": "dev-master", 25 | "aimeos/ai-admin-jqadm": "dev-master", 26 | "aimeos/ai-admin-jsonadm": "dev-master", 27 | "aimeos/ai-client-html": "dev-master", 28 | "aimeos/ai-client-jsonapi": "dev-master", 29 | "aimeos/ai-cms-grapesjs": "dev-master", 30 | "aimeos/ai-controller-jobs": "dev-master", 31 | "aimeos/ai-controller-frontend": "dev-master" 32 | }, 33 | "require-dev": { 34 | "phpunit/phpunit": "^10.0||^11.0", 35 | "orchestra/testbench": "~8.0||~9.0||~10.0", 36 | "orchestra/testbench-browser-kit": "~8.0||~9.0||~10.0", 37 | "php-coveralls/php-coveralls": "~2.0" 38 | }, 39 | "autoload": { 40 | "psr-4": { 41 | "Aimeos\\Shop\\": "src/" 42 | }, 43 | "files": [ 44 | "src/helpers.php" 45 | ] 46 | }, 47 | "autoload-dev": { 48 | "classmap": [ 49 | "tests/AimeosTestAbstract.php", 50 | "tests/HelpersTest.php" 51 | ] 52 | }, 53 | "extra": { 54 | "laravel": { 55 | "providers": [ 56 | "Aimeos\\Shop\\ShopServiceProvider" 57 | ] 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /config/default.php: -------------------------------------------------------------------------------- 1 | false, 13 | 'apc_prefix' => 'laravel:', 14 | 'pcntl_max' => 4, 15 | 'pcntl_priority' => 19, 16 | 17 | 'page' => [ 18 | 'account-index' => ['locale/select', 'basket/mini', 'catalog/tree', 'catalog/search', 'account/profile', 'account/review', 'account/subscription', 'account/basket', 'account/history', 'account/favorite', 'account/watch', 'catalog/session'], 19 | 'basket-index' => ['locale/select', 'catalog/tree', 'catalog/search', 'basket/standard', 'basket/bulk', 'basket/related'], 20 | 'catalog-count' => ['catalog/count'], 21 | 'catalog-detail' => ['locale/select', 'basket/mini', 'catalog/tree', 'catalog/search', 'catalog/stage', 'catalog/detail', 'catalog/session'], 22 | 'catalog-home' => ['locale/select', 'basket/mini', 'catalog/tree', 'catalog/search', 'catalog/home'], 23 | 'catalog-list' => ['locale/select', 'basket/mini', 'catalog/filter', 'catalog/tree', 'catalog/search', 'catalog/price', 'catalog/supplier', 'catalog/attribute', 'catalog/session', 'catalog/stage', 'catalog/lists'], 24 | 'catalog-session' => ['locale/select', 'basket/mini', 'catalog/tree', 'catalog/search', 'catalog/session'], 25 | 'catalog-stock' => ['catalog/stock'], 26 | 'catalog-suggest' => ['catalog/suggest'], 27 | 'catalog-tree' => ['locale/select', 'basket/mini', 'catalog/filter', 'catalog/tree', 'catalog/search', 'catalog/price', 'catalog/supplier', 'catalog/attribute', 'catalog/session', 'catalog/stage', 'catalog/lists'], 28 | 'checkout-confirm' => ['catalog/tree', 'catalog/search', 'checkout/confirm'], 29 | 'checkout-index' => ['locale/select', 'catalog/tree', 'catalog/search', 'checkout/standard'], 30 | 'checkout-update' => ['checkout/update'], 31 | 'supplier-detail' => ['locale/select', 'basket/mini', 'catalog/tree', 'catalog/search', 'supplier/detail', 'catalog/lists'], 32 | ], 33 | 34 | 'admin' => [ 35 | 'graphql' => [ 36 | 'url' => [ 37 | 'target' => 'aimeos_shop_graphql_post', 38 | 'config' => [ 39 | 'absoluteUri' => true, 40 | ], 41 | ], 42 | ], 43 | 'jqadm' => [ 44 | 'url' => [ 45 | 'batch' => [ 46 | 'target' => 'aimeos_shop_jqadm_batch' 47 | ], 48 | 'copy' => [ 49 | 'target' => 'aimeos_shop_jqadm_copy' 50 | ], 51 | 'create' => [ 52 | 'target' => 'aimeos_shop_jqadm_create' 53 | ], 54 | 'delete' => [ 55 | 'target' => 'aimeos_shop_jqadm_delete' 56 | ], 57 | 'export' => [ 58 | 'target' => 'aimeos_shop_jqadm_export' 59 | ], 60 | 'get' => [ 61 | 'target' => 'aimeos_shop_jqadm_get' 62 | ], 63 | 'import' => [ 64 | 'target' => 'aimeos_shop_jqadm_import' 65 | ], 66 | 'save' => [ 67 | 'target' => 'aimeos_shop_jqadm_save' 68 | ], 69 | 'search' => [ 70 | 'target' => 'aimeos_shop_jqadm_search' 71 | ], 72 | ], 73 | ], 74 | 'jsonadm' => [ 75 | 'url' => [ 76 | 'target' => 'aimeos_shop_jsonadm_get', 77 | 'config' => [ 78 | 'absoluteUri' => true, 79 | ], 80 | 'options' => [ 81 | 'target' => 'aimeos_shop_jsonadm_options', 82 | 'config' => [ 83 | 'absoluteUri' => true, 84 | ], 85 | ], 86 | ], 87 | ], 88 | ], 89 | 'client' => [ 90 | 'html' => [ 91 | 'account' => [ 92 | 'index' => [ 93 | 'url' => [ 94 | 'target' => 'aimeos_shop_account', 95 | ], 96 | ], 97 | 'basket' => [ 98 | 'url' => [ 99 | 'target' => 'aimeos_shop_account', 100 | ], 101 | ], 102 | 'review' => [ 103 | 'url' => [ 104 | 'target' => 'aimeos_shop_account', 105 | ], 106 | ], 107 | 'profile' => [ 108 | 'url' => [ 109 | 'target' => 'aimeos_shop_account', 110 | ], 111 | ], 112 | 'subscription' => [ 113 | 'url' => [ 114 | 'target' => 'aimeos_shop_account', 115 | ], 116 | ], 117 | 'history' => [ 118 | 'url' => [ 119 | 'target' => 'aimeos_shop_account', 120 | ], 121 | ], 122 | 'favorite' => [ 123 | 'url' => [ 124 | 'target' => 'aimeos_shop_account_favorite', 125 | ], 126 | ], 127 | 'watch' => [ 128 | 'url' => [ 129 | 'target' => 'aimeos_shop_account_watch', 130 | ], 131 | ], 132 | 'download' => [ 133 | 'url' => [ 134 | 'target' => 'aimeos_shop_account_download', 135 | ], 136 | 'error' => [ 137 | 'url' => [ 138 | 'target' => 'aimeos_shop_account', 139 | ], 140 | ], 141 | ], 142 | ], 143 | 'cms' => [ 144 | 'page' => [ 145 | 'url' => [ 146 | 'target' => 'aimeos_page', 147 | ], 148 | ], 149 | ], 150 | 'catalog' => [ 151 | 'count' => [ 152 | 'url' => [ 153 | 'target' => 'aimeos_shop_count', 154 | ], 155 | ], 156 | 'detail' => [ 157 | 'url' => [ 158 | 'target' => 'aimeos_shop_detail', 159 | 'filter' => ['path', 'd_prodid'], 160 | ], 161 | ], 162 | 'home' => [ 163 | 'url' => [ 164 | 'target' => 'aimeos_home', 165 | ], 166 | ], 167 | 'lists' => [ 168 | 'url' => [ 169 | 'target' => 'aimeos_shop_list', 170 | ], 171 | ], 172 | 'session' => [ 173 | 'pinned' => [ 174 | 'url' => [ 175 | 'target' => 'aimeos_shop_session_pinned', 176 | ], 177 | ], 178 | ], 179 | 'stock' => [ 180 | 'url' => [ 181 | 'target' => 'aimeos_shop_stock', 182 | ], 183 | ], 184 | 'suggest' => [ 185 | 'url' => [ 186 | 'target' => 'aimeos_shop_suggest', 187 | ], 188 | ], 189 | 'tree' => [ 190 | 'url' => [ 191 | 'target' => 'aimeos_shop_tree', 192 | 'filter' => ['path'], 193 | ], 194 | ], 195 | ], 196 | 'common' => [ 197 | 'template' => [ 198 | 'baseurl' => public_path( 'vendor/shop/themes/default' ), 199 | ], 200 | ], 201 | 'basket' => [ 202 | 'standard' => [ 203 | 'url' => [ 204 | 'target' => 'aimeos_shop_basket', 205 | ], 206 | ], 207 | ], 208 | 'checkout' => [ 209 | 'confirm' => [ 210 | 'url' => [ 211 | 'target' => 'aimeos_shop_confirm', 212 | ], 213 | ], 214 | 'standard' => [ 215 | 'url' => [ 216 | 'target' => 'aimeos_shop_checkout', 217 | ], 218 | 'summary' => [ 219 | 'option' => [ 220 | 'terms' => [ 221 | 'url' => [ 222 | 'target' => 'aimeos_page', 223 | ], 224 | 'privacy' => [ 225 | 'url' => [ 226 | 'target' => 'aimeos_page', 227 | ], 228 | ], 229 | 'cancel' => [ 230 | 'url' => [ 231 | 'target' => 'aimeos_page', 232 | ], 233 | ], 234 | ], 235 | ], 236 | ], 237 | ], 238 | 'update' => [ 239 | 'url' => [ 240 | 'target' => 'aimeos_shop_update', 241 | ], 242 | ], 243 | ], 244 | 'locale' => [ 245 | 'select' => [ 246 | 'currency' => [ 247 | 'param-name' => 'currency', 248 | ], 249 | 'language' => [ 250 | 'param-name' => 'locale', 251 | ], 252 | ], 253 | ], 254 | 'supplier' => [ 255 | 'detail' => [ 256 | 'url' => [ 257 | 'target' => 'aimeos_shop_supplier', 258 | ], 259 | ], 260 | ] 261 | ], 262 | 'jsonapi' => [ 263 | 'url' => [ 264 | 'target' => 'aimeos_shop_jsonapi_options', 265 | 'config' => [ 266 | 'absoluteUri' => true, 267 | ], 268 | ], 269 | ], 270 | ], 271 | 272 | 'controller' => [ 273 | 'jobs' => [ 274 | 'to-email' => config( 'mail.from.address' ), 275 | ] 276 | ], 277 | 278 | 'mshop' => [ 279 | 'customer' => [ 280 | 'manager' => [ 281 | 'name' => 'Laravel', 282 | 'password' => [ 283 | 'name' => 'Bcrypt', 284 | ], 285 | ], 286 | ], 287 | 'index' => [ 288 | 'manager' => [ 289 | 'name' => $aimeosIndexManagerName, 290 | ], 291 | ], 292 | ], 293 | ]; 294 | -------------------------------------------------------------------------------- /config/shop.php: -------------------------------------------------------------------------------- 1 | false, // enable for maximum performance if APCu is available 6 | 'apc_prefix' => 'laravel:', // prefix for caching config and translation in APCu 7 | 'num_formatter' => 'Locale', // locale based number formatter (alternative: "Standard") 8 | 'pcntl_max' => 4, // maximum number of parallel command line processes when starting jobs 9 | 'version' => env( 'APP_VERSION', 1 ), // shop CSS/JS file version 10 | 'roles' => ['admin', 'editor'], // user groups allowed to access the admin backend 11 | 'panel' => 'dashboard', // panel shown in admin backend after login 12 | 13 | 'routes' => [ 14 | // Docs: https://aimeos.org/docs/latest/laravel/extend/#custom-routes 15 | // Multi-sites: https://aimeos.org/docs/latest/laravel/customize/#multiple-shops 16 | // 'admin' => ['prefix' => 'admin', 'middleware' => ['web']], 17 | // 'jqadm' => ['prefix' => 'admin/{site}/jqadm', 'middleware' => ['web', 'auth']], 18 | // 'graphql' => ['prefix' => 'admin/{site}/graphql', 'middleware' => ['web', 'auth']], 19 | // 'jsonadm' => ['prefix' => 'admin/{site}/jsonadm', 'middleware' => ['web', 'auth']], 20 | // 'jsonapi' => ['prefix' => 'jsonapi', 'middleware' => ['web', 'api']], 21 | // 'account' => ['prefix' => 'profile', 'middleware' => ['web', 'auth']], 22 | // 'default' => ['prefix' => 'shop', 'middleware' => ['web']], 23 | // 'basket' => ['prefix' => 'shop', 'middleware' => ['web']], 24 | // 'checkout' => ['prefix' => 'shop', 'middleware' => ['web']], 25 | // 'confirm' => ['prefix' => 'shop', 'middleware' => ['web']], 26 | // 'supplier' => ['prefix' => 's', 'middleware' => ['web']], 27 | // 'page' => ['prefix' => 'p', 'middleware' => ['web']], 28 | // 'home' => ['middleware' => ['web']], 29 | // 'update' => [], 30 | ], 31 | 32 | 'page' => [ 33 | 'account-index' => ['locale/select', 'basket/mini', 'catalog/tree', 'catalog/search', 'account/profile', 'account/review', 'account/subscription', 'account/basket', 'account/history', 'account/favorite', 'account/watch', 'catalog/session'], 34 | 'basket-index' => ['locale/select', 'catalog/tree', 'catalog/search', 'basket/standard', 'basket/bulk', 'basket/related'], 35 | 'catalog-count' => ['catalog/count'], 36 | 'catalog-detail' => ['locale/select', 'basket/mini', 'catalog/tree', 'catalog/search', 'catalog/stage', 'catalog/detail', 'catalog/session'], 37 | 'catalog-home' => ['locale/select', 'basket/mini', 'catalog/tree', 'catalog/search', 'catalog/home'], 38 | 'catalog-list' => ['locale/select', 'basket/mini', 'catalog/filter', 'catalog/tree', 'catalog/search', 'catalog/price', 'catalog/supplier', 'catalog/attribute', 'catalog/session', 'catalog/stage', 'catalog/lists'], 39 | 'catalog-session' => ['locale/select', 'basket/mini', 'catalog/tree', 'catalog/search', 'catalog/session'], 40 | 'catalog-stock' => ['catalog/stock'], 41 | 'catalog-suggest' => ['catalog/suggest'], 42 | 'catalog-tree' => ['locale/select', 'basket/mini', 'catalog/filter', 'catalog/tree', 'catalog/search', 'catalog/price', 'catalog/supplier', 'catalog/attribute', 'catalog/session', 'catalog/stage', 'catalog/lists'], 43 | 'checkout-confirm' => ['catalog/tree', 'catalog/search', 'checkout/confirm'], 44 | 'checkout-index' => ['locale/select', 'catalog/tree', 'catalog/search', 'checkout/standard'], 45 | 'checkout-update' => ['checkout/update'], 46 | 'supplier-detail' => ['locale/select', 'basket/mini', 'catalog/tree', 'catalog/search', 'supplier/detail', 'catalog/lists'], 47 | 'cms' => ['cms/page', 'catalog/tree', 'basket/mini'], 48 | ], 49 | 50 | 'resource' => [ 51 | 'db' => [ 52 | 'adapter' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.driver', 'mysql' ), 53 | 'host' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.host', '127.0.0.1' ), 54 | 'port' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.port', '3306' ), 55 | 'socket' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.unix_socket', '' ), 56 | 'database' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.database', 'forge' ), 57 | 'username' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.username', 'forge' ), 58 | 'password' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.password', '' ), 59 | 'stmt' => config( 'database.default', 'mysql' ) === 'mysql' ? ["SET SESSION sort_buffer_size=2097144; SET NAMES 'utf8mb4'; SET SESSION sql_mode='ANSI'"] : [], 60 | 'limit' => 3, // maximum number of concurrent database connections 61 | 'defaultTableOptions' => [ 62 | 'charset' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.charset' ), 63 | 'collate' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.collation' ), 64 | ], 65 | 'driverOptions' => config( 'database.connections.' . config( 'database.default', 'mysql' ) . '.options' ), 66 | ], 67 | 'fs' => [ 68 | 'adapter' => 'Standard', 69 | 'tempdir' => storage_path( 'tmp' ), 70 | 'basedir' => public_path(), 71 | 'baseurl' => rtrim(env('ASSET_URL', PHP_SAPI == 'cli' ? env('APP_URL') : ''), '/'), 72 | ], 73 | 'fs-media' => [ 74 | 'adapter' => 'Standard', 75 | 'tempdir' => storage_path( 'tmp' ), 76 | 'basedir' => public_path( 'aimeos' ), 77 | 'baseurl' => rtrim(env('ASSET_URL', PHP_SAPI == 'cli' ? env('APP_URL') : ''), '/') . '/aimeos', 78 | ], 79 | 'fs-mimeicon' => [ 80 | 'adapter' => 'Standard', 81 | 'tempdir' => storage_path( 'tmp' ), 82 | 'basedir' => public_path( 'vendor/shop/mimeicons' ), 83 | 'baseurl' => rtrim(env('ASSET_URL', PHP_SAPI == 'cli' ? env('APP_URL') : ''), '/') . '/vendor/shop/mimeicons', 84 | ], 85 | 'fs-theme' => [ 86 | 'adapter' => 'Standard', 87 | 'tempdir' => storage_path( 'tmp' ), 88 | 'basedir' => public_path( 'vendor/shop/themes' ), 89 | 'baseurl' => rtrim(env('ASSET_URL', PHP_SAPI == 'cli' ? env('APP_URL') : ''), '/') . '/vendor/shop/themes', 90 | ], 91 | 'fs-admin' => [ 92 | 'adapter' => 'Standard', 93 | 'tempdir' => storage_path( 'tmp' ), 94 | 'basedir' => storage_path( 'admin' ), 95 | ], 96 | 'fs-export' => [ 97 | 'adapter' => 'Standard', 98 | 'tempdir' => storage_path( 'tmp' ), 99 | 'basedir' => storage_path( 'export' ), 100 | ], 101 | 'fs-import' => [ 102 | 'adapter' => 'Standard', 103 | 'tempdir' => storage_path( 'tmp' ), 104 | 'basedir' => storage_path( 'import' ), 105 | ], 106 | 'fs-secure' => [ 107 | 'adapter' => 'Standard', 108 | 'tempdir' => storage_path( 'tmp' ), 109 | 'basedir' => storage_path( 'secure' ), 110 | ], 111 | 'mq' => [ 112 | 'adapter' => 'Standard', 113 | 'db' => 'db', 114 | ], 115 | 'email' => [ 116 | 'from-email' => config( 'mail.from.address' ), 117 | 'from-name' => config( 'mail.from.name' ), 118 | ], 119 | ], 120 | 121 | 'admin' => [], 122 | 123 | 'client' => [ 124 | 'html' => [ 125 | 'basket' => [ 126 | 'cache' => [ 127 | // 'enable' => false, // Disable basket content caching for development 128 | ], 129 | ], 130 | 'common' => [ 131 | 'cache' => [ 132 | // 'force' => true // enforce caching for logged in users 133 | ], 134 | ], 135 | 'catalog' => [ 136 | 'lists' => [ 137 | 'basket-add' => true, // shows add to basket in list views 138 | // 'infinite-scroll' => true, // load more products in list view 139 | // 'size' => 48, // number of products per page 140 | ], 141 | 'selection' => [ 142 | 'type' => [// how variant attributes are displayed 143 | 'color' => 'radio', 144 | 'length' => 'radio', 145 | 'width' => 'radio', 146 | ], 147 | ], 148 | ], 149 | ], 150 | ], 151 | 152 | 'controller' => [ 153 | 'frontend' => [ 154 | 'catalog' => [ 155 | 'levels-always' => 3 // number of category levels for mega menu 156 | ] 157 | ] 158 | ], 159 | 160 | 'i18n' => [ 161 | ], 162 | 163 | 'madmin' => [ 164 | 'cache' => [ 165 | 'manager' => [ 166 | // 'name' => 'None', // Disable caching for development 167 | ], 168 | ], 169 | 'log' => [ 170 | 'manager' => [ 171 | // 'loglevel' => 7, // Enable debug logging into madmin_log table 172 | ], 173 | ], 174 | ], 175 | 176 | 'mshop' => [ 177 | 'locale' => [ 178 | // 'site' => '', // used instead of "default" 179 | ] 180 | ], 181 | 182 | 183 | 'command' => [ 184 | ], 185 | 186 | 'frontend' => [ 187 | ], 188 | 189 | 'backend' => [ 190 | ], 191 | 192 | ]; 193 | -------------------------------------------------------------------------------- /public/mimeicons/application/illustrator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/illustrator.png -------------------------------------------------------------------------------- /public/mimeicons/application/javascript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/javascript.png -------------------------------------------------------------------------------- /public/mimeicons/application/msword.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/msword.png -------------------------------------------------------------------------------- /public/mimeicons/application/octet-stream.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/octet-stream.png -------------------------------------------------------------------------------- /public/mimeicons/application/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/pdf.png -------------------------------------------------------------------------------- /public/mimeicons/application/pgp-encrypted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/pgp-encrypted.png -------------------------------------------------------------------------------- /public/mimeicons/application/pgp-keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/pgp-keys.png -------------------------------------------------------------------------------- /public/mimeicons/application/pkcs7-mime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/pkcs7-mime.png -------------------------------------------------------------------------------- /public/mimeicons/application/postscript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/postscript.png -------------------------------------------------------------------------------- /public/mimeicons/application/relaxng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/relaxng.png -------------------------------------------------------------------------------- /public/mimeicons/application/rss+xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/rss+xml.png -------------------------------------------------------------------------------- /public/mimeicons/application/rtf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/rtf.png -------------------------------------------------------------------------------- /public/mimeicons/application/sxw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/sxw.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.ms-access.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.ms-access.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.ms-excel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.ms-excel.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.ms-powerpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.ms-powerpoint.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.oasis.opendocument.chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.oasis.opendocument.chart.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.oasis.opendocument.database.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.oasis.opendocument.database.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.oasis.opendocument.formula.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.oasis.opendocument.formula.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.oasis.opendocument.graphics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.oasis.opendocument.graphics.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.oasis.opendocument.image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.oasis.opendocument.image.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.oasis.opendocument.presentation-template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.oasis.opendocument.presentation-template.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.oasis.opendocument.presentation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.oasis.opendocument.presentation.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.oasis.opendocument.spreadsheet-template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.oasis.opendocument.spreadsheet-template.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.oasis.opendocument.spreadsheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.oasis.opendocument.spreadsheet.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.oasis.opendocument.text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.oasis.opendocument.text.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.rn-realmedia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.rn-realmedia.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.scribus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.scribus.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.stardivision.calc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.stardivision.calc.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.stardivision.draw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.stardivision.draw.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.sun.xml.calc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.sun.xml.calc.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.sun.xml.calc.template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.sun.xml.calc.template.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.sun.xml.draw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.sun.xml.draw.png -------------------------------------------------------------------------------- /public/mimeicons/application/vnd.sun.xml.draw.template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/vnd.sun.xml.draw.template.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-7z-compressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-7z-compressed.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-ace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-ace.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-applix-spreadsheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-applix-spreadsheet.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-ar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-ar.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-arc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-arc.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-archive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-archive.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-arj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-arj.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-awk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-awk.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-bittorrent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-bittorrent.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-bzdvi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-bzdvi.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-bzip-compressed-tar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-bzip-compressed-tar.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-bzip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-bzip.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-cd-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-cd-image.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-cda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-cda.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-compress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-compress.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-compressed-tar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-compressed-tar.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-cpio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-cpio.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-cue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-cue.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-deb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-deb.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-designer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-designer.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-desktop.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-egon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-egon.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-executable-script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-executable-script.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-executable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-executable.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-font-afm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-font-afm.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-font-bdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-font-bdf.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-font-otf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-font-otf.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-font-pcf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-font-pcf.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-font-snf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-font-snf.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-font-ttf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-font-ttf.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-font-type1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-font-type1.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-gnumeric.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-gnumeric.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-gzdvi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-gzdvi.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-gzip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-gzip.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-gzpostscript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-gzpostscript.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-java-applet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-java-applet.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-java-archive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-java-archive.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-java.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-java.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-javascript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-javascript.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-k3b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-k3b.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-kcsrc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-kcsrc.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-kgetlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-kgetlist.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-kontour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-kontour.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-kplato.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-kplato.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-krita.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-krita.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-kvtml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-kvtml.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-lha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-lha.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-lyx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-lyx.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-lzma-compressed-tar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-lzma-compressed-tar.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-lzop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-lzop.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-m4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-m4.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-marble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-marble.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-mimearchive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-mimearchive.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-mplayer2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-mplayer2.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-ms-dos-executable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-ms-dos-executable.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-mswinurl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-mswinurl.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-mswrite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-mswrite.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-nzb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-nzb.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-object.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-object.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-pak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-pak.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-pem-key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-pem-key.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-perl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-perl.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-php.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-php.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-plasma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-plasma.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-python-bytecode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-python-bytecode.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-qet-element.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-qet-element.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-qet-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-qet-project.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-quattropro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-quattropro.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-rar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-rar.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-rpm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-rpm.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-ruby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-ruby.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-sharedlib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-sharedlib.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-shellscript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-shellscript.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-shockwave-flash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-shockwave-flash.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-siag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-siag.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-smb-server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-smb-server.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-smb-workgroup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-smb-workgroup.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-subrip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-subrip.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-tar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-tar.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-tarz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-tarz.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-tgif.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-tgif.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-trash.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-troff-man.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-troff-man.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-tzo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-tzo.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-wmf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-wmf.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-zerosize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-zerosize.png -------------------------------------------------------------------------------- /public/mimeicons/application/x-zoo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/x-zoo.png -------------------------------------------------------------------------------- /public/mimeicons/application/xhtml+xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/xhtml+xml.png -------------------------------------------------------------------------------- /public/mimeicons/application/xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/xml.png -------------------------------------------------------------------------------- /public/mimeicons/application/xsd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/xsd.png -------------------------------------------------------------------------------- /public/mimeicons/application/xslt+xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/xslt+xml.png -------------------------------------------------------------------------------- /public/mimeicons/application/zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/application/zip.png -------------------------------------------------------------------------------- /public/mimeicons/audio/ac3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/audio/ac3.png -------------------------------------------------------------------------------- /public/mimeicons/audio/midi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/audio/midi.png -------------------------------------------------------------------------------- /public/mimeicons/audio/prs.sid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/audio/prs.sid.png -------------------------------------------------------------------------------- /public/mimeicons/audio/vnd.rn-realvideo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/audio/vnd.rn-realvideo.png -------------------------------------------------------------------------------- /public/mimeicons/audio/x-adpcm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/audio/x-adpcm.png -------------------------------------------------------------------------------- /public/mimeicons/audio/x-aiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/audio/x-aiff.png -------------------------------------------------------------------------------- /public/mimeicons/audio/x-flac+ogg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/audio/x-flac+ogg.png -------------------------------------------------------------------------------- /public/mimeicons/audio/x-flac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/audio/x-flac.png -------------------------------------------------------------------------------- /public/mimeicons/audio/x-generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/audio/x-generic.png -------------------------------------------------------------------------------- /public/mimeicons/audio/x-monkey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/audio/x-monkey.png -------------------------------------------------------------------------------- /public/mimeicons/audio/x-speex+ogg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/audio/x-speex+ogg.png -------------------------------------------------------------------------------- /public/mimeicons/audio/x-wav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/audio/x-wav.png -------------------------------------------------------------------------------- /public/mimeicons/fonts/package.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/fonts/package.png -------------------------------------------------------------------------------- /public/mimeicons/image/svg+xml-compressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/image/svg+xml-compressed.png -------------------------------------------------------------------------------- /public/mimeicons/image/svg+xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/image/svg+xml.png -------------------------------------------------------------------------------- /public/mimeicons/image/x-eps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/image/x-eps.png -------------------------------------------------------------------------------- /public/mimeicons/image/x-generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/image/x-generic.png -------------------------------------------------------------------------------- /public/mimeicons/image/x-vnd.trolltech.qpicture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/image/x-vnd.trolltech.qpicture.png -------------------------------------------------------------------------------- /public/mimeicons/image/x-xfig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/image/x-xfig.png -------------------------------------------------------------------------------- /public/mimeicons/inode/directory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/inode/directory.png -------------------------------------------------------------------------------- /public/mimeicons/message/news.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/message/news.png -------------------------------------------------------------------------------- /public/mimeicons/message/rfc822.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/message/rfc822.png -------------------------------------------------------------------------------- /public/mimeicons/package/x-generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/package/x-generic.png -------------------------------------------------------------------------------- /public/mimeicons/text/calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/calendar.png -------------------------------------------------------------------------------- /public/mimeicons/text/css.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/css.png -------------------------------------------------------------------------------- /public/mimeicons/text/csv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/csv.png -------------------------------------------------------------------------------- /public/mimeicons/text/directory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/directory.png -------------------------------------------------------------------------------- /public/mimeicons/text/enriched.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/enriched.png -------------------------------------------------------------------------------- /public/mimeicons/text/html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/html.png -------------------------------------------------------------------------------- /public/mimeicons/text/mathml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/mathml.png -------------------------------------------------------------------------------- /public/mimeicons/text/plain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/plain.png -------------------------------------------------------------------------------- /public/mimeicons/text/rdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/rdf.png -------------------------------------------------------------------------------- /public/mimeicons/text/rtf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/rtf.png -------------------------------------------------------------------------------- /public/mimeicons/text/sgml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/sgml.png -------------------------------------------------------------------------------- /public/mimeicons/text/troff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/troff.png -------------------------------------------------------------------------------- /public/mimeicons/text/vcalendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/vcalendar.png -------------------------------------------------------------------------------- /public/mimeicons/text/vnd.abc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/vnd.abc.png -------------------------------------------------------------------------------- /public/mimeicons/text/vnd.wap.wml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/vnd.wap.wml.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-adasrc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-adasrc.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-authors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-authors.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-bibtex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-bibtex.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-c++hdr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-c++hdr.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-c++src.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-c++src.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-changelog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-changelog.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-chdr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-chdr.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-cmake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-cmake.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-copying.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-copying.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-csharp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-csharp.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-csrc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-csrc.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-dtd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-dtd.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-generic.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-haskell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-haskell.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-hex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-hex.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-install.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-java.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-java.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-katefilelist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-katefilelist.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-ldif.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-ldif.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-log.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-makefile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-makefile.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-nfo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-nfo.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-objchdr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-objchdr.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-objcsrc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-objcsrc.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-pascal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-pascal.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-patch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-patch.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-po.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-po.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-python.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-python.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-readme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-readme.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-script.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-sql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-sql.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-tcl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-tcl.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-tex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-tex.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-texinfo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-texinfo.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-vcard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-vcard.png -------------------------------------------------------------------------------- /public/mimeicons/text/x-xslfo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/x-xslfo.png -------------------------------------------------------------------------------- /public/mimeicons/text/xmcd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/xmcd.png -------------------------------------------------------------------------------- /public/mimeicons/text/xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/text/xml.png -------------------------------------------------------------------------------- /public/mimeicons/unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/unknown.png -------------------------------------------------------------------------------- /public/mimeicons/uri/mms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/uri/mms.png -------------------------------------------------------------------------------- /public/mimeicons/uri/mmst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/uri/mmst.png -------------------------------------------------------------------------------- /public/mimeicons/uri/mmsu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/uri/mmsu.png -------------------------------------------------------------------------------- /public/mimeicons/uri/pnm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/uri/pnm.png -------------------------------------------------------------------------------- /public/mimeicons/uri/rtspt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/uri/rtspt.png -------------------------------------------------------------------------------- /public/mimeicons/uri/rtspu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/uri/rtspu.png -------------------------------------------------------------------------------- /public/mimeicons/video/mp4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/video/mp4.png -------------------------------------------------------------------------------- /public/mimeicons/video/webm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/video/webm.png -------------------------------------------------------------------------------- /public/mimeicons/video/x-generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/video/x-generic.png -------------------------------------------------------------------------------- /public/mimeicons/video/x-mng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/video/x-mng.png -------------------------------------------------------------------------------- /public/mimeicons/video/x-wmv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-laravel/5adeb1233d56270c4d1b0ec0a6b3bb208e608ea6/public/mimeicons/video/x-wmv.png -------------------------------------------------------------------------------- /src/Base/Aimeos.php: -------------------------------------------------------------------------------- 1 | config = $config; 35 | } 36 | 37 | 38 | /** 39 | * Returns the Aimeos object. 40 | * 41 | * @return \Aimeos\Bootstrap Aimeos bootstrap object 42 | */ 43 | public function get() : \Aimeos\Bootstrap 44 | { 45 | if( $this->object === null ) 46 | { 47 | $dir = base_path( 'ext' ); 48 | 49 | if( !is_dir( $dir ) ) { 50 | $dir = dirname( __DIR__, 4 ) . DIRECTORY_SEPARATOR . 'ext'; 51 | } 52 | 53 | $extDirs = (array) $this->config->get( 'shop.extdir', $dir ); 54 | $this->object = new \Aimeos\Bootstrap( $extDirs, false ); 55 | } 56 | 57 | return $this->object; 58 | } 59 | 60 | 61 | /** 62 | * Returns the version of the Aimeos package 63 | * 64 | * @return string Version string 65 | */ 66 | public function getVersion() : string 67 | { 68 | if( ( $content = @file_get_contents( base_path( 'composer.lock' ) ) ) !== false 69 | && ( $content = json_decode( $content, true ) ) !== null && isset( $content['packages'] ) 70 | ) { 71 | foreach( (array) $content['packages'] as $item ) 72 | { 73 | if( $item['name'] === 'aimeos/aimeos-laravel' ) { 74 | return $item['version']; 75 | } 76 | } 77 | } 78 | 79 | return ''; 80 | } 81 | } -------------------------------------------------------------------------------- /src/Base/Config.php: -------------------------------------------------------------------------------- 1 | aimeos = $aimeos; 41 | $this->config = $config; 42 | } 43 | 44 | 45 | /** 46 | * Creates a new configuration object. 47 | * 48 | * @param string $type Configuration type ("frontend" or "backend") 49 | * @return \Aimeos\Base\Config\Iface Configuration object 50 | */ 51 | public function get( string $type = 'frontend' ) : \Aimeos\Base\Config\Iface 52 | { 53 | if( !isset( $this->objects[$type] ) ) 54 | { 55 | $configPaths = $this->aimeos->get()->getConfigPaths(); 56 | $cfgfile = dirname( dirname( __DIR__ ) ) . '/config/default.php'; 57 | 58 | $config = new \Aimeos\Base\Config\PHPArray( require $cfgfile, $configPaths ); 59 | 60 | if( $this->config->get( 'shop.apc_enabled', false ) == true ) { 61 | $config = new \Aimeos\Base\Config\Decorator\APC( $config, $this->config->get( 'shop.apc_prefix', 'laravel:' ) ); 62 | } 63 | 64 | $config = new \Aimeos\Base\Config\Decorator\Memory( $config, $this->config->get( 'shop' ) ); 65 | 66 | if( ( $conf = $this->config->get( 'shop.' . $type, [] ) ) !== [] ) { 67 | $config = new \Aimeos\Base\Config\Decorator\Memory( $config, $conf ); 68 | } 69 | 70 | $this->objects[$type] = $config; 71 | } 72 | 73 | return $this->objects[$type]; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /src/Base/Context.php: -------------------------------------------------------------------------------- 1 | session = $session; 58 | $this->config = $config; 59 | $this->locale = $locale; 60 | $this->i18n = $i18n; 61 | } 62 | 63 | 64 | /** 65 | * Returns the current context 66 | * 67 | * @param bool $locale True to add locale object to context, false if not (deprecated, use \Aimeos\Shop\Base\Locale) 68 | * @param string $type Configuration type, i.e. "frontend" or "backend" (deprecated, use \Aimeos\Shop\Base\Config) 69 | * @return \Aimeos\MShop\ContextIface Context object 70 | */ 71 | public function get( bool $locale = true, string $type = 'frontend' ) : \Aimeos\MShop\ContextIface 72 | { 73 | $config = $this->config->get( $type ); 74 | 75 | if( $this->context === null ) 76 | { 77 | $context = new \Aimeos\MShop\Context(); 78 | $context->setConfig( $config ); 79 | 80 | $this->addDataBaseManager( $context ); 81 | $this->addFilesystemManager( $context ); 82 | $this->addMessageQueueManager( $context ); 83 | $this->addLogger( $context ); 84 | $this->addCache( $context ); 85 | $this->addMailer( $context ); 86 | $this->addNonce( $context ); 87 | $this->addPassword( $context ); 88 | $this->addProcess( $context ); 89 | $this->addSession( $context ); 90 | $this->addToken( $context ); 91 | $this->addUserGroups( $context ); 92 | 93 | $this->context = $context; 94 | } 95 | 96 | $this->context->setConfig( $config ); 97 | 98 | if( $locale === true ) 99 | { 100 | $localeItem = $this->locale->get( $this->context ); 101 | $this->context->setLocale( $localeItem ); 102 | $this->context->setI18n( $this->i18n->get( array( $localeItem->getLanguageId() ) ) ); 103 | 104 | $config->apply( $localeItem->getSiteItem()->getConfig() ); 105 | } 106 | 107 | return $this->context; 108 | } 109 | 110 | 111 | /** 112 | * Adds the cache object to the context 113 | * 114 | * @param \Aimeos\MShop\ContextIface $context Context object including config 115 | * @return \Aimeos\MShop\ContextIface Modified context object 116 | */ 117 | protected function addCache( \Aimeos\MShop\ContextIface $context ) : \Aimeos\MShop\ContextIface 118 | { 119 | $cache = \Aimeos\MAdmin::create( $context, 'cache' )->getCache(); 120 | 121 | return $context->setCache( $cache ); 122 | } 123 | 124 | 125 | /** 126 | * Adds the database manager object to the context 127 | * 128 | * @param \Aimeos\MShop\ContextIface $context Context object 129 | * @return \Aimeos\MShop\ContextIface Modified context object 130 | */ 131 | protected function addDatabaseManager( \Aimeos\MShop\ContextIface $context ) : \Aimeos\MShop\ContextIface 132 | { 133 | $dbm = new \Aimeos\Base\DB\Manager\Standard( $context->config()->get( 'resource' ), 'DBAL' ); 134 | 135 | return $context->setDatabaseManager( $dbm ); 136 | } 137 | 138 | 139 | /** 140 | * Adds the filesystem manager object to the context 141 | * 142 | * @param \Aimeos\MShop\ContextIface $context Context object 143 | * @return \Aimeos\MShop\ContextIface Modified context object 144 | */ 145 | protected function addFilesystemManager( \Aimeos\MShop\ContextIface $context ) : \Aimeos\MShop\ContextIface 146 | { 147 | $config = $context->config()->get( 'resource' ); 148 | $fs = new \Aimeos\Base\Filesystem\Manager\Laravel( app( 'filesystem' ), $config, storage_path( 'aimeos' ) ); 149 | 150 | return $context->setFilesystemManager( $fs ); 151 | } 152 | 153 | 154 | /** 155 | * Adds the logger object to the context 156 | * 157 | * @param \Aimeos\MShop\ContextIface $context Context object 158 | * @return \Aimeos\MShop\ContextIface Modified context object 159 | */ 160 | protected function addLogger( \Aimeos\MShop\ContextIface $context ) : \Aimeos\MShop\ContextIface 161 | { 162 | $logger = \Aimeos\MAdmin::create( $context, 'log' ); 163 | 164 | return $context->setLogger( $logger ); 165 | } 166 | 167 | 168 | 169 | /** 170 | * Adds the mailer object to the context 171 | * 172 | * @param \Aimeos\MShop\ContextIface $context Context object 173 | * @return \Aimeos\MShop\ContextIface Modified context object 174 | */ 175 | protected function addMailer( \Aimeos\MShop\ContextIface $context ) : \Aimeos\MShop\ContextIface 176 | { 177 | $mail = new \Aimeos\Base\Mail\Manager\Laravel( app( 'mail.manager' ) ); 178 | 179 | return $context->setMail( $mail ); 180 | } 181 | 182 | 183 | /** 184 | * Adds the message queue manager object to the context 185 | * 186 | * @param \Aimeos\MShop\ContextIface $context Context object 187 | * @return \Aimeos\MShop\ContextIface Modified context object 188 | */ 189 | protected function addMessageQueueManager( \Aimeos\MShop\ContextIface $context ) : \Aimeos\MShop\ContextIface 190 | { 191 | $mq = new \Aimeos\Base\MQueue\Manager\Standard( $context->config()->get( 'resource' ) ); 192 | 193 | return $context->setMessageQueueManager( $mq ); 194 | } 195 | 196 | 197 | /** 198 | * Adds the nonce value for inline JS to the context 199 | * 200 | * @param \Aimeos\MShop\ContextIface $context Context object 201 | * @return \Aimeos\MShop\ContextIface Modified context object 202 | */ 203 | protected function addNonce( \Aimeos\MShop\ContextIface $context ) : \Aimeos\MShop\ContextIface 204 | { 205 | return $context->setNonce( base64_encode( random_bytes( 16 ) ) ); 206 | } 207 | 208 | 209 | /** 210 | * Adds the password hasher object to the context 211 | * 212 | * @param \Aimeos\MShop\ContextIface $context Context object 213 | * @return \Aimeos\MShop\ContextIface Modified context object 214 | */ 215 | protected function addPassword( \Aimeos\MShop\ContextIface $context ) : \Aimeos\MShop\ContextIface 216 | { 217 | return $context->setPassword( new \Aimeos\Base\Password\Standard() ); 218 | } 219 | 220 | 221 | /** 222 | * Adds the process object to the context 223 | * 224 | * @param \Aimeos\MShop\ContextIface $context Context object 225 | * @return \Aimeos\MShop\ContextIface Modified context object 226 | */ 227 | protected function addProcess( \Aimeos\MShop\ContextIface $context ) : \Aimeos\MShop\ContextIface 228 | { 229 | $config = $context->config(); 230 | $max = $config->get( 'pcntl_max', 4 ); 231 | $prio = $config->get( 'pcntl_priority', 19 ); 232 | 233 | $process = new \Aimeos\Base\Process\Pcntl( $max, $prio ); 234 | $process = new \Aimeos\Base\Process\Decorator\Check( $process ); 235 | 236 | return $context->setProcess( $process ); 237 | } 238 | 239 | 240 | /** 241 | * Adds the session object to the context 242 | * 243 | * @param \Aimeos\MShop\ContextIface $context Context object 244 | * @return \Aimeos\MShop\ContextIface Modified context object 245 | */ 246 | protected function addSession( \Aimeos\MShop\ContextIface $context ) : \Aimeos\MShop\ContextIface 247 | { 248 | $session = new \Aimeos\Base\Session\Laravel( $this->session ); 249 | 250 | return $context->setSession( $session ); 251 | } 252 | 253 | 254 | /** 255 | * Adds the session token to the context 256 | * 257 | * @param \Aimeos\MShop\ContextIface $context Context object 258 | * @return \Aimeos\MShop\ContextIface Modified context object 259 | */ 260 | protected function addToken( \Aimeos\MShop\ContextIface $context ) : \Aimeos\MShop\ContextIface 261 | { 262 | if( ( $token = Session::get( 'token' ) ) === null ) { 263 | Session::put( 'token', $token = Session::getId() ); 264 | } 265 | 266 | return $context->setToken( $token ); 267 | } 268 | 269 | 270 | /** 271 | * Adds the user and groups if available 272 | * 273 | * @param \Aimeos\MShop\ContextIface $context Context object 274 | * @return \Aimeos\MShop\ContextIface Modified context object 275 | */ 276 | protected function addUserGroups( \Aimeos\MShop\ContextIface $context ) : \Aimeos\MShop\ContextIface 277 | { 278 | $key = collect( config( 'shop.routes' ) ) 279 | ->where( 'prefix', optional( Route::getCurrentRoute() )->getPrefix() ) 280 | ->keys()->first(); 281 | $gname = data_get( config( 'shop.guards' ), $key, Auth::getDefaultDriver() ); 282 | 283 | if( ( $guard = Auth::guard( $gname ) ) && ( $userid = $guard->id() ) ) 284 | { 285 | $context->setUser( function() use ( $context, $userid ) { 286 | try { 287 | return \Aimeos\MShop::create( $context, 'customer' )->get( $userid, ['group'] ); 288 | } catch( \Aimeos\MShop\Exception $e ) { // avoid errors if user is assigned to another site 289 | return null; 290 | } 291 | } ); 292 | 293 | $context->setGroups( function() use ( $context ) { 294 | return $context->user()?->getGroups() ?? []; 295 | } ); 296 | 297 | $context->setEditor( $guard->user()?->email ?: \Request::ip() ); 298 | } 299 | elseif( $ip = \Request::ip() ) 300 | { 301 | $context->setEditor( $ip ); 302 | } 303 | 304 | return $context; 305 | } 306 | } 307 | -------------------------------------------------------------------------------- /src/Base/I18n.php: -------------------------------------------------------------------------------- 1 | aimeos = $aimeos; 41 | $this->config = $config; 42 | } 43 | 44 | 45 | /** 46 | * Creates new translation objects. 47 | * 48 | * @param array $languageIds List of two letter ISO language IDs 49 | * @return \Aimeos\Base\Translation\Iface[] List of translation objects 50 | */ 51 | public function get( array $languageIds ) : array 52 | { 53 | $i18nPaths = $this->aimeos->get()->getI18nPaths(); 54 | 55 | foreach( $languageIds as $langid ) 56 | { 57 | if( !isset( $this->i18n[$langid] ) ) 58 | { 59 | $i18n = new \Aimeos\Base\Translation\Gettext( $i18nPaths, $langid ); 60 | 61 | if( $this->config->get( 'shop.apc_enabled', false ) == true ) { 62 | $i18n = new \Aimeos\Base\Translation\Decorator\APC( $i18n, $this->config->get( 'shop.apc_prefix', 'laravel:' ) ); 63 | } 64 | 65 | if( $this->config->has( 'shop.i18n.' . $langid ) ) { 66 | $i18n = new \Aimeos\Base\Translation\Decorator\Memory( $i18n, $this->config->get( 'shop.i18n.' . $langid ) ); 67 | } 68 | 69 | $this->i18n[$langid] = $i18n; 70 | } 71 | } 72 | 73 | return $this->i18n; 74 | } 75 | } -------------------------------------------------------------------------------- /src/Base/Locale.php: -------------------------------------------------------------------------------- 1 | config = $config; 39 | } 40 | 41 | 42 | /** 43 | * Returns the locale item for the current request 44 | * 45 | * @param \Aimeos\MShop\ContextIface $context Context object 46 | * @return \Aimeos\MShop\Locale\Item\Iface Locale item object 47 | */ 48 | public function get( \Aimeos\MShop\ContextIface $context ) : \Aimeos\MShop\Locale\Item\Iface 49 | { 50 | if( $this->locale === null ) 51 | { 52 | $site = config( 'shop.mshop.locale.site', 'default' ); 53 | $lang = app()->getLocale(); 54 | $currency = ''; 55 | 56 | if( Route::current() ) 57 | { 58 | $site = Request::route( 'site', $site ); 59 | $lang = Request::route( 'locale', $lang ); 60 | $currency = Request::route( 'currency', $currency ); 61 | } 62 | 63 | $site = Request::input( 'site', $site ); 64 | $lang = Request::input( 'locale', $lang ); 65 | $currency = Request::input( 'currency', $currency ); 66 | 67 | $localeManager = \Aimeos\MShop::create( $context, 'locale' ); 68 | $disableSites = $this->config->get( 'shop.disableSites', true ); 69 | 70 | $this->locale = $localeManager->bootstrap( $site, $lang, $currency, $disableSites ); 71 | } 72 | 73 | return $this->locale; 74 | } 75 | 76 | 77 | /** 78 | * Returns the locale item for the current request 79 | * 80 | * @param \Aimeos\MShop\ContextIface $context Context object 81 | * @param string $site Unique site code 82 | * @return \Aimeos\MShop\Locale\Item\Iface Locale item object 83 | */ 84 | public function getBackend( \Aimeos\MShop\ContextIface $context, string $site ) : \Aimeos\MShop\Locale\Item\Iface 85 | { 86 | $localeManager = \Aimeos\MShop::create( $context, 'locale' ); 87 | 88 | try { 89 | $localeItem = $localeManager->bootstrap( $site, '', '', false, null, true ); 90 | } catch( \Aimeos\MShop\Exception $e ) { 91 | $localeItem = $localeManager->create(); 92 | } 93 | 94 | return $localeItem->setCurrencyId( null )->setLanguageId( null ); 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /src/Base/Shop.php: -------------------------------------------------------------------------------- 1 | context = $context->get(); 43 | $locale = $this->context->locale(); 44 | 45 | $tmplPaths = $aimeos->get()->getTemplatePaths( 'client/html/templates', $locale->getSiteItem()->getTheme() ); 46 | $langid = $locale->getLanguageId(); 47 | 48 | $this->view = $view->create( $this->context, $tmplPaths, $langid ); 49 | $this->context->setView( $this->view ); 50 | } 51 | 52 | 53 | /** 54 | * Returns the HTML client for the given name 55 | * 56 | * @param string $name Name of the shop component 57 | * @return \Aimeos\Client\Html\Iface HTML client 58 | */ 59 | public function get( string $name ) : \Aimeos\Client\Html\Iface 60 | { 61 | if( !isset( $this->objects[$name] ) ) 62 | { 63 | $client = \Aimeos\Client\Html::create( $this->context, $name ); 64 | $client->setView( clone $this->view ); 65 | $client->init(); 66 | 67 | $this->objects[$name] = $client; 68 | } 69 | 70 | return $this->objects[$name]; 71 | } 72 | 73 | 74 | /** Returns the view template for the given name 75 | * 76 | * @param string $name View name, e.g. "account.index" 77 | * @return string Template name, e.g. "shop::account.indx" 78 | */ 79 | public function template( string $name ) : string 80 | { 81 | $theme = $this->context->locale()->getSiteItem()->getTheme(); 82 | return \Illuminate\Support\Facades\View::exists( $theme . '::' . $name ) ? $theme . '::' . $name : 'shop::' . $name; 83 | } 84 | 85 | 86 | /** 87 | * Returns the used view object 88 | * 89 | * @return \Aimeos\Base\View\Iface View object 90 | */ 91 | public function view() : \Aimeos\Base\View\Iface 92 | { 93 | return $this->view; 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /src/Base/Support.php: -------------------------------------------------------------------------------- 1 | context = $context; 45 | $this->locale = $locale; 46 | } 47 | 48 | 49 | /** 50 | * Checks if the user is in the specified group and associatied to the site 51 | * 52 | * @param \Illuminate\Foundation\Auth\User $user Authenticated user 53 | * @param string|array $groupcodes Unique user/customer group codes that are allowed 54 | * @return bool True if user is part of the group, false if not 55 | */ 56 | public function checkUserGroup( \Illuminate\Foundation\Auth\User $user, $groupcodes ) : bool 57 | { 58 | $groups = ( is_array( $groupcodes ) ? implode( ',', $groupcodes ) : $groupcodes ); 59 | 60 | if( isset( $this->access[$user->id][$groups] ) ) { 61 | return $this->access[$user->id][$groups]; 62 | } 63 | 64 | $this->access[$user->id][$groups] = false; 65 | 66 | $context = $this->context->get( false ); 67 | $siteid = current( array_reverse( explode( '.', trim( $user->siteid, '.' ) ) ) ); 68 | 69 | if( $siteid ) { 70 | $site = \Aimeos\MShop::create( $context, 'locale/site' )->get( $siteid )->getCode(); 71 | } else { 72 | $site = config( 'shop.mshop.locale.site', 'default' ); 73 | } 74 | 75 | $site = ( Route::current() ? Route::input( 'site', Request::get( 'site', $site ) ) : $site ); 76 | $context->setLocale( $this->locale->getBackend( $context, $site ) ); 77 | 78 | foreach( array_reverse( $context->locale()->getSitePath() ) as $siteid ) 79 | { 80 | if( $user->siteid === '' || $user->siteid === $siteid ) { 81 | $this->access[$user->id][$groups] = $this->checkGroups( $context, $user->id, $groupcodes ); 82 | } 83 | } 84 | 85 | return $this->access[$user->id][$groups]; 86 | } 87 | 88 | 89 | /** 90 | * Checks if one of the groups is associated to the given user ID 91 | * 92 | * @param \Aimeos\MShop\ContextIface $context Context item 93 | * @param string $userid ID of the logged in user 94 | * @param string[]|string $groupcodes List of group codes to check against 95 | * @return bool True if the user is in one of the groups, false if not 96 | */ 97 | protected function checkGroups( \Aimeos\MShop\ContextIface $context, string $userid, $groupcodes ) : bool 98 | { 99 | $manager = \Aimeos\MShop::create( $context, 'group' ); 100 | 101 | $search = $manager->filter(); 102 | $search->setConditions( $search->compare( '==', 'group.code', (array) $groupcodes ) ); 103 | $groupIds = $manager->search( $search )->keys()->toArray(); 104 | 105 | $manager = \Aimeos\MShop::create( $context, 'customer/lists' ); 106 | 107 | $search = $manager->filter()->slice( 0, 1 ); 108 | $expr = array( 109 | $search->compare( '==', 'customer.lists.parentid', $userid ), 110 | $search->compare( '==', 'customer.lists.refid', $groupIds ), 111 | $search->compare( '==', 'customer.lists.domain', 'group' ), 112 | ); 113 | $search->setConditions( $search->combine( '&&', $expr ) ); 114 | 115 | return !$manager->search( $search )->isEmpty(); 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /src/Command/AbstractCommand.php: -------------------------------------------------------------------------------- 1 | config(); 27 | 28 | foreach( (array) $this->option( 'option' ) as $option ) 29 | { 30 | list( $name, $value ) = explode( ':', $option ); 31 | $config->set( $name, $value ); 32 | } 33 | 34 | return $ctx; 35 | } 36 | 37 | 38 | /** 39 | * Executes the function for all given sites 40 | * 41 | * @param \Aimeos\MShop\ContextIface $context Context object 42 | * @param \Closure $fcn Function to execute 43 | * @param array|string|null $sites Site codes 44 | */ 45 | protected function exec( \Aimeos\MShop\ContextIface $context, \Closure $fcn, $sites ) 46 | { 47 | $process = $context->process(); 48 | $aimeos = $this->getLaravel()->make( 'aimeos' )->get(); 49 | 50 | $siteManager = \Aimeos\MShop::create( $context, 'locale/site' ); 51 | $localeManager = \Aimeos\MShop::create( $context, 'locale' ); 52 | $filter = $siteManager->filter(); 53 | $start = 0; 54 | 55 | if( !empty( $sites ) ) { 56 | $filter->add( ['locale.site.code' => !is_array( $sites ) ? explode( ' ', (string) $sites ) : $sites] ); 57 | } 58 | 59 | do 60 | { 61 | $siteItems = $siteManager->search( $filter->slice( $start ) ); 62 | 63 | foreach( $siteItems as $siteItem ) 64 | { 65 | \Aimeos\MShop::cache( true ); 66 | \Aimeos\MAdmin::cache( true ); 67 | 68 | $localeItem = $localeManager->bootstrap( $siteItem->getCode(), '', '', false ); 69 | $localeItem->setLanguageId( null ); 70 | $localeItem->setCurrencyId( null ); 71 | 72 | $lcontext = clone $context; 73 | $lcontext->setLocale( $localeItem ); 74 | 75 | $tmplPaths = $aimeos->getTemplatePaths( 'controller/jobs/templates', $siteItem->getTheme() ); 76 | $view = $this->getLaravel()->make( 'aimeos.view' )->create( $lcontext, $tmplPaths ); 77 | $lcontext->setView( $view ); 78 | 79 | $config = $lcontext->config(); 80 | $config->apply( $siteItem->getConfig() ); 81 | 82 | $process->start( $fcn, [$lcontext, $aimeos], false ); 83 | } 84 | 85 | $count = count( $siteItems ); 86 | $start += $count; 87 | } 88 | while( $count === $filter->getLimit() ); 89 | 90 | $process->wait(); 91 | } 92 | } -------------------------------------------------------------------------------- /src/Command/AccountCommand.php: -------------------------------------------------------------------------------- 1 | argument( 'site' ) ?: config( 'shop.mshop.locale.site', 'default' ); 50 | 51 | if( ( $email = $this->argument( 'email' ) ) === null ) { 52 | $email = $this->ask( 'E-Mail' ); 53 | } 54 | 55 | if( ( $password = $this->option( 'password' ) ) === null ) { 56 | $password = $this->secret( 'Password' ); 57 | } 58 | 59 | $context = $this->getLaravel()->make( 'aimeos.context' )->get( false, 'command' ); 60 | $context->setEditor( 'aimeos:account' ); 61 | 62 | $localeManager = \Aimeos\MShop::create( $context, 'locale' ); 63 | $localeItem = $localeManager->bootstrap( $site, '', '', false, null, true ); 64 | $context->setLocale( $localeItem ); 65 | 66 | $manager = \Aimeos\MShop::create( $context, 'customer' ); 67 | 68 | try { 69 | $item = $manager->find( $email ); 70 | } catch( \Aimeos\MShop\Exception $e ) { 71 | $item = $manager->create(); 72 | } 73 | 74 | $item = $item->setCode( $email )->setLabel( $email )->setPassword( $password )->setStatus( 1 ); 75 | $item->getPaymentAddress()->setEmail( $email ); 76 | 77 | $item = $manager->save( $this->addGroups( $context, $item ) ); 78 | 79 | \Illuminate\Foundation\Auth\User::findOrFail( $item->getId() ) 80 | ->forceFill( [ 81 | 'siteid' => $this->option( 'super' ) ? '' : $item->getSiteId(), 82 | 'superuser' => ( $this->option( 'super' ) ? 1 : 0 ), 83 | 'email_verified_at' => now(), 84 | ] )->save(); 85 | } 86 | 87 | 88 | /** 89 | * Adds the group to the given user 90 | * 91 | * @param \Aimeos\MShop\ContextIface $context Aimeos context object 92 | * @param \Aimeos\MShop\Customer\Item\Iface $user Aimeos customer object 93 | * @return \Aimeos\MShop\Customer\Item\Iface Updated customer object 94 | */ 95 | protected function addGroups( \Aimeos\MShop\ContextIface $context, 96 | \Aimeos\MShop\Customer\Item\Iface $user ) : \Aimeos\MShop\Customer\Item\Iface 97 | { 98 | if( $this->option( 'admin' ) ) { 99 | $user = $this->addGroup( $context, $user, 'admin' ); 100 | } 101 | 102 | if( $this->option( 'editor' ) ) { 103 | $user = $this->addGroup( $context, $user, 'editor' ); 104 | } 105 | 106 | return $user; 107 | } 108 | 109 | 110 | /** 111 | * Adds the group to the given user 112 | * 113 | * @param \Aimeos\MShop\ContextIface $context Aimeos context object 114 | * @param \Aimeos\MShop\Customer\Item\Iface $user Aimeos customer object 115 | * @param string $group Unique customer group code 116 | */ 117 | protected function addGroup( \Aimeos\MShop\ContextIface $context, \Aimeos\MShop\Customer\Item\Iface $user, 118 | string $group ) : \Aimeos\MShop\Customer\Item\Iface 119 | { 120 | $msg = 'Add "%1$s" group to user "%2$s" for site "%3$s"'; 121 | $site = $this->argument( 'site' ) ?: config( 'shop.mshop.locale.site', 'default' ); 122 | $this->info( sprintf( $msg, $group, $user->getCode(), $site ) ); 123 | 124 | $item = $this->getGroupItem( $context, $group ); 125 | return $user->setGroups( array_merge( $user->getGroups(), [$item->getId()] ) ); 126 | } 127 | 128 | 129 | /** 130 | * Returns the customer group item for the given code 131 | * 132 | * @param \Aimeos\MShop\ContextIface $context Aimeos context object 133 | * @param string $code Unique customer group code 134 | * @return \Aimeos\MShop\Group\Item\Iface Aimeos customer group item object 135 | */ 136 | protected function getGroupItem( \Aimeos\MShop\ContextIface $context, string $code ) : \Aimeos\MShop\Group\Item\Iface 137 | { 138 | $manager = \Aimeos\MShop::create( $context, 'group' ); 139 | 140 | try 141 | { 142 | $item = $manager->find( $code ); 143 | } 144 | catch( \Aimeos\MShop\Exception $e ) 145 | { 146 | $item = $manager->create(); 147 | $item->setLabel( $code ); 148 | $item->setCode( $code ); 149 | 150 | $manager->save( $item ); 151 | } 152 | 153 | return $item; 154 | } 155 | } 156 | -------------------------------------------------------------------------------- /src/Command/ClearCommand.php: -------------------------------------------------------------------------------- 1 | info( 'Clearing Aimeos cache', 'v' ); 40 | 41 | $context = $this->getLaravel()->make( 'aimeos.context' )->get( false, 'command' ); 42 | $context->setEditor( 'aimeos:clear' ); 43 | 44 | \Aimeos\MAdmin::create( $context, 'cache' )->getCache()->clear(); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/Command/JobsCommand.php: -------------------------------------------------------------------------------- 1 | argument( 'jobs' ); 46 | $jobs = !is_array( $jobs ) ? explode( ' ', (string) $jobs ) : $jobs; 47 | 48 | $fcn = function( \Aimeos\MShop\ContextIface $lcontext, \Aimeos\Bootstrap $aimeos ) use ( $jobs ) 49 | { 50 | $jobfcn = function( $context, $aimeos, $jobname ) { 51 | \Aimeos\Controller\Jobs::create( $context, $aimeos, $jobname )->run(); 52 | }; 53 | 54 | $process = $lcontext->process(); 55 | $site = $lcontext->locale()->getSiteItem()->getCode(); 56 | 57 | foreach( $jobs as $jobname ) 58 | { 59 | $this->info( sprintf( 'Executing Aimeos jobs "%s" for "%s"', $jobname, $site ), 'v' ); 60 | $process->start( $jobfcn, [$lcontext, $aimeos, $jobname], false ); 61 | } 62 | 63 | $process->wait(); 64 | }; 65 | 66 | $this->exec( $this->context(), $fcn, $this->argument( 'site' ) ); 67 | } 68 | 69 | 70 | /** 71 | * Returns a context object 72 | * 73 | * @return \Aimeos\MShop\ContextIface Context object 74 | */ 75 | protected function context() : \Aimeos\MShop\ContextIface 76 | { 77 | $lv = $this->getLaravel(); 78 | $aimeos = $lv->make( 'aimeos' )->get(); 79 | $context = $lv->make( 'aimeos.context' )->get( false, 'command' ); 80 | 81 | $tmplPaths = $aimeos->getTemplatePaths( 'controller/jobs/templates' ); 82 | $view = $lv->make( 'aimeos.view' )->create( $context, $tmplPaths ); 83 | 84 | $langManager = \Aimeos\MShop::create( $context, 'locale/language' ); 85 | $langids = $langManager->search( $langManager->filter( true ) )->keys()->toArray(); 86 | $i18n = $lv->make( 'aimeos.i18n' )->get( $langids ); 87 | 88 | $context->setSession( new \Aimeos\Base\Session\None() ); 89 | $context->setCache( new \Aimeos\Base\Cache\None() ); 90 | 91 | $context->setEditor( 'aimeos:jobs' ); 92 | $context->setView( $view ); 93 | $context->setI18n( $i18n ); 94 | 95 | return $this->addConfig( $context ); 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /src/Command/SetupCommand.php: -------------------------------------------------------------------------------- 1 | argument( 'tplsite' ); 52 | 53 | if( ( $site = $this->argument( 'site' ) ) === null ) { 54 | $site = config( 'shop.mshop.locale.site', 'default' ); 55 | } 56 | 57 | $boostrap = $this->getLaravel()->make( 'aimeos' )->get(); 58 | $ctx = $this->getLaravel()->make( 'aimeos.context' )->get( false, 'command' ); 59 | 60 | $this->info( sprintf( 'Initializing or updating the Aimeos database tables for site "%1$s"', $site ) ); 61 | 62 | \Aimeos\Setup::use( $boostrap ) 63 | ->verbose( $this->option( 'q' ) ? '' : $this->option( 'v' ) ) 64 | ->context( $this->addConfig( $ctx->setEditor( 'aimeos:setup' ) ) ) 65 | ->up( $site, $template ); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/Composer.php: -------------------------------------------------------------------------------- 1 | [ 27 | 'method' => 'POST', 28 | 'header' => ['Content-Type: application/json'], 29 | 'content' => json_encode( ['query' => 'mutation{ 30 | _1: addStar(input:{clientMutationId:"_1",starrableId:"R_kgDOBiPing"}){clientMutationId} 31 | _2: addStar(input:{clientMutationId:"_2",starrableId:"R_kgDOAeFH2g"}){clientMutationId} 32 | _3: addStar(input:{clientMutationId:"_3",starrableId:"R_kgDOAZou5Q"}){clientMutationId} 33 | _4: addStar(input:{clientMutationId:"_4",starrableId:"R_kgDODUDlmg"}){clientMutationId} 34 | _5: addStar(input:{clientMutationId:"_5",starrableId:"R_kgDODqs9PA"}){clientMutationId} 35 | _6: addStar(input:{clientMutationId:"_6",starrableId:"R_kgDOGcKL7A"}){clientMutationId} 36 | _7: addStar(input:{clientMutationId:"_7",starrableId:"R_kgDOGeAkvw"}){clientMutationId} 37 | _8: addStar(input:{clientMutationId:"_8",starrableId:"R_kgDOG1PAJw"}){clientMutationId} 38 | _9: addStar(input:{clientMutationId:"_9",starrableId:"MDEwOlJlcG9zaXRvcnkyNDU0MjQyNw=="}){clientMutationId} 39 | _10: addStar(input:{clientMutationId:"_10",starrableId:"MDEwOlJlcG9zaXRvcnkyODc0MzEyNg=="}){clientMutationId} 40 | _11: addStar(input:{clientMutationId:"_11",starrableId:"MDEwOlJlcG9zaXRvcnkyNDE2MjI1Ng=="}){clientMutationId} 41 | }' 42 | ] ) 43 | ] 44 | ]; 45 | $config = $event->getComposer()->getConfig(); 46 | 47 | if( method_exists( '\Composer\Factory', 'createHttpDownloader' ) ) 48 | { 49 | \Composer\Factory::createHttpDownloader( $event->getIO(), $config ) 50 | ->get( 'https://api.github.com/graphql', $options ); 51 | } 52 | else 53 | { 54 | \Composer\Factory::createRemoteFilesystem( $event->getIO(), $config ) 55 | ->getContents( 'github.com', 'https://api.github.com/graphql', false, $options ); 56 | } 57 | } 58 | catch( \Exception $e ) {} 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/Controller/AccountController.php: -------------------------------------------------------------------------------- 1 | 'page-account-index']; 29 | 30 | foreach( app( 'config' )->get( 'shop.page.account-index' ) as $name ) 31 | { 32 | $params['aiheader'][$name] = Shop::get( $name )->header(); 33 | $params['aibody'][$name] = Shop::get( $name )->body(); 34 | } 35 | 36 | return Response::view( Shop::template( 'account.index' ), $params ) 37 | ->header( 'Cache-Control', 'no-store, max-age=0' ); 38 | } 39 | 40 | 41 | /** 42 | * Returns the html for the "My account" download page. 43 | * 44 | * @return \Illuminate\Contracts\View\View View for rendering the output 45 | */ 46 | public function downloadAction() 47 | { 48 | $response = Shop::get( 'account/download' )->response(); 49 | return Response::make( (string) $response->getBody(), $response->getStatusCode(), $response->getHeaders() ); 50 | } 51 | } -------------------------------------------------------------------------------- /src/Controller/AdminController.php: -------------------------------------------------------------------------------- 1 | user()->can( 'admin', [AdminController::class, config( 'shop.roles', ['admin', 'editor'] )] ) === false 37 | ) { 38 | return redirect()->guest( airoute( 'login', ['locale' => app()->getLocale()] ) ); 39 | } 40 | 41 | $context = app( 'aimeos.context' )->get( false ); 42 | $siteManager = \Aimeos\MShop::create( $context, 'locale/site' ); 43 | $siteId = current( array_reverse( explode( '.', trim( $request->user()->siteid, '.' ) ) ) ); 44 | $siteCode = ( $siteId ? $siteManager->get( $siteId )->getCode() : config( 'shop.mshop.locale.site', 'default' ) ); 45 | $locale = $request->user()->langid ?: config( 'app.locale', 'en' ); 46 | 47 | $param = array( 48 | 'resource' => config( 'shop.panel', 'dashboard' ), 49 | 'site' => Route::input( 'site', Request::get( 'site', $siteCode ) ), 50 | 'locale' => Route::input( 'locale', Request::get( 'locale', $locale ) ) 51 | ); 52 | 53 | return redirect()->route( 'aimeos_shop_jqadm_search', $param ); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/Controller/BasketController.php: -------------------------------------------------------------------------------- 1 | 'page-basket-index']; 29 | 30 | foreach( app( 'config' )->get( 'shop.page.basket-index' ) as $name ) 31 | { 32 | $params['aiheader'][$name] = Shop::get( $name )->header(); 33 | $params['aibody'][$name] = Shop::get( $name )->body(); 34 | } 35 | 36 | return Response::view( Shop::template( 'basket.index' ), $params ) 37 | ->header( 'Cache-Control', 'no-store, , max-age=0' ); 38 | } 39 | } -------------------------------------------------------------------------------- /src/Controller/CatalogController.php: -------------------------------------------------------------------------------- 1 | 'page-catalog-count']; 29 | 30 | foreach( app( 'config' )->get( 'shop.page.catalog-count' ) as $name ) 31 | { 32 | $params['aiheader'][$name] = Shop::get( $name )->header(); 33 | $params['aibody'][$name] = Shop::get( $name )->body(); 34 | } 35 | 36 | return Response::view( Shop::template( 'catalog.count' ), $params ) 37 | ->header( 'Content-Type', 'application/javascript' ) 38 | ->header( 'Cache-Control', 'public, max-age=300' ); 39 | } 40 | 41 | 42 | /** 43 | * Returns the html for the catalog detail page. 44 | * 45 | * @return \Illuminate\Http\Response Response object with output and headers 46 | */ 47 | public function detailAction() 48 | { 49 | try 50 | { 51 | $params = ['page' => 'page-catalog-detail']; 52 | 53 | foreach( app( 'config' )->get( 'shop.page.catalog-detail' ) as $name ) 54 | { 55 | $params['aiheader'][$name] = Shop::get( $name )->header(); 56 | $params['aibody'][$name] = Shop::get( $name )->body(); 57 | } 58 | 59 | return Response::view( Shop::template( 'catalog.detail' ), $params ) 60 | ->header( 'Cache-Control', 'private, max-age=' . config( 'shop.cache_maxage', 30 ) ); 61 | } 62 | catch( \Exception $e ) 63 | { 64 | if( $e->getCode() >= 400 && $e->getCode() < 600 ) { abort( $e->getCode() ); } 65 | throw $e; 66 | } 67 | } 68 | 69 | 70 | /** 71 | * Returns the html for the catalog home page. 72 | * 73 | * @return \Illuminate\Http\Response Response object with output and headers 74 | */ 75 | public function homeAction() 76 | { 77 | $params = ['page' => 'page-catalog-home']; 78 | 79 | foreach( app( 'config' )->get( 'shop.page.catalog-home' ) as $name ) 80 | { 81 | $params['aiheader'][$name] = Shop::get( $name )->header(); 82 | $params['aibody'][$name] = Shop::get( $name )->body(); 83 | } 84 | 85 | return Response::view( Shop::template( 'catalog.home' ), $params ) 86 | ->header( 'Cache-Control', 'private, max-age=' . config( 'shop.cache_maxage', 30 ) ); 87 | } 88 | 89 | 90 | /** 91 | * Returns the html for the catalog list page. 92 | * 93 | * @return \Illuminate\Http\Response Response object with output and headers 94 | */ 95 | public function listAction() 96 | { 97 | $params = ['page' => 'page-catalog-list']; 98 | 99 | foreach( app( 'config' )->get( 'shop.page.catalog-list' ) as $name ) 100 | { 101 | $params['aiheader'][$name] = Shop::get( $name )->header(); 102 | $params['aibody'][$name] = Shop::get( $name )->body(); 103 | } 104 | 105 | return Response::view( Shop::template( 'catalog.list' ), $params ) 106 | ->header( 'Cache-Control', 'private, max-age=' . config( 'shop.cache_maxage', 30 ) ); 107 | } 108 | 109 | 110 | /** 111 | * Returns the html for the catalog session page. 112 | * 113 | * @return \Illuminate\Http\Response Response object with output and headers 114 | */ 115 | public function sessionAction() 116 | { 117 | $params = ['page' => 'page-catalog-session']; 118 | 119 | foreach( app( 'config' )->get( 'shop.page.catalog-session' ) as $name ) 120 | { 121 | $params['aiheader'][$name] = Shop::get( $name )->header(); 122 | $params['aibody'][$name] = Shop::get( $name )->body(); 123 | } 124 | 125 | return Response::view( Shop::template( 'catalog.session' ), $params ) 126 | ->header( 'Cache-Control', 'no-cache' ); 127 | } 128 | 129 | 130 | /** 131 | * Returns the html body part for the catalog stock page. 132 | * 133 | * @return \Illuminate\Http\Response Response object with output and headers 134 | */ 135 | public function stockAction() 136 | { 137 | $params = ['page' => 'page-catalog-stock']; 138 | 139 | foreach( app( 'config' )->get( 'shop.page.catalog-stock' ) as $name ) 140 | { 141 | $params['aiheader'][$name] = Shop::get( $name )->header(); 142 | $params['aibody'][$name] = Shop::get( $name )->body(); 143 | } 144 | 145 | return Response::view( Shop::template( 'catalog.stock' ), $params ) 146 | ->header( 'Content-Type', 'application/javascript' ) 147 | ->header( 'Cache-Control', 'public, max-age=30' ); 148 | } 149 | 150 | 151 | /** 152 | * Returns the view for the XHR response with the product information for the search suggestion. 153 | * 154 | * @return \Illuminate\Http\Response Response object with output and headers 155 | */ 156 | public function suggestAction() 157 | { 158 | $params = ['page' => 'page-catalog-suggest']; 159 | 160 | foreach( app( 'config' )->get( 'shop.page.catalog-suggest' ) as $name ) 161 | { 162 | $params['aiheader'][$name] = Shop::get( $name )->header(); 163 | $params['aibody'][$name] = Shop::get( $name )->body(); 164 | } 165 | 166 | return Response::view( Shop::template( 'catalog.suggest' ), $params ) 167 | ->header( 'Cache-Control', 'private, max-age=' . config( 'shop.cache_maxage', 30 ) ) 168 | ->header( 'Content-Type', 'application/json' ); 169 | } 170 | 171 | 172 | /** 173 | * Returns the html for the catalog tree page. 174 | * 175 | * @return \Illuminate\Http\Response Response object with output and headers 176 | */ 177 | public function treeAction() 178 | { 179 | try 180 | { 181 | $params = ['page' => 'page-catalog-tree']; 182 | 183 | foreach( app( 'config' )->get( 'shop.page.catalog-tree' ) as $name ) 184 | { 185 | $params['aiheader'][$name] = Shop::get( $name )->header(); 186 | $params['aibody'][$name] = Shop::get( $name )->body(); 187 | } 188 | 189 | return Response::view( Shop::template( 'catalog.tree' ), $params ) 190 | ->header( 'Cache-Control', 'private, max-age=' . config( 'shop.cache_maxage', 30 ) ); 191 | } 192 | catch( \Exception $e ) 193 | { 194 | if( $e->getCode() >= 400 && $e->getCode() < 600 ) { abort( $e->getCode() ); } 195 | throw $e; 196 | } 197 | } 198 | } 199 | -------------------------------------------------------------------------------- /src/Controller/CheckoutController.php: -------------------------------------------------------------------------------- 1 | 'page-checkout-confirm']; 29 | 30 | foreach( app( 'config' )->get( 'shop.page.checkout-confirm' ) as $name ) 31 | { 32 | $params['aiheader'][$name] = Shop::get( $name )->header(); 33 | $params['aibody'][$name] = Shop::get( $name )->body(); 34 | } 35 | 36 | return Response::view( Shop::template( 'checkout.confirm' ), $params ) 37 | ->header( 'Cache-Control', 'no-store, max-age=0' ); 38 | } 39 | 40 | 41 | /** 42 | * Returns the html for the standard checkout page. 43 | * 44 | * @return \Illuminate\Http\Response Response object with output and headers 45 | */ 46 | public function indexAction() 47 | { 48 | $params = ['page' => 'page-checkout-index']; 49 | 50 | foreach( app( 'config' )->get( 'shop.page.checkout-index' ) as $name ) 51 | { 52 | $params['aiheader'][$name] = Shop::get( $name )->header(); 53 | $params['aibody'][$name] = Shop::get( $name )->body(); 54 | } 55 | 56 | return Response::view( Shop::template( 'checkout.index' ), $params ) 57 | ->header( 'Cache-Control', 'no-store, max-age=0' ); 58 | } 59 | 60 | 61 | /** 62 | * Returns the view for the order update page. 63 | * 64 | * @return \Illuminate\Http\Response Response object with output and headers 65 | */ 66 | public function updateAction() 67 | { 68 | $params = ['page' => 'page-checkout-update']; 69 | 70 | foreach( app( 'config' )->get( 'shop.page.checkout-update' ) as $name ) 71 | { 72 | $params['aiheader'][$name] = Shop::get( $name )->header(); 73 | $params['aibody'][$name] = Shop::get( $name )->body(); 74 | } 75 | 76 | return Response::view( Shop::template( 'checkout.update' ), $params ) 77 | ->header( 'Cache-Control', 'no-store, max-age=0' ); 78 | } 79 | } -------------------------------------------------------------------------------- /src/Controller/GraphqlController.php: -------------------------------------------------------------------------------- 1 | authorize( 'admin', [GraphqlController::class, array_merge( config( 'shop.roles', ['admin', 'editor'] ), ['api'] )] ); 36 | } 37 | 38 | $site = Route::input( 'site', Request::get( 'site', config( 'shop.mshop.locale.site', 'default' ) ) ); 39 | $lang = Request::get( 'locale', config( 'app.locale', 'en' ) ); 40 | 41 | $context = app( 'aimeos.context' )->get( false, 'backend' ); 42 | $context->setI18n( app( 'aimeos.i18n' )->get( array( $lang, 'en' ) ) ); 43 | $context->setLocale( app( 'aimeos.locale' )->getBackend( $context, $site ) ); 44 | $context->setView( app( 'aimeos.view' )->create( $context, [], $lang ) ); 45 | 46 | return \Aimeos\Admin\Graphql::execute( $context, $request ); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/Controller/JqadmController.php: -------------------------------------------------------------------------------- 1 | authorize( 'admin', [JqadmController::class, config( 'shop.roles', ['admin', 'editor'] )] ); 34 | } 35 | 36 | $files = []; 37 | $aimeos = app( 'aimeos' )->get(); 38 | $name = Route::input( 'name', Request::get( 'name' ) ); 39 | 40 | foreach( $aimeos->getCustomPaths( 'admin/jqadm' ) as $base => $paths ) 41 | { 42 | foreach( $paths as $path ) { 43 | $files[] = $base . '/' . $path; 44 | } 45 | } 46 | 47 | $response = response( \Aimeos\Admin\JQAdm\Bundle::get( $files, $name ) ); 48 | 49 | if( str_ends_with( $name, 'js' ) ) { 50 | $response->header( 'Content-Type', 'application/javascript' ); 51 | } elseif( str_ends_with( $name, 'css' ) ) { 52 | $response->header( 'Content-Type', 'text/css' ); 53 | } 54 | 55 | return $response->header( 'Cache-Control', 'public, max-age=3600' ); 56 | } 57 | 58 | 59 | /** 60 | * Returns the HTML code for batch operations on a resource object 61 | * 62 | * @return string Generated output 63 | */ 64 | public function batchAction() 65 | { 66 | if( config( 'shop.authorize', true ) ) { 67 | $this->authorize( 'admin', [JqadmController::class, config( 'shop.roles', ['admin', 'editor'] )] ); 68 | } 69 | 70 | $cntl = $this->createAdmin(); 71 | 72 | if( ( $html = $cntl->batch() ) == '' ) { 73 | return $cntl->response(); 74 | } 75 | 76 | return $this->getHtml( (string) $html ); 77 | } 78 | 79 | 80 | /** 81 | * Returns the HTML code for a copy of a resource object 82 | * 83 | * @return string Generated output 84 | */ 85 | public function copyAction() 86 | { 87 | if( config( 'shop.authorize', true ) ) { 88 | $this->authorize( 'admin', [JqadmController::class, config( 'shop.roles', ['admin', 'editor'] )] ); 89 | } 90 | 91 | $cntl = $this->createAdmin(); 92 | 93 | if( ( $html = $cntl->copy() ) == '' ) { 94 | return $cntl->response(); 95 | } 96 | 97 | return $this->getHtml( (string) $html ); 98 | } 99 | 100 | 101 | /** 102 | * Returns the HTML code for a new resource object 103 | * 104 | * @return string Generated output 105 | */ 106 | public function createAction() 107 | { 108 | if( config( 'shop.authorize', true ) ) { 109 | $this->authorize( 'admin', [JqadmController::class, config( 'shop.roles', ['admin', 'editor'] )] ); 110 | } 111 | 112 | $cntl = $this->createAdmin(); 113 | 114 | if( ( $html = $cntl->create() ) == '' ) { 115 | return $cntl->response(); 116 | } 117 | 118 | return $this->getHtml( (string) $html ); 119 | } 120 | 121 | 122 | /** 123 | * Deletes the resource object or a list of resource objects 124 | * 125 | * @return string Generated output 126 | */ 127 | public function deleteAction() 128 | { 129 | if( config( 'shop.authorize', true ) ) { 130 | $this->authorize( 'admin', [JqadmController::class, config( 'shop.roles', ['admin', 'editor'] )] ); 131 | } 132 | 133 | $cntl = $this->createAdmin(); 134 | 135 | if( ( $html = $cntl->delete() ) == '' ) { 136 | return $cntl->response(); 137 | } 138 | 139 | return $this->getHtml( (string) $html ); 140 | } 141 | 142 | 143 | /** 144 | * Exports the data for a resource object 145 | * 146 | * @return string Generated output 147 | */ 148 | public function exportAction() 149 | { 150 | if( config( 'shop.authorize', true ) ) { 151 | $this->authorize( 'admin', [JqadmController::class, config( 'shop.roles', ['admin', 'editor'] )] ); 152 | } 153 | 154 | $cntl = $this->createAdmin(); 155 | 156 | if( ( $html = $cntl->export() ) == '' ) { 157 | return $cntl->response(); 158 | } 159 | 160 | return $this->getHtml( (string) $html ); 161 | } 162 | 163 | 164 | /** 165 | * Returns the HTML code for the requested resource object 166 | * 167 | * @return string Generated output 168 | */ 169 | public function getAction() 170 | { 171 | if( config( 'shop.authorize', true ) ) { 172 | $this->authorize( 'admin', [JqadmController::class, config( 'shop.roles', ['admin', 'editor'] )] ); 173 | } 174 | 175 | $cntl = $this->createAdmin(); 176 | 177 | if( ( $html = $cntl->get() ) == '' ) { 178 | return $cntl->response(); 179 | } 180 | 181 | return $this->getHtml( (string) $html ); 182 | } 183 | 184 | 185 | /** 186 | * Imports the data for a resource object 187 | * 188 | * @return string Generated output 189 | */ 190 | public function importAction() 191 | { 192 | if( config( 'shop.authorize', true ) ) { 193 | $this->authorize( 'admin', [JqadmController::class, config( 'shop.roles', ['admin', 'editor'] )] ); 194 | } 195 | 196 | $cntl = $this->createAdmin(); 197 | 198 | if( ( $html = $cntl->import() ) == '' ) { 199 | return $cntl->response(); 200 | } 201 | 202 | return $this->getHtml( (string) $html ); 203 | } 204 | 205 | 206 | /** 207 | * Saves a new resource object 208 | * 209 | * @return string Generated output 210 | */ 211 | public function saveAction() 212 | { 213 | if( config( 'shop.authorize', true ) ) { 214 | $this->authorize( 'admin', [JqadmController::class, config( 'shop.roles', ['admin', 'editor'] )] ); 215 | } 216 | 217 | $cntl = $this->createAdmin(); 218 | 219 | if( ( $html = $cntl->save() ) == '' ) { 220 | return $cntl->response(); 221 | } 222 | 223 | return $this->getHtml( (string) $html ); 224 | } 225 | 226 | 227 | /** 228 | * Returns the HTML code for a list of resource objects 229 | * 230 | * @return string Generated output 231 | */ 232 | public function searchAction() 233 | { 234 | if( config( 'shop.authorize', true ) ) { 235 | $this->authorize( 'admin', [JqadmController::class, config( 'shop.roles', ['admin', 'editor'] )] ); 236 | } 237 | 238 | $cntl = $this->createAdmin(); 239 | 240 | if( ( $html = $cntl->search() ) == '' ) { 241 | return $cntl->response(); 242 | } 243 | 244 | return $this->getHtml( (string) $html ); 245 | } 246 | 247 | 248 | /** 249 | * Returns the resource controller 250 | * 251 | * @return \Aimeos\Admin\JQAdm\Iface JQAdm client 252 | */ 253 | protected function createAdmin() : \Aimeos\Admin\JQAdm\Iface 254 | { 255 | $site = Route::input( 'site', Request::get( 'site', config( 'shop.mshop.locale.site', 'default' ) ) ); 256 | $lang = Request::get( 'locale', config( 'app.locale', 'en' ) ); 257 | $resource = Route::input( 'resource' ); 258 | 259 | $aimeos = app( 'aimeos' )->get(); 260 | 261 | $context = app( 'aimeos.context' )->get( false, 'backend' ); 262 | $context->setI18n( app( 'aimeos.i18n' )->get( array( $lang, 'en' ) ) ); 263 | $context->setLocale( app( 'aimeos.locale' )->getBackend( $context, $site )->setLanguageId( $lang ) ); 264 | 265 | $siteManager = \Aimeos\MShop::create( $context, 'locale/site' ); 266 | $context->config()->apply( $siteManager->find( $site )->getConfig() ); 267 | 268 | $paths = $aimeos->getTemplatePaths( 'admin/jqadm/templates', $context->locale()->getSiteItem()->getTheme() ); 269 | $view = app( 'aimeos.view' )->create( $context, $paths, $lang ); 270 | 271 | $view->aimeosType = 'Laravel'; 272 | $view->aimeosVersion = app( 'aimeos' )->getVersion(); 273 | $view->aimeosExtensions = implode( ',', $aimeos->getExtensions() ); 274 | 275 | $context->setView( $view ); 276 | 277 | return \Aimeos\Admin\JQAdm::create( $context, $aimeos, $resource ); 278 | } 279 | 280 | 281 | /** 282 | * Returns the generated HTML code 283 | * 284 | * @param string $content Content from admin client 285 | * @return \Illuminate\Contracts\View\View View for rendering the output 286 | */ 287 | protected function getHtml( string $content ) 288 | { 289 | $site = Route::input( 'site', Request::get( 'site', config( 'shop.mshop.locale.site', 'default' ) ) ); 290 | $lang = Request::get( 'locale', config( 'app.locale', 'en' ) ); 291 | 292 | return View::make( 'shop::jqadm.index', [ 293 | 'content' => $content, 294 | 'site' => $site, 295 | 'locale' => $lang, 296 | 'localeDir' => in_array( $lang, ['ar', 'az', 'dv', 'fa', 'he', 'ku', 'ur'] ) ? 'rtl' : 'ltr', 297 | 'theme' => ( $_COOKIE['aimeos_backend_theme'] ?? '' ) == 'dark' ? 'dark' : 'light' 298 | ] ); 299 | } 300 | } 301 | -------------------------------------------------------------------------------- /src/Controller/JsonadmController.php: -------------------------------------------------------------------------------- 1 | authorize( 'admin', [JsonadmController::class, array_merge( config( 'shop.roles', ['admin', 'editor'] ), ['api'] )] ); 37 | } 38 | 39 | return $this->createAdmin()->delete( $request, ( new Psr17Factory )->createResponse() ); 40 | } 41 | 42 | 43 | /** 44 | * Returns the requested resource object or list of resource objects 45 | * 46 | * @param \Psr\Http\Message\ServerRequestInterface $request Request object 47 | * @return \Psr\Http\Message\ResponseInterface Response object containing the generated output 48 | */ 49 | public function getAction( ServerRequestInterface $request ) 50 | { 51 | if( config( 'shop.authorize', true ) ) { 52 | $this->authorize( 'admin', [JsonadmController::class, array_merge( config( 'shop.roles', ['admin', 'editor'] ), ['api'] )] ); 53 | } 54 | 55 | return $this->createAdmin()->get( $request, ( new Psr17Factory )->createResponse() ); 56 | } 57 | 58 | 59 | /** 60 | * Updates a resource object or a list of resource objects 61 | * 62 | * @param \Psr\Http\Message\ServerRequestInterface $request Request object 63 | * @return \Psr\Http\Message\ResponseInterface Response object containing the generated output 64 | */ 65 | public function patchAction( ServerRequestInterface $request ) 66 | { 67 | if( config( 'shop.authorize', true ) ) { 68 | $this->authorize( 'admin', [JsonadmController::class, array_merge( config( 'shop.roles', ['admin', 'editor'] ), ['api'] )] ); 69 | } 70 | 71 | return $this->createAdmin()->patch( $request, ( new Psr17Factory )->createResponse() ); 72 | } 73 | 74 | 75 | /** 76 | * Creates a new resource object or a list of resource objects 77 | * 78 | * @param \Psr\Http\Message\ServerRequestInterface $request Request object 79 | * @return \Psr\Http\Message\ResponseInterface Response object containing the generated output 80 | */ 81 | public function postAction( ServerRequestInterface $request ) 82 | { 83 | if( config( 'shop.authorize', true ) ) { 84 | $this->authorize( 'admin', [JsonadmController::class, array_merge( config( 'shop.roles', ['admin', 'editor'] ), ['api'] )] ); 85 | } 86 | 87 | return $this->createAdmin()->post( $request, ( new Psr17Factory )->createResponse() ); 88 | } 89 | 90 | 91 | /** 92 | * Creates or updates a single resource object 93 | * 94 | * @param \Psr\Http\Message\ServerRequestInterface $request Request object 95 | * @return \Psr\Http\Message\ResponseInterface Response object containing the generated output 96 | */ 97 | public function putAction( ServerRequestInterface $request ) 98 | { 99 | if( config( 'shop.authorize', true ) ) { 100 | $this->authorize( 'admin', [JsonadmController::class, array_merge( config( 'shop.roles', ['admin', 'editor'] ), ['api'] )] ); 101 | } 102 | 103 | return $this->createAdmin()->put( $request, ( new Psr17Factory )->createResponse() ); 104 | } 105 | 106 | 107 | /** 108 | * Returns the available HTTP verbs and the resource URLs 109 | * 110 | * @param \Psr\Http\Message\ServerRequestInterface $request Request object 111 | * @return \Psr\Http\Message\ResponseInterface Response object containing the generated output 112 | */ 113 | public function optionsAction( ServerRequestInterface $request ) 114 | { 115 | if( config( 'shop.authorize', true ) ) { 116 | $this->authorize( 'admin', [JsonadmController::class, array_merge( config( 'shop.roles', ['admin', 'editor'] ), ['api'] )] ); 117 | } 118 | 119 | return $this->createAdmin()->options( $request, ( new Psr17Factory )->createResponse() ); 120 | } 121 | 122 | 123 | /** 124 | * Returns the JsonAdm client 125 | * 126 | * @return \Aimeos\Admin\JsonAdm\Iface JsonAdm client 127 | */ 128 | protected function createAdmin() : \Aimeos\Admin\JsonAdm\Iface 129 | { 130 | $site = Route::input( 'site', Request::get( 'site', config( 'shop.mshop.locale.site', 'default' ) ) ); 131 | $lang = Request::get( 'locale', config( 'app.locale', 'en' ) ); 132 | $resource = Route::input( 'resource', '' ); 133 | 134 | $aimeos = app( 'aimeos' )->get(); 135 | $templatePaths = $aimeos->getTemplatePaths( 'admin/jsonadm/templates' ); 136 | 137 | $context = app( 'aimeos.context' )->get( false, 'backend' ); 138 | $context->setI18n( app( 'aimeos.i18n' )->get( array( $lang, 'en' ) ) ); 139 | $context->setLocale( app( 'aimeos.locale' )->getBackend( $context, $site ) ); 140 | $context->setView( app( 'aimeos.view' )->create( $context, $templatePaths, $lang ) ); 141 | 142 | return \Aimeos\Admin\JsonAdm::create( $context, $aimeos, $resource ); 143 | } 144 | } 145 | -------------------------------------------------------------------------------- /src/Controller/JsonapiController.php: -------------------------------------------------------------------------------- 1 | createClient()->delete( $request, ( new Psr17Factory )->createResponse() ); 32 | } 33 | 34 | 35 | /** 36 | * Returns the requested resource object or list of resource objects 37 | * 38 | * @param \Psr\Http\Message\ServerRequestInterface $request Request object 39 | * @return \Psr\Http\Message\ResponseInterface Response object containing the generated output 40 | */ 41 | public function getAction( ServerRequestInterface $request ) 42 | { 43 | return $this->createClient()->get( $request, ( new Psr17Factory )->createResponse() ); 44 | } 45 | 46 | 47 | /** 48 | * Updates a resource object or a list of resource objects 49 | * 50 | * @param \Psr\Http\Message\ServerRequestInterface $request Request object 51 | * @return \Psr\Http\Message\ResponseInterface Response object containing the generated output 52 | */ 53 | public function patchAction( ServerRequestInterface $request ) 54 | { 55 | return $this->createClient()->patch( $request, ( new Psr17Factory )->createResponse() ); 56 | } 57 | 58 | 59 | /** 60 | * Creates a new resource object or a list of resource objects 61 | * 62 | * @param \Psr\Http\Message\ServerRequestInterface $request Request object 63 | * @return \Psr\Http\Message\ResponseInterface Response object containing the generated output 64 | */ 65 | public function postAction( ServerRequestInterface $request ) 66 | { 67 | return $this->createClient()->post( $request, ( new Psr17Factory )->createResponse() ); 68 | } 69 | 70 | 71 | /** 72 | * Creates or updates a single resource object 73 | * 74 | * @param \Psr\Http\Message\ServerRequestInterface $request Request object 75 | * @return \Psr\Http\Message\ResponseInterface Response object containing the generated output 76 | */ 77 | public function putAction( ServerRequestInterface $request ) 78 | { 79 | return $this->createClient()->put( $request, ( new Psr17Factory )->createResponse() ); 80 | } 81 | 82 | 83 | /** 84 | * Returns the available HTTP verbs and the resource URLs 85 | * 86 | * @param \Psr\Http\Message\ServerRequestInterface $request Request object 87 | * @return \Psr\Http\Message\ResponseInterface Response object containing the generated output 88 | */ 89 | public function optionsAction( ServerRequestInterface $request ) 90 | { 91 | return $this->createClient()->options( $request, ( new Psr17Factory )->createResponse() ) 92 | ->withHeader( 'access-control-allow-headers', 'authorization,content-type' ) 93 | ->withHeader( 'access-control-allow-methods', 'DELETE, GET, OPTIONS, PATCH, POST, PUT' ) 94 | ->withHeader( 'access-control-allow-origin', $request->getHeaderLine( 'origin' ) ); 95 | } 96 | 97 | 98 | /** 99 | * Returns the JsonAdm client 100 | * 101 | * @return \Aimeos\Client\JsonApi\Iface JsonApi client 102 | */ 103 | protected function createClient() : \Aimeos\Client\JsonApi\Iface 104 | { 105 | $resource = Route::input( 'resource' ); 106 | $related = Route::input( 'related', Request::get( 'related' ) ); 107 | 108 | $aimeos = app( 'aimeos' )->get(); 109 | $context = app( 'aimeos.context' )->get(); 110 | $tmplPaths = $aimeos->getTemplatePaths( 'client/jsonapi/templates', $context->locale()->getSiteItem()->getTheme() ); 111 | 112 | $langid = $context->locale()->getLanguageId(); 113 | 114 | $context->setView( app( 'aimeos.view' )->create( $context, $tmplPaths, $langid ) ); 115 | 116 | return \Aimeos\Client\JsonApi::create( $context, $resource . '/' . $related ); 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /src/Controller/PageController.php: -------------------------------------------------------------------------------- 1 | 'page-index']; 30 | 31 | foreach( app( 'config' )->get( 'shop.page.cms', ['cms/page', 'catalog/tree', 'basket/mini'] ) as $name ) 32 | { 33 | $params['aiheader'][$name] = Shop::get( $name )->header(); 34 | $params['aibody'][$name] = Shop::get( $name )->body(); 35 | } 36 | 37 | if( empty( $params['aibody']['cms/page'] ) ) { 38 | abort( 404 ); 39 | } 40 | 41 | return Response::view( Shop::template( 'page.index' ), $params ) 42 | ->header( 'Cache-Control', 'private, max-age=10' ); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/Controller/ResolveController.php: -------------------------------------------------------------------------------- 1 | product( $context, $path ); 46 | }; 47 | 48 | self::$fcn['catalog'] = function( \Aimeos\MShop\ContextIface $context, string $path ) { 49 | return $this->catalog( $context, $path ); 50 | }; 51 | } 52 | 53 | 54 | /** 55 | * Returns the html of the resolved URLs. 56 | * 57 | * @param \Illuminate\Http\Request $request Laravel request object 58 | * @return \Illuminate\Http\Response Laravel response object containing the generated output 59 | */ 60 | public function indexAction( \Illuminate\Http\Request $request ) 61 | { 62 | if( ( $path = $request->route( 'path', $request->input( 'path' ) ) ) === null ) { 63 | abort( 404 ); 64 | } 65 | 66 | $context = app( 'aimeos.context' )->get( true ); 67 | 68 | foreach( array_reverse( self::$fcn ) as $name => $fcn ) 69 | { 70 | try { 71 | return call_user_func_array( $fcn->bindTo( $this, static::class ), [$context, $path] ); 72 | } catch( \Exception $e ) { 73 | if( $e->getCode() !== 404 ) throw $e; 74 | } 75 | } 76 | 77 | abort( 404 ); 78 | } 79 | 80 | 81 | /** 82 | * Returns the category page if the give path can be resolved to a category. 83 | * 84 | * @param \Aimeos\MShop\ContextIface $context Context object 85 | * @param string $path URL path to resolve 86 | * @return Response Response object 87 | */ 88 | protected function catalog( \Aimeos\MShop\ContextIface $context, string $path ) : ?\Illuminate\Http\Response 89 | { 90 | $item = \Aimeos\Controller\Frontend::create( $context, 'catalog' )->resolve( $path ); 91 | $view = Shop::view(); 92 | 93 | $params = ( Route::current() ? Route::current()->parameters() : [] ) + Request::all(); 94 | $params += ['path' => $path, 'f_name' => $path, 'f_catid' => $item->getId(), 'page' => 'page-catalog-tree']; 95 | 96 | $helper = new \Aimeos\Base\View\Helper\Param\Standard( $view, $params ); 97 | $view->addHelper( 'param', $helper ); 98 | 99 | foreach( app( 'config' )->get( 'shop.page.catalog-tree' ) as $name ) 100 | { 101 | $client = Shop::get( $name ); 102 | 103 | $params['aiheader'][$name] = $client->header(); 104 | $params['aibody'][$name] = $client->body(); 105 | } 106 | 107 | return Response::view( Shop::template( 'catalog.tree' ), $params ) 108 | ->header( 'Cache-Control', 'private, max-age=' . config( 'shop.cache_maxage', 30 ) ); 109 | } 110 | 111 | 112 | /** 113 | * Returns the CMS page if the give path can be resolved to a CMS page. 114 | * 115 | * @param \Aimeos\MShop\ContextIface $context Context object 116 | * @param string $path URL path to resolve 117 | * @return Response Response object 118 | */ 119 | protected function cms( \Aimeos\MShop\ContextIface $context, string $path ) : ?\Illuminate\Http\Response 120 | { 121 | \Aimeos\Controller\Frontend::create( $context, 'cms' )->resolve( $path ); 122 | $view = Shop::view(); 123 | 124 | $params = ( Route::current() ? Route::current()->parameters() : [] ) + Request::all(); 125 | $params += ['path' => $path, 'page' => 'page-index']; 126 | 127 | $helper = new \Aimeos\Base\View\Helper\Param\Standard( $view, $params ); 128 | $view->addHelper( 'param', $helper ); 129 | 130 | foreach( app( 'config' )->get( 'shop.page.cms' ) as $name ) 131 | { 132 | $client = Shop::get( $name ); 133 | 134 | $params['aiheader'][$name] = $client->header(); 135 | $params['aibody'][$name] = $client->body(); 136 | } 137 | 138 | return Response::view( Shop::template( 'page.index' ), $params ) 139 | ->header( 'Cache-Control', 'private, max-age=' . config( 'shop.cache_maxage', 30 ) ); 140 | } 141 | 142 | 143 | /** 144 | * Returns the product page if the give path can be resolved to a product. 145 | * 146 | * @param \Aimeos\MShop\ContextIface $context Context object 147 | * @param string $path URL path to resolve 148 | * @return Response Response object 149 | */ 150 | protected function product( \Aimeos\MShop\ContextIface $context, string $path ) : ?\Illuminate\Http\Response 151 | { 152 | $item = \Aimeos\Controller\Frontend::create( $context, 'product' )->resolve( $path ); 153 | $view = Shop::view(); 154 | 155 | $params = ( Route::current() ? Route::current()->parameters() : [] ) + Request::all(); 156 | $params += ['path' => $path, 'd_name' => $path, 'd_prodid' => $item->getId(), 'page' => 'page-catalog-detail']; 157 | 158 | $helper = new \Aimeos\Base\View\Helper\Param\Standard( $view, $params ); 159 | $view->addHelper( 'param', $helper ); 160 | 161 | foreach( app( 'config' )->get( 'shop.page.catalog-detail' ) as $name ) 162 | { 163 | $client = Shop::get( $name ); 164 | 165 | $params['aiheader'][$name] = $client->header(); 166 | $params['aibody'][$name] = $client->body(); 167 | } 168 | 169 | return Response::view( Shop::template( 'catalog.detail' ), $params ) 170 | ->header( 'Cache-Control', 'private, max-age=' . config( 'shop.cache_maxage', 30 ) ); 171 | } 172 | } -------------------------------------------------------------------------------- /src/Controller/SupplierController.php: -------------------------------------------------------------------------------- 1 | 'page-supplier-detail']; 31 | 32 | foreach( app( 'config' )->get( 'shop.page.supplier-detail' ) as $name ) 33 | { 34 | $params['aiheader'][$name] = Shop::get( $name )->header(); 35 | $params['aibody'][$name] = Shop::get( $name )->body(); 36 | } 37 | 38 | return Response::view( Shop::template( 'supplier.detail' ), $params ) 39 | ->header( 'Cache-Control', 'private, max-age=10' ); 40 | } 41 | catch( \Exception $e ) 42 | { 43 | if( $e->getCode() >= 400 && $e->getCode() < 600 ) { abort( $e->getCode() ); } 44 | throw $e; 45 | } 46 | } 47 | } -------------------------------------------------------------------------------- /src/Facades/Attribute.php: -------------------------------------------------------------------------------- 1 | loadViewsFrom( dirname( __DIR__ ) . '/views', 'shop' ); 37 | $this->loadRoutesFrom( dirname( __DIR__ ) . '/routes/aimeos.php' ); 38 | 39 | $this->publishes( [dirname( __DIR__ ) . '/config/shop.php' => config_path( 'shop.php' )], 'config' ); 40 | $this->publishes( [dirname( __DIR__ ) . '/public' => public_path( 'vendor/shop' )], 'public' ); 41 | 42 | $class = '\Composer\InstalledVersions'; 43 | 44 | if( class_exists( $class ) && method_exists( $class, 'getInstalledPackagesByType' ) ) 45 | { 46 | foreach( \Composer\InstalledVersions::getInstalledPackagesByType( 'aimeos-extension' ) as $package ) 47 | { 48 | $path = realpath( \Composer\InstalledVersions::getInstallPath( $package ) ); 49 | 50 | if( file_exists( $path . '/themes/client/html' ) ) { 51 | $this->publishes( [$path . '/themes/client/html' => public_path( 'vendor/shop/themes' )], 'public' ); 52 | } 53 | } 54 | } 55 | } 56 | 57 | 58 | /** 59 | * Register the service provider. 60 | * 61 | * @return void 62 | */ 63 | public function register() 64 | { 65 | $this->mergeConfigFrom( dirname( __DIR__ ) . '/config/default.php', 'shop' ); 66 | 67 | $this->app->scoped( 'aimeos', function( $app ) { 68 | return new \Aimeos\Shop\Base\Aimeos( $app['config'] ); 69 | }); 70 | 71 | $this->app->scoped( 'aimeos.config', function( $app ) { 72 | return new \Aimeos\Shop\Base\Config( $app['config'], $app['aimeos'] ); 73 | }); 74 | 75 | $this->app->scoped( 'aimeos.i18n', function( $app ) { 76 | return new \Aimeos\Shop\Base\I18n( $this->app['config'], $app['aimeos'] ); 77 | }); 78 | 79 | $this->app->scoped( 'aimeos.locale', function( $app ) { 80 | return new \Aimeos\Shop\Base\Locale( $app['config'] ); 81 | }); 82 | 83 | $this->app->scoped( 'aimeos.context', function( $app ) { 84 | return new \Aimeos\Shop\Base\Context( $app['session.store'], $app['aimeos.config'], $app['aimeos.locale'], $app['aimeos.i18n'] ); 85 | }); 86 | 87 | $this->app->scoped( 'aimeos.support', function( $app ) { 88 | return new \Aimeos\Shop\Base\Support( $app['aimeos.context'], $app['aimeos.locale'] ); 89 | }); 90 | 91 | $this->app->scoped( 'aimeos.view', function( $app ) { 92 | return new \Aimeos\Shop\Base\View( $app['config'], $app['aimeos.i18n'], $app['aimeos.support'] ); 93 | }); 94 | 95 | $this->app->scoped( 'aimeos.shop', function( $app ) { 96 | return new \Aimeos\Shop\Base\Shop( $app['aimeos'], $app['aimeos.context'], $app['aimeos.view'] ); 97 | }); 98 | 99 | 100 | $this->app->bind( 'aimeos.frontend.attribute', function( $app ) { 101 | return \Aimeos\Controller\Frontend::create( $app['aimeos.context'], 'attribute' ); 102 | }); 103 | 104 | $this->app->bind( 'aimeos.frontend.basket', function( $app ) { 105 | return \Aimeos\Controller\Frontend::create( $app['aimeos.context'], 'basket' ); 106 | }); 107 | 108 | $this->app->bind( 'aimeos.frontend.catalog', function( $app ) { 109 | return \Aimeos\Controller\Frontend::create( $app['aimeos.context'], 'catalog' ); 110 | }); 111 | 112 | $this->app->bind( 'aimeos.frontend.cms', function( $app ) { 113 | return \Aimeos\Controller\Frontend::create( $app['aimeos.context'], 'cms' ); 114 | }); 115 | 116 | $this->app->bind( 'aimeos.frontend.customer', function( $app ) { 117 | return \Aimeos\Controller\Frontend::create( $app['aimeos.context'], 'customer' ); 118 | }); 119 | 120 | $this->app->bind( 'aimeos.frontend.locale', function( $app ) { 121 | return \Aimeos\Controller\Frontend::create( $app['aimeos.context'], 'locale' ); 122 | }); 123 | 124 | $this->app->bind( 'aimeos.frontend.order', function( $app ) { 125 | return \Aimeos\Controller\Frontend::create( $app['aimeos.context'], 'order' ); 126 | }); 127 | 128 | $this->app->bind( 'aimeos.frontend.product', function( $app ) { 129 | return \Aimeos\Controller\Frontend::create( $app['aimeos.context'], 'product' ); 130 | }); 131 | 132 | $this->app->bind( 'aimeos.frontend.service', function( $app ) { 133 | return \Aimeos\Controller\Frontend::create( $app['aimeos.context'], 'service' ); 134 | }); 135 | 136 | $this->app->bind( 'aimeos.frontend.stock', function( $app ) { 137 | return \Aimeos\Controller\Frontend::create( $app['aimeos.context'], 'stock' ); 138 | }); 139 | 140 | $this->app->bind( 'aimeos.frontend.subscription', function( $app ) { 141 | return \Aimeos\Controller\Frontend::create( $app['aimeos.context'], 'subscription' ); 142 | }); 143 | 144 | $this->app->bind( 'aimeos.frontend.supplier', function( $app ) { 145 | return \Aimeos\Controller\Frontend::create( $app['aimeos.context'], 'supplier' ); 146 | }); 147 | 148 | 149 | $this->commands( array( 150 | 'Aimeos\Shop\Command\AccountCommand', 151 | 'Aimeos\Shop\Command\ClearCommand', 152 | 'Aimeos\Shop\Command\SetupCommand', 153 | 'Aimeos\Shop\Command\JobsCommand', 154 | ) ); 155 | } 156 | 157 | 158 | /** 159 | * Get the services provided by the provider. 160 | * 161 | * @return array 162 | */ 163 | public function provides() 164 | { 165 | return array( 166 | 'Aimeos\Shop\Base\Aimeos', 'Aimeos\Shop\Base\I18n', 'Aimeos\Shop\Base\Context', 167 | 'Aimeos\Shop\Base\Config', 'Aimeos\Shop\Base\Locale', 'Aimeos\Shop\Base\View', 168 | 'Aimeos\Shop\Base\Support', 'Aimeos\Shop\Base\Shop', 169 | 'Aimeos\Shop\Command\AccountCommand', 'Aimeos\Shop\Command\ClearCommand', 170 | 'Aimeos\Shop\Command\SetupCommand', 'Aimeos\Shop\Command\JobsCommand', 171 | ); 172 | } 173 | 174 | } -------------------------------------------------------------------------------- /src/helpers.php: -------------------------------------------------------------------------------- 1 | parameter( 'site', Request::get( 'site', $site ) ); 26 | $parameters['locale'] ??= $current->parameter( 'locale', Request::get( 'locale' ) ); 27 | $parameters['currency'] ??= $current->parameter( 'currency', Request::get( 'currency' ) ); 28 | } 29 | 30 | return app( 'url' )->route( $name, array_filter( $parameters ), $absolute ); 31 | } 32 | } 33 | 34 | 35 | if( !function_exists( 'aiconfig' ) ) 36 | { 37 | /** 38 | * Returns the configuration setting for the given key 39 | * 40 | * @param string $key Configuration key 41 | * @param mixed $default Default value if the configuration key isn't found 42 | * @return mixed Configuration value 43 | */ 44 | function aiconfig( $key, $default = null ) 45 | { 46 | return app( 'aimeos.config' )->get()->get( $key, $default ); 47 | } 48 | } 49 | 50 | 51 | if( !function_exists( 'aitrans' ) ) 52 | { 53 | /** 54 | * Translates the given message 55 | * 56 | * @param string $singular Message to translate 57 | * @param array $params List of paramters for replacing the placeholders in that order 58 | * @param string $domain Translation domain 59 | * @param string $locale ISO language code, maybe combine with ISO currency code, e.g. "en_US" 60 | * @return string Translated string 61 | */ 62 | function aitrans( $singular, array $params = array(), $domain = 'client', $locale = null ) 63 | { 64 | $i18n = app( 'aimeos.context' )->get()->i18n( $locale ); 65 | 66 | return vsprintf( $i18n->dt( $domain, $singular ), $params ); 67 | } 68 | } 69 | 70 | 71 | if( !function_exists( 'aitransplural' ) ) 72 | { 73 | /** 74 | * Translates the given messages based on the number 75 | * 76 | * @param string $singular Message to translate 77 | * @param string $plural Message for plural translations 78 | * @param integer $number Count of items to chose the correct plural translation 79 | * @param array $params List of paramters for replacing the placeholders in that order 80 | * @param string $domain Translation domain 81 | * @param string $locale ISO language code, maybe combine with ISO currency code, e.g. "en_US" 82 | * @return string Translated string 83 | */ 84 | function aitransplural( $singular, $plural, $number, array $params = array(), $domain = 'client', $locale = null ) 85 | { 86 | $i18n = app( 'aimeos.context' )->get()->i18n( $locale ); 87 | 88 | return vsprintf( $i18n->dn( $domain, $singular, $plural, $number ), $params ); 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /views/account/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('shop::base') 2 | 3 | @section('aimeos_header') 4 | {{ __( 'Profile') }} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | @stop 18 | 19 | @section('aimeos_head_basket') 20 | 21 | @stop 22 | 23 | @section('aimeos_head_nav') 24 | 25 | @stop 26 | 27 | @section('aimeos_head_locale') 28 | 29 | @stop 30 | 31 | @section('aimeos_head_search') 32 | 33 | @stop 34 | 35 | @section('aimeos_body') 36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
45 | @stop 46 | 47 | @section('aimeos_aside') 48 | 49 | @stop 50 | -------------------------------------------------------------------------------- /views/admin/index.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Aimeos administration interface 8 | 9 | 10 | 11 | 12 | 13 | 17 | 18 | 32 | 33 | 34 | 35 |
36 | {!! csrf_field() !!} 37 |
38 | 39 | 40 |
41 |
42 | 43 | 44 |
45 |
46 | 47 |
48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /views/base.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | @if( config('app.debug') !== true ) 10 | 11 | @endif 12 | 13 | @if( in_array(app()->getLocale(), ['ar', 'az', 'dv', 'fa', 'he', 'ku', 'ur']) ) 14 | 15 | @else 16 | 17 | @endif 18 | 19 | 20 | @yield('aimeos_header') 21 | 22 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 71 | 72 |
73 | @yield('aimeos_stage') 74 |
75 | @yield('aimeos_body') 76 | @yield('content') 77 |
78 |
79 | 80 | 81 | 119 | 120 | 121 | 122 | 123 |
124 |
125 | 126 | 127 | 128 | 129 | @yield('aimeos_scripts') 130 | 131 | 132 | -------------------------------------------------------------------------------- /views/basket/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('shop::base') 2 | 3 | @section('aimeos_header') 4 | {{ __( 'Basket') }} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | @stop 14 | 15 | @section('aimeos_head_nav') 16 | 17 | @stop 18 | 19 | @section('aimeos_head_locale') 20 | 21 | @stop 22 | 23 | @section('aimeos_head_search') 24 | 25 | @stop 26 | 27 | @section('aimeos_body') 28 |
29 | 30 | 31 | 32 |
33 | @stop 34 | -------------------------------------------------------------------------------- /views/catalog/count.blade.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /views/catalog/detail.blade.php: -------------------------------------------------------------------------------- 1 | @extends('shop::base') 2 | 3 | @section('aimeos_header') 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | @stop 12 | 13 | @section('aimeos_head_basket') 14 | 15 | @stop 16 | 17 | @section('aimeos_head_nav') 18 | 19 | @stop 20 | 21 | @section('aimeos_head_locale') 22 | 23 | @stop 24 | 25 | @section('aimeos_head_search') 26 | 27 | @stop 28 | 29 | @section('aimeos_stage') 30 | 31 | @stop 32 | 33 | @section('aimeos_body') 34 | 35 | 36 | @stop 37 | 38 | @section('aimeos_aside') 39 | 40 | @stop 41 | -------------------------------------------------------------------------------- /views/catalog/home.blade.php: -------------------------------------------------------------------------------- 1 | @extends('shop::base') 2 | 3 | @section('aimeos_header') 4 | 5 | 6 | 7 | 8 | 9 | 10 | @stop 11 | 12 | @section('aimeos_head_basket') 13 | 14 | @stop 15 | 16 | @section('aimeos_head_nav') 17 | 18 | @stop 19 | 20 | @section('aimeos_head_locale') 21 | 22 | @stop 23 | 24 | @section('aimeos_head_search') 25 | 26 | @stop 27 | 28 | @section('aimeos_body') 29 | 30 | 31 | @stop 32 | -------------------------------------------------------------------------------- /views/catalog/list.blade.php: -------------------------------------------------------------------------------- 1 | @extends('shop::base') 2 | 3 | @section('aimeos_header') 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | @stop 13 | 14 | @section('aimeos_head_basket') 15 | 16 | @stop 17 | 18 | @section('aimeos_head_nav') 19 | 20 | @stop 21 | 22 | @section('aimeos_head_locale') 23 | 24 | @stop 25 | 26 | @section('aimeos_head_search') 27 | 28 | @stop 29 | 30 | @section('aimeos_body') 31 | 32 |
33 |
34 | 38 |
39 | 40 |
41 |
42 |
43 | @stop 44 | -------------------------------------------------------------------------------- /views/catalog/session.blade.php: -------------------------------------------------------------------------------- 1 | @extends('shop::base') 2 | 3 | @section('aimeos_header') 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | @stop 12 | 13 | @section('aimeos_head_basket') 14 | 15 | @stop 16 | 17 | @section('aimeos_head_nav') 18 | 19 | @stop 20 | 21 | @section('aimeos_head_locale') 22 | 23 | @stop 24 | 25 | @section('aimeos_head_search') 26 | 27 | @stop 28 | 29 | @section('aimeos_body') 30 | 31 | @stop 32 | -------------------------------------------------------------------------------- /views/catalog/stock.blade.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /views/catalog/suggest.blade.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /views/catalog/tree.blade.php: -------------------------------------------------------------------------------- 1 | @extends('shop::base') 2 | 3 | @section('aimeos_header') 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | @stop 13 | 14 | @section('aimeos_head_basket') 15 | 16 | @stop 17 | 18 | @section('aimeos_head_nav') 19 | 20 | @stop 21 | 22 | @section('aimeos_head_locale') 23 | 24 | @stop 25 | 26 | @section('aimeos_head_search') 27 | 28 | @stop 29 | 30 | @section('aimeos_stage') 31 | 32 | @stop 33 | 34 | @section('aimeos_body') 35 |
36 |
37 | 41 |
42 | 43 | 44 |
45 |
46 |
47 | @stop 48 | -------------------------------------------------------------------------------- /views/checkout/confirm.blade.php: -------------------------------------------------------------------------------- 1 | @extends('shop::base') 2 | 3 | @section('aimeos_header') 4 | {{ __( 'Thank you') }} 5 | 6 | 7 | 8 | @stop 9 | 10 | @section('aimeos_head_nav') 11 | 12 | @stop 13 | 14 | @section('aimeos_head_search') 15 | 16 | @stop 17 | 18 | @section('aimeos_body') 19 |
20 | 21 |
22 | @stop 23 | -------------------------------------------------------------------------------- /views/checkout/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('shop::base') 2 | 3 | @section('aimeos_header') 4 | {{ __( 'Checkout') }} 5 | 6 | 7 | 8 | 9 | 10 | @stop 11 | 12 | @section('aimeos_nav') 13 | 14 | 15 | @stop 16 | 17 | @section('aimeos_body') 18 |
19 | 20 |
21 | @stop 22 | -------------------------------------------------------------------------------- /views/checkout/update.blade.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /views/jqadm/index.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | @if( config('app.debug') !== true ) 10 | 11 | @endif 12 | 13 | Aimeos administration interface 14 | 15 | 16 | @if( $localeDir == 'rtl' ) 17 | 18 | @else 19 | 20 | @endif 21 | 22 | 23 | 30 | 31 | 32 |
33 | 34 |
35 |
36 | {{ csrf_field() }} 37 | 38 | 39 | 40 |
41 |
42 |
43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /views/page/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('shop::base') 2 | 3 | @section('aimeos_header') 4 | 5 | 6 | 7 | @stop 8 | 9 | @section('aimeos_nav') 10 | 11 | @stop 12 | 13 | @section('aimeos_head') 14 | 15 | @stop 16 | 17 | @section('aimeos_body') 18 |
19 | 20 |
21 | @stop 22 | -------------------------------------------------------------------------------- /views/supplier/detail.blade.php: -------------------------------------------------------------------------------- 1 | @extends('shop::base') 2 | 3 | @section('aimeos_header') 4 | 5 | 6 | 7 | 8 | 9 | 10 | @stop 11 | 12 | @section('aimeos_head_basket') 13 | 14 | @stop 15 | 16 | @section('aimeos_head_nav') 17 | 18 | @stop 19 | 20 | @section('aimeos_head_locale') 21 | 22 | @stop 23 | 24 | @section('aimeos_head_search') 25 | 26 | @stop 27 | 28 | @section('aimeos_body') 29 |
30 | 31 | 32 |
33 | @stop 34 | --------------------------------------------------------------------------------