├── Resources ├── Private │ ├── Templates │ │ ├── Jqadm │ │ │ ├── File.html │ │ │ └── Index.html │ │ ├── Account │ │ │ ├── WatchComponent.html │ │ │ ├── FavoriteComponent.html │ │ │ ├── HistoryComponent.html │ │ │ ├── ProfileComponent.html │ │ │ ├── SubscriptionComponent.html │ │ │ └── Index.html │ │ ├── Basket │ │ │ ├── MiniComponent.html │ │ │ ├── RelatedComponent.html │ │ │ ├── StandardComponent.html │ │ │ └── Index.html │ │ ├── Catalog │ │ │ ├── CountComponent.html │ │ │ ├── DetailComponent.html │ │ │ ├── FilterComponent.html │ │ │ ├── ListComponent.html │ │ │ ├── StageComponent.html │ │ │ ├── StockComponent.html │ │ │ ├── Count.html │ │ │ ├── SessionComponent.html │ │ │ ├── Stock.html │ │ │ ├── Suggest.html │ │ │ ├── List.html │ │ │ ├── Tree.html │ │ │ └── Detail.html │ │ ├── Locale │ │ │ └── SelectComponent.html │ │ ├── Checkout │ │ │ ├── ConfirmComponent.html │ │ │ ├── StandardComponent.html │ │ │ ├── UpdateComponent.html │ │ │ ├── Update.html │ │ │ ├── Confirm.html │ │ │ └── Index.html │ │ └── Page │ │ │ ├── Privacy.html │ │ │ └── Terms.html │ ├── TypoScript │ │ └── Plugin.ts2 │ └── Layouts │ │ └── Default.html └── Public │ ├── mimeicons │ ├── text │ │ ├── css.png │ │ ├── csv.png │ │ ├── rdf.png │ │ ├── rtf.png │ │ ├── xml.png │ │ ├── html.png │ │ ├── mathml.png │ │ ├── plain.png │ │ ├── sgml.png │ │ ├── troff.png │ │ ├── x-chdr.png │ │ ├── x-csrc.png │ │ ├── x-dtd.png │ │ ├── x-hex.png │ │ ├── x-java.png │ │ ├── x-ldif.png │ │ ├── x-log.png │ │ ├── x-nfo.png │ │ ├── x-po.png │ │ ├── x-sql.png │ │ ├── x-tcl.png │ │ ├── x-tex.png │ │ ├── xmcd.png │ │ ├── calendar.png │ │ ├── enriched.png │ │ ├── vnd.abc.png │ │ ├── x-adasrc.png │ │ ├── x-bibtex.png │ │ ├── x-c++hdr.png │ │ ├── x-c++src.png │ │ ├── x-cmake.png │ │ ├── x-csharp.png │ │ ├── x-pascal.png │ │ ├── x-patch.png │ │ ├── x-python.png │ │ ├── x-readme.png │ │ ├── x-script.png │ │ ├── x-vcard.png │ │ ├── x-xslfo.png │ │ ├── directory.png │ │ ├── vcalendar.png │ │ ├── vnd.wap.wml.png │ │ ├── x-authors.png │ │ ├── x-changelog.png │ │ ├── x-copying.png │ │ ├── x-generic.png │ │ ├── x-haskell.png │ │ ├── x-install.png │ │ ├── x-makefile.png │ │ ├── x-objchdr.png │ │ ├── x-objcsrc.png │ │ ├── x-texinfo.png │ │ └── x-katefilelist.png │ ├── unknown.png │ ├── uri │ │ ├── mms.png │ │ ├── mmst.png │ │ ├── mmsu.png │ │ ├── pnm.png │ │ ├── rtspt.png │ │ └── rtspu.png │ ├── audio │ │ ├── ac3.png │ │ ├── midi.png │ │ ├── x-wav.png │ │ ├── prs.sid.png │ │ ├── x-adpcm.png │ │ ├── x-aiff.png │ │ ├── x-flac.png │ │ ├── x-flac+ogg.png │ │ ├── x-generic.png │ │ ├── x-monkey.png │ │ ├── x-speex+ogg.png │ │ └── vnd.rn-realvideo.png │ ├── image │ │ ├── x-eps.png │ │ ├── svg+xml.png │ │ ├── x-xfig.png │ │ ├── x-generic.png │ │ ├── svg+xml-compressed.png │ │ └── x-vnd.trolltech.qpicture.png │ ├── video │ │ ├── x-mng.png │ │ └── x-generic.png │ ├── fonts │ │ └── package.png │ ├── message │ │ ├── news.png │ │ └── rfc822.png │ ├── application │ │ ├── pdf.png │ │ ├── rtf.png │ │ ├── sxw.png │ │ ├── x-ar.png │ │ ├── x-m4.png │ │ ├── xml.png │ │ ├── xsd.png │ │ ├── zip.png │ │ ├── msword.png │ │ ├── x-ace.png │ │ ├── x-arc.png │ │ ├── x-arj.png │ │ ├── x-awk.png │ │ ├── x-bzip.png │ │ ├── x-cda.png │ │ ├── x-cpio.png │ │ ├── x-cue.png │ │ ├── x-deb.png │ │ ├── x-egon.png │ │ ├── x-gzip.png │ │ ├── x-java.png │ │ ├── x-k3b.png │ │ ├── x-lha.png │ │ ├── x-lyx.png │ │ ├── x-lzop.png │ │ ├── x-nzb.png │ │ ├── x-pak.png │ │ ├── x-perl.png │ │ ├── x-php.png │ │ ├── x-rar.png │ │ ├── x-rpm.png │ │ ├── x-ruby.png │ │ ├── x-siag.png │ │ ├── x-tar.png │ │ ├── x-tarz.png │ │ ├── x-tgif.png │ │ ├── x-tzo.png │ │ ├── x-wmf.png │ │ ├── x-zoo.png │ │ ├── pgp-keys.png │ │ ├── relaxng.png │ │ ├── rss+xml.png │ │ ├── x-archive.png │ │ ├── x-bzdvi.png │ │ ├── x-desktop.png │ │ ├── x-gzdvi.png │ │ ├── x-kcsrc.png │ │ ├── x-kontour.png │ │ ├── x-kplato.png │ │ ├── x-krita.png │ │ ├── x-kvtml.png │ │ ├── x-marble.png │ │ ├── x-mswrite.png │ │ ├── x-object.png │ │ ├── x-pem-key.png │ │ ├── x-plasma.png │ │ ├── x-subrip.png │ │ ├── x-trash.png │ │ ├── xhtml+xml.png │ │ ├── xslt+xml.png │ │ ├── illustrator.png │ │ ├── javascript.png │ │ ├── pkcs7-mime.png │ │ ├── postscript.png │ │ ├── vnd.scribus.png │ │ ├── x-cd-image.png │ │ ├── x-compress.png │ │ ├── x-designer.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-gnumeric.png │ │ ├── x-kgetlist.png │ │ ├── x-mplayer2.png │ │ ├── x-mswinurl.png │ │ ├── x-sharedlib.png │ │ ├── x-troff-man.png │ │ ├── x-zerosize.png │ │ ├── octet-stream.png │ │ ├── pgp-encrypted.png │ │ ├── vnd.ms-access.png │ │ ├── vnd.ms-excel.png │ │ ├── x-bittorrent.png │ │ ├── x-executable.png │ │ ├── x-font-type1.png │ │ ├── x-gzpostscript.png │ │ ├── x-java-applet.png │ │ ├── x-java-archive.png │ │ ├── x-javascript.png │ │ ├── x-mimearchive.png │ │ ├── x-qet-element.png │ │ ├── x-qet-project.png │ │ ├── x-quattropro.png │ │ ├── x-shellscript.png │ │ ├── x-smb-server.png │ │ ├── vnd.rn-realmedia.png │ │ ├── vnd.sun.xml.calc.png │ │ ├── vnd.sun.xml.draw.png │ │ ├── x-7z-compressed.png │ │ ├── x-compressed-tar.png │ │ ├── x-smb-workgroup.png │ │ ├── vnd.ms-powerpoint.png │ │ ├── x-executable-script.png │ │ ├── x-ms-dos-executable.png │ │ ├── x-python-bytecode.png │ │ ├── x-shockwave-flash.png │ │ ├── vnd.stardivision.calc.png │ │ ├── vnd.stardivision.draw.png │ │ ├── x-applix-spreadsheet.png │ │ ├── x-bzip-compressed-tar.png │ │ ├── x-lzma-compressed-tar.png │ │ ├── vnd.sun.xml.calc.template.png │ │ ├── vnd.sun.xml.draw.template.png │ │ ├── vnd.oasis.opendocument.chart.png │ │ ├── vnd.oasis.opendocument.image.png │ │ ├── vnd.oasis.opendocument.text.png │ │ ├── vnd.oasis.opendocument.database.png │ │ ├── vnd.oasis.opendocument.formula.png │ │ ├── vnd.oasis.opendocument.graphics.png │ │ ├── vnd.oasis.opendocument.spreadsheet.png │ │ ├── vnd.oasis.opendocument.presentation.png │ │ ├── vnd.oasis.opendocument.presentation-template.png │ │ └── vnd.oasis.opendocument.spreadsheet-template.png │ ├── inode │ │ └── directory.png │ └── package │ │ └── x-generic.png │ └── themes │ └── elegance │ ├── media │ ├── plus.png │ ├── pswp.png │ ├── aimeos.png │ ├── basket.png │ ├── check.png │ ├── minus.png │ ├── select.png │ ├── social.png │ ├── preloader.gif │ ├── progress.gif │ ├── spinner.gif │ ├── arrow_big_left.png │ ├── detail-actions.png │ ├── animated-overlay.gif │ ├── arrow_big_right.png │ ├── arrow_small_left.png │ ├── arrow_small_top.png │ ├── arrow_small_bottom.png │ ├── arrow_small_right.png │ ├── ui-icons_222222_256x240.png │ ├── ui-icons_2e83ff_256x240.png │ ├── ui-icons_454545_256x240.png │ ├── ui-icons_888888_256x240.png │ ├── ui-icons_cd0a0a_256x240.png │ ├── prettyPhoto │ │ ├── default │ │ │ ├── loader.gif │ │ │ ├── sprite.png │ │ │ ├── sprite_x.png │ │ │ ├── sprite_y.png │ │ │ ├── sprite_next.png │ │ │ ├── sprite_prev.png │ │ │ └── default_thumb.png │ │ ├── facebook │ │ │ ├── btnNext.png │ │ │ ├── loader.gif │ │ │ ├── sprite.png │ │ │ ├── btnPrevious.png │ │ │ ├── contentPatternLeft.png │ │ │ ├── contentPatternTop.png │ │ │ ├── default_thumbnail.gif │ │ │ ├── contentPatternBottom.png │ │ │ └── contentPatternRight.png │ │ ├── dark_rounded │ │ │ ├── loader.gif │ │ │ ├── sprite.png │ │ │ ├── btnNext.png │ │ │ ├── btnPrevious.png │ │ │ ├── contentPattern.png │ │ │ └── default_thumbnail.gif │ │ ├── dark_square │ │ │ ├── btnNext.png │ │ │ ├── loader.gif │ │ │ ├── sprite.png │ │ │ ├── btnPrevious.png │ │ │ ├── contentPattern.png │ │ │ └── default_thumbnail.gif │ │ ├── light_square │ │ │ ├── loader.gif │ │ │ ├── sprite.png │ │ │ ├── btnNext.png │ │ │ ├── btnPrevious.png │ │ │ └── default_thumbnail.gif │ │ └── light_rounded │ │ │ ├── btnNext.png │ │ │ ├── loader.gif │ │ │ ├── sprite.png │ │ │ ├── btnPrevious.png │ │ │ └── default_thumbnail.gif │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ ├── ui-bg_flat_75_ffffff_40x100.png │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ ├── ui-bg_glass_65_ffffff_1x400.png │ ├── ui-bg_glass_75_dadada_1x400.png │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ ├── ui-bg_glass_95_fef1ec_1x400.png │ ├── ui-bg_highlight-soft_75_cccccc_1x100.png │ └── pswp.svg │ ├── aimeos.js │ └── email.css ├── .gitignore ├── Configuration ├── Caches.yaml ├── Routes.Update.yaml ├── Objects.yaml ├── Routes.Account.yaml ├── Routes.Jsonadm.yaml ├── Routes.Jsonapi.yaml ├── Routes.yaml ├── Routes.Jqadm.yaml ├── Routes.Default.yaml ├── NodeTypes.yaml └── Settings.yaml ├── .coveralls.yml ├── Tests ├── Functional │ ├── Controller │ │ ├── AccountControllerTest.php │ │ ├── JsonapiControllerTest.php │ │ └── JqadmControllerTest.php │ └── Command │ │ └── AimeosCommandControllerTest.php └── Unit │ ├── Flow │ └── AimeosTypeConverterTest.php │ ├── Base │ ├── AimeosTest.php │ ├── I18nTest.php │ ├── ConfigTest.php │ ├── PageTest.php │ └── ViewTest.php │ └── Controller │ ├── AdminControllerTest.php │ ├── LocaleControllerTest.php │ ├── BasketControllerTest.php │ ├── AccountControllerTest.php │ ├── CheckoutControllerTest.php │ └── AbstractControllerTest.php ├── Classes └── Aimeos │ ├── Shop │ ├── Controller │ │ ├── PageController.php │ │ ├── LocaleController.php │ │ ├── AdminController.php │ │ ├── BasketController.php │ │ ├── AbstractController.php │ │ ├── CheckoutController.php │ │ ├── AccountController.php │ │ ├── CatalogController.php │ │ └── JsonapiController.php │ ├── Composer │ │ └── InstallerScripts.php │ ├── ViewHelper │ │ ├── BlockViewHelper.php │ │ ├── ConfigViewHelper.php │ │ └── TranslateViewHelper.php │ └── Base │ │ ├── Aimeos.php │ │ ├── I18n.php │ │ ├── Config.php │ │ ├── Locale.php │ │ └── Shop.php │ └── Flow │ └── AimeosTypeConverter.php ├── .travis.yml ├── composer.json ├── .travis.sh └── README.md /Resources/Private/Templates/Jqadm/File.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Resources/Extensions 2 | composer.lock 3 | Packages 4 | vendor 5 | ext 6 | -------------------------------------------------------------------------------- /Configuration/Caches.yaml: -------------------------------------------------------------------------------- 1 | AimeosShop_Cache: 2 | frontend: Neos\Cache\Frontend\StringFrontend 3 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Account/WatchComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Basket/MiniComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Basket/RelatedComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Catalog/CountComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Catalog/DetailComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Catalog/FilterComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Catalog/ListComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Catalog/StageComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Catalog/StockComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Locale/SelectComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Account/FavoriteComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Account/HistoryComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Account/ProfileComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Basket/StandardComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Catalog/Count.html: -------------------------------------------------------------------------------- 1 | {aibody.catalog_count} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Catalog/SessionComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Catalog/Stock.html: -------------------------------------------------------------------------------- 1 | {aibody.catalog_stock} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Checkout/ConfirmComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Checkout/StandardComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Checkout/UpdateComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Account/SubscriptionComponent.html: -------------------------------------------------------------------------------- 1 | {output} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Catalog/Suggest.html: -------------------------------------------------------------------------------- 1 | {aibody.catalog_suggest} 2 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Checkout/Update.html: -------------------------------------------------------------------------------- 1 | {aibody.checkout_update} 2 | -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/css.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/css.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/csv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/csv.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/rdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/rdf.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/rtf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/rtf.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/xml.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/unknown.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/uri/mms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/uri/mms.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/uri/mmst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/uri/mmst.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/uri/mmsu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/uri/mmsu.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/uri/pnm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/uri/pnm.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/audio/ac3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/audio/ac3.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/audio/midi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/audio/midi.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/audio/x-wav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/audio/x-wav.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/image/x-eps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/image/x-eps.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/html.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/mathml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/mathml.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/plain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/plain.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/sgml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/sgml.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/troff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/troff.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-chdr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-chdr.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-csrc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-csrc.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-dtd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-dtd.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-hex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-hex.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-java.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-java.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-ldif.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-ldif.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-log.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-nfo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-nfo.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-po.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-po.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-sql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-sql.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-tcl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-tcl.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-tex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-tex.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/xmcd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/xmcd.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/uri/rtspt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/uri/rtspt.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/uri/rtspu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/uri/rtspu.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/video/x-mng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/video/x-mng.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/audio/prs.sid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/audio/prs.sid.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/audio/x-adpcm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/audio/x-adpcm.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/audio/x-aiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/audio/x-aiff.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/audio/x-flac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/audio/x-flac.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/fonts/package.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/fonts/package.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/image/svg+xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/image/svg+xml.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/image/x-xfig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/image/x-xfig.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/message/news.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/message/news.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/calendar.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/enriched.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/enriched.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/vnd.abc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/vnd.abc.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-adasrc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-adasrc.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-bibtex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-bibtex.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-c++hdr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-c++hdr.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-c++src.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-c++src.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-cmake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-cmake.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-csharp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-csharp.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-pascal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-pascal.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-patch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-patch.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-python.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-python.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-readme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-readme.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-script.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-vcard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-vcard.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-xslfo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-xslfo.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/pdf.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/rtf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/rtf.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/sxw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/sxw.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-ar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-ar.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-m4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-m4.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/xml.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/xsd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/xsd.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/zip.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/audio/x-flac+ogg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/audio/x-flac+ogg.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/audio/x-generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/audio/x-generic.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/audio/x-monkey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/audio/x-monkey.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/image/x-generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/image/x-generic.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/inode/directory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/inode/directory.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/message/rfc822.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/message/rfc822.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/directory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/directory.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/vcalendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/vcalendar.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/vnd.wap.wml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/vnd.wap.wml.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-authors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-authors.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-changelog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-changelog.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-copying.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-copying.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-generic.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-haskell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-haskell.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-install.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-makefile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-makefile.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-objchdr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-objchdr.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-objcsrc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-objcsrc.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-texinfo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-texinfo.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/video/x-generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/video/x-generic.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/plus.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/pswp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/pswp.png -------------------------------------------------------------------------------- /Resources/Private/Templates/Page/Privacy.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Privacy policy 5 | 6 | -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/msword.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/msword.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-ace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-ace.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-arc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-arc.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-arj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-arj.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-awk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-awk.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-bzip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-bzip.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-cda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-cda.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-cpio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-cpio.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-cue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-cue.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-deb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-deb.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-egon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-egon.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-gzip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-gzip.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-java.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-java.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-k3b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-k3b.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-lha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-lha.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-lyx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-lyx.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-lzop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-lzop.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-nzb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-nzb.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-pak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-pak.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-perl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-perl.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-php.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-php.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-rar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-rar.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-rpm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-rpm.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-ruby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-ruby.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-siag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-siag.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-tar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-tar.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-tarz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-tarz.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-tgif.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-tgif.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-tzo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-tzo.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-wmf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-wmf.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-zoo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-zoo.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/audio/x-speex+ogg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/audio/x-speex+ogg.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/package/x-generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/package/x-generic.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/aimeos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/aimeos.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/basket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/basket.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/check.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/minus.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/select.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/social.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/social.png -------------------------------------------------------------------------------- /Resources/Private/Templates/Page/Terms.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Terms and conditions 5 | 6 | -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/pgp-keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/pgp-keys.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/relaxng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/relaxng.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/rss+xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/rss+xml.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-archive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-archive.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-bzdvi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-bzdvi.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-desktop.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-gzdvi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-gzdvi.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-kcsrc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-kcsrc.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-kontour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-kontour.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-kplato.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-kplato.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-krita.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-krita.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-kvtml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-kvtml.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-marble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-marble.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-mswrite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-mswrite.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-object.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-object.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-pem-key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-pem-key.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-plasma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-plasma.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-subrip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-subrip.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-trash.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/xhtml+xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/xhtml+xml.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/xslt+xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/xslt+xml.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/text/x-katefilelist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/text/x-katefilelist.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/preloader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/preloader.gif -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/progress.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/progress.gif -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/spinner.gif -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/illustrator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/illustrator.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/javascript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/javascript.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/pkcs7-mime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/pkcs7-mime.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/postscript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/postscript.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.scribus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.scribus.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-cd-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-cd-image.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-compress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-compress.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-designer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-designer.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-font-afm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-font-afm.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-font-bdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-font-bdf.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-font-otf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-font-otf.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-font-pcf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-font-pcf.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-font-snf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-font-snf.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-font-ttf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-font-ttf.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-gnumeric.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-gnumeric.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-kgetlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-kgetlist.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-mplayer2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-mplayer2.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-mswinurl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-mswinurl.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-sharedlib.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-sharedlib.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-troff-man.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-troff-man.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-zerosize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-zerosize.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/audio/vnd.rn-realvideo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/audio/vnd.rn-realvideo.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/octet-stream.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/octet-stream.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/pgp-encrypted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/pgp-encrypted.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.ms-access.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.ms-access.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.ms-excel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.ms-excel.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-bittorrent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-bittorrent.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-executable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-executable.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-font-type1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-font-type1.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-gzpostscript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-gzpostscript.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-java-applet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-java-applet.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-java-archive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-java-archive.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-javascript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-javascript.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-mimearchive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-mimearchive.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-qet-element.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-qet-element.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-qet-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-qet-project.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-quattropro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-quattropro.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-shellscript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-shellscript.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-smb-server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-smb-server.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/image/svg+xml-compressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/image/svg+xml-compressed.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/arrow_big_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/arrow_big_left.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/detail-actions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/detail-actions.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.rn-realmedia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.rn-realmedia.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.sun.xml.calc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.sun.xml.calc.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.sun.xml.draw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.sun.xml.draw.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-7z-compressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-7z-compressed.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-compressed-tar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-compressed-tar.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-smb-workgroup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-smb-workgroup.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/animated-overlay.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/animated-overlay.gif -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/arrow_big_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/arrow_big_right.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/arrow_small_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/arrow_small_left.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/arrow_small_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/arrow_small_top.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.ms-powerpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.ms-powerpoint.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-executable-script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-executable-script.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-ms-dos-executable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-ms-dos-executable.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-python-bytecode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-python-bytecode.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-shockwave-flash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-shockwave-flash.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/image/x-vnd.trolltech.qpicture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/image/x-vnd.trolltech.qpicture.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/arrow_small_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/arrow_small_bottom.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/arrow_small_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/arrow_small_right.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.stardivision.calc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.stardivision.calc.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.stardivision.draw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.stardivision.draw.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-applix-spreadsheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-applix-spreadsheet.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-bzip-compressed-tar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-bzip-compressed-tar.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/x-lzma-compressed-tar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/x-lzma-compressed-tar.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.sun.xml.calc.template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.sun.xml.calc.template.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.sun.xml.draw.template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.sun.xml.draw.template.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/default/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/default/loader.gif -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/default/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/default/sprite.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.oasis.opendocument.chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.oasis.opendocument.chart.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.oasis.opendocument.image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.oasis.opendocument.image.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.oasis.opendocument.text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.oasis.opendocument.text.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/default/sprite_x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/default/sprite_x.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/default/sprite_y.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/default/sprite_y.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/facebook/btnNext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/facebook/btnNext.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/facebook/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/facebook/loader.gif -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/facebook/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/facebook/sprite.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.oasis.opendocument.database.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.oasis.opendocument.database.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.oasis.opendocument.formula.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.oasis.opendocument.formula.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.oasis.opendocument.graphics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.oasis.opendocument.graphics.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/dark_rounded/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/dark_rounded/loader.gif -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/dark_rounded/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/dark_rounded/sprite.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/dark_square/btnNext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/dark_square/btnNext.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/dark_square/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/dark_square/loader.gif -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/dark_square/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/dark_square/sprite.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/default/sprite_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/default/sprite_next.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/default/sprite_prev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/default/sprite_prev.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/light_square/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/light_square/loader.gif -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/light_square/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/light_square/sprite.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.oasis.opendocument.spreadsheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.oasis.opendocument.spreadsheet.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/dark_rounded/btnNext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/dark_rounded/btnNext.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/default/default_thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/default/default_thumb.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/facebook/btnPrevious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/facebook/btnPrevious.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/light_rounded/btnNext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/light_rounded/btnNext.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/light_rounded/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/light_rounded/loader.gif -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/light_rounded/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/light_rounded/sprite.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/light_square/btnNext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/light_square/btnNext.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.oasis.opendocument.presentation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.oasis.opendocument.presentation.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/dark_rounded/btnPrevious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/dark_rounded/btnPrevious.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/dark_square/btnPrevious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/dark_square/btnPrevious.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/light_square/btnPrevious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/light_square/btnPrevious.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/aimeos.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Specific JS for the elegance theme 3 | * 4 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 5 | * @copyright Aimeos (aimeos.org), 2014 6 | */ 7 | -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/dark_rounded/contentPattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/dark_rounded/contentPattern.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/dark_square/contentPattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/dark_square/contentPattern.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/facebook/contentPatternLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/facebook/contentPatternLeft.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/facebook/contentPatternTop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/facebook/contentPatternTop.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/facebook/default_thumbnail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/facebook/default_thumbnail.gif -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/light_rounded/btnPrevious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/light_rounded/btnPrevious.png -------------------------------------------------------------------------------- /.coveralls.yml: -------------------------------------------------------------------------------- 1 | src_dir: Application/Aimeos.Shop/Classes/ 2 | json_path: coveralls.json 3 | coverage_clover: 4 | - Application/Aimeos.Shop/coverage-unit.xml 5 | - Application/Aimeos.Shop/coverage-functional.xml 6 | -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/dark_square/default_thumbnail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/dark_square/default_thumbnail.gif -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/facebook/contentPatternBottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/facebook/contentPatternBottom.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/facebook/contentPatternRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/facebook/contentPatternRight.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.oasis.opendocument.presentation-template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.oasis.opendocument.presentation-template.png -------------------------------------------------------------------------------- /Resources/Public/mimeicons/application/vnd.oasis.opendocument.spreadsheet-template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/mimeicons/application/vnd.oasis.opendocument.spreadsheet-template.png -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/dark_rounded/default_thumbnail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/dark_rounded/default_thumbnail.gif -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/light_rounded/default_thumbnail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/light_rounded/default_thumbnail.gif -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/prettyPhoto/light_square/default_thumbnail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aimeos/aimeos-flow/HEAD/Resources/Public/themes/elegance/media/prettyPhoto/light_square/default_thumbnail.gif -------------------------------------------------------------------------------- /Resources/Private/TypoScript/Plugin.ts2: -------------------------------------------------------------------------------- 1 | prototype(Aimeos.Shop:Plugin) < prototype(Neos.Neos:Plugin) 2 | prototype(Aimeos.Shop:Plugin) { 3 | package = 'Aimeos.Shop' 4 | controller = 'Catalog' 5 | action = 'listComponent' 6 | } 7 | -------------------------------------------------------------------------------- /Configuration/Routes.Update.yaml: -------------------------------------------------------------------------------- 1 | - 2 | name: 'Checkout update page' 3 | uriPattern: '/update' 4 | defaults: 5 | '@package': 'Aimeos.Shop' 6 | '@controller': 'Checkout' 7 | '@action': 'update' 8 | '@format': 'html' 9 | appendExceedingArguments: true 10 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Checkout/Confirm.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {aiheader.checkout_confirm} 5 | 6 | 7 | 8 | {aibody.checkout_confirm} 9 | 10 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Checkout/Index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {aiheader.checkout_standard} 5 | 6 | 7 | 8 | {aibody.checkout_standard} 9 | 10 | -------------------------------------------------------------------------------- /Tests/Functional/Controller/AccountControllerTest.php: -------------------------------------------------------------------------------- 1 | browser->request( 'http://localhost/unittest/myaccount/download/0', 'GET' ); 11 | 12 | $this->assertEquals( 401, $response->getStatusCode() ); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Basket/Index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {aiheader.basket_bulk} 5 | {aiheader.basket_standard} 6 | {aiheader.basket_related} 7 | 8 | 9 | 10 | {aibody.basket_bulk} 11 | {aibody.basket_standard} 12 | {aibody.basket_related} 13 | 14 | -------------------------------------------------------------------------------- /Tests/Unit/Flow/AimeosTypeConverterTest.php: -------------------------------------------------------------------------------- 1 | object = new \Aimeos\Flow\AimeosTypeConverter(); 15 | } 16 | 17 | 18 | /** 19 | * @test 20 | */ 21 | public function convertFrom() 22 | { 23 | $src = 'f_catid=1&f_name=Test'; 24 | $expected = array( 'f_catid' => 1, 'f_name' => 'Test' ); 25 | 26 | $this->assertEquals( $expected, $this->object->convertFrom( $src, 'request' ) ); 27 | } 28 | } -------------------------------------------------------------------------------- /Resources/Private/Templates/Catalog/List.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {aiheader.basket_mini} 5 | {aiheader.catalog_filter} 6 | {aiheader.catalog_lists} 7 | 8 | 9 | 10 | {aibody.basket_mini} 11 | 12 | 13 | 14 | {aibody.catalog_filter} 15 | 16 | 17 | 18 | {aibody.catalog_lists} 19 | 20 | -------------------------------------------------------------------------------- /Configuration/Objects.yaml: -------------------------------------------------------------------------------- 1 | Aimeos\Shop\Base\Context: 2 | properties: 3 | cache: 4 | object: 5 | factoryObjectName: Neos\Flow\Cache\CacheManager 6 | factoryMethodName: getCache 7 | arguments: 8 | 1: 9 | value: AimeosShop_Cache 10 | 11 | Aimeos\Shop\Command\AimeosCommandController: 12 | properties: 13 | cache: 14 | object: 15 | factoryObjectName: Neos\Flow\Cache\CacheManager 16 | factoryMethodName: getCache 17 | arguments: 18 | 1: 19 | value: AimeosShop_Cache 20 | 21 | Neos\Flow\Property\TypeConverter\MediaTypeConverterInterface: 22 | className: 'Aimeos\Flow\AimeosTypeConverter' 23 | -------------------------------------------------------------------------------- /Classes/Aimeos/Shop/Controller/PageController.php: -------------------------------------------------------------------------------- 1 | view->assign( 'output', $this->getOutput( 'locale/select' ) ); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Catalog/Tree.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {aiheader.basket_mini} 5 | {aiheader.catalog_filter} 6 | {aiheader.catalog_stage} 7 | {aiheader.catalog_lists} 8 | 9 | 10 | 11 | {aibody.basket_mini} 12 | 13 | 14 | 15 | {aibody.catalog_filter} 16 | 17 | 18 | 19 | {aibody.catalog_stage} 20 | 21 | 22 | 23 | {aibody.catalog_lists} 24 | 25 | -------------------------------------------------------------------------------- /Tests/Unit/Base/AimeosTest.php: -------------------------------------------------------------------------------- 1 | object = new \Aimeos\Shop\Base\Aimeos(); 15 | } 16 | 17 | 18 | /** 19 | * @test 20 | */ 21 | public function get() 22 | { 23 | $this->assertInstanceOf( '\\Aimeos\\Bootstrap', $this->object->get() ); 24 | } 25 | 26 | 27 | /** 28 | * @test 29 | */ 30 | public function getVersion() 31 | { 32 | $this->assertInternalType( 'string', $this->object->getVersion() ); 33 | } 34 | 35 | 36 | /** 37 | * @test 38 | */ 39 | public function injectSettings() 40 | { 41 | $this->object->injectSettings( array( 'test' ) ); 42 | 43 | $this->assertEquals( array( 'test' ), \PHPUnit\Framework\Assert::readAttribute( $this->object, 'settings' ) ); 44 | } 45 | } -------------------------------------------------------------------------------- /Classes/Aimeos/Shop/Controller/AdminController.php: -------------------------------------------------------------------------------- 1 | 'default', 30 | 'resource' => 'dashboard', 31 | 'lang' => ( $this->request->hasArgument( 'lang' ) ? $this->request->getArgument( 'lang' ) : 'en' ), 32 | ); 33 | 34 | $this->forward( 'search', 'jqadm', null, $param ); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Tests/Functional/Command/AimeosCommandControllerTest.php: -------------------------------------------------------------------------------- 1 | setupCommand( 'unittest', 'unittest' ); 15 | } 16 | 17 | 18 | /** 19 | * @test 20 | */ 21 | public function cacheCommand() 22 | { 23 | $controller = new \Aimeos\Shop\Command\AimeosCommandController(); 24 | $controller->cacheCommand( 'unittest' ); 25 | } 26 | 27 | 28 | /** 29 | * @test 30 | */ 31 | public function jobsCommand() 32 | { 33 | $controller = new \Aimeos\Shop\Command\AimeosCommandController(); 34 | // Parallel processing corrupts database connection of parent process 35 | // $controller->jobsCommand( 'index/optimize', 'unittest' ); 36 | } 37 | } -------------------------------------------------------------------------------- /Classes/Aimeos/Shop/Composer/InstallerScripts.php: -------------------------------------------------------------------------------- 1 | isDevMode() ) { 31 | $options['options'] = 'setup/default/demo:1'; 32 | } 33 | 34 | \Neos\Flow\Core\Booting\Scripts::executeCommand( 'aimeos.shop:aimeos:setup', array(), true, $options ); 35 | \Neos\Flow\Core\Booting\Scripts::executeCommand( 'aimeos.shop:aimeos:cache', array() ); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Catalog/Detail.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | {aiheader.basket_mini} 9 | {aiheader.catalog_stage} 10 | {aiheader.catalog_detail} 11 | {aiheader.catalog_session} 12 | 13 | 14 | 15 | {aibody.basket_mini} 16 | 17 | 18 | 19 | {aibody.catalog_stage} 20 | 21 | 22 | 23 | {aibody.catalog_detail} 24 | 25 | 26 | 27 | {aibody.catalog_session} 28 | 29 | -------------------------------------------------------------------------------- /Tests/Unit/Controller/AdminControllerTest.php: -------------------------------------------------------------------------------- 1 | object = $this->getMockBuilder( '\Aimeos\Shop\Controller\AdminController' ) 17 | ->setMethods( array( 'forward' ) ) 18 | ->disableOriginalConstructor() 19 | ->getMock(); 20 | 21 | $this->request = $this->getMockBuilder( '\Neos\Flow\Mvc\ActionRequest' ) 22 | ->setMethods( array( 'getArgument', 'hasArgument' ) ) 23 | ->disableOriginalConstructor() 24 | ->getMock(); 25 | 26 | $this->inject( $this->object, 'request', $this->request ); 27 | } 28 | 29 | 30 | /** 31 | * @test 32 | */ 33 | public function indexAction() 34 | { 35 | $this->request->expects( $this->once() )->method( 'hasArgument' ); 36 | $this->object->expects( $this->once() )->method( 'forward' ); 37 | 38 | $this->object->indexAction(); 39 | } 40 | } -------------------------------------------------------------------------------- /Resources/Private/Templates/Account/Index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {aiheader.basket_mini} 5 | {aiheader.account_profile} 6 | {aiheader.account_subscription} 7 | {aiheader.account_history} 8 | {aiheader.account_favorite} 9 | {aiheader.account_watch} 10 | {aiheader.catalog_session} 11 | 12 | 13 | 14 | {aibody.basket_mini} 15 | 16 | 17 | 18 | {aibody.account_profile} 19 | {aibody.account_subscription} 20 | {aibody.account_history} 21 | {aibody.account_favorite} 22 | {aibody.account_watch} 23 | 24 | 25 | 26 | {aibody.catalog_session} 27 | 28 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | dist: xenial 3 | language: php 4 | 5 | services: 6 | - mysql 7 | 8 | php: 9 | - 7.3 10 | - 7.2 11 | - 7.1 12 | 13 | env: 14 | - FLOW_VERSION=5.3 15 | - FLOW_VERSION=5.2 16 | - FLOW_VERSION=5.1 17 | - FLOW_VERSION=5.0 18 | - FLOW_VERSION=4.3 19 | 20 | before_script: 21 | - git clone https://github.com/neos/flow-development-distribution.git -b ${FLOW_VERSION} ../flow 22 | - cd ../flow && bash ../aimeos-flow/.travis.sh 23 | 24 | script: 25 | - bin/phpunit -c Build/BuildEssentials/PhpUnit/UnitTests.xml --coverage-clover Packages/Application/Aimeos.Shop/coverage-unit.xml --whitelist Packages/Application/Aimeos.Shop/Classes Packages/Application/Aimeos.Shop/Tests/Unit/ 26 | - bin/phpunit -c Build/BuildEssentials/PhpUnit/FunctionalTests.xml --coverage-clover Packages/Application/Aimeos.Shop/coverage-functional.xml --whitelist Packages/Application/Aimeos.Shop/Classes Packages/Application/Aimeos.Shop/Tests/Functional/ 27 | 28 | after_success: 29 | - php bin/coveralls -c Application/Aimeos.Shop/.coveralls.yml 30 | 31 | matrix: 32 | fast_finish: true 33 | exclude: 34 | - php: 7.3 35 | env: FLOW_VERSION=4.3 36 | -------------------------------------------------------------------------------- /Tests/Unit/Controller/LocaleControllerTest.php: -------------------------------------------------------------------------------- 1 | object = $this->getMockBuilder( '\Aimeos\Shop\Controller\LocaleController' ) 17 | ->setMethods( array( 'getOutput' ) ) 18 | ->disableOriginalConstructor() 19 | ->getMock(); 20 | 21 | $this->view = $this->getMockBuilder( '\Neos\Flow\Mvc\View\JsonView' ) 22 | ->disableOriginalConstructor() 23 | ->getMock(); 24 | 25 | $this->inject( $this->object, 'view', $this->view ); 26 | $this->inject( $this->object, 'response', $this->response ); 27 | } 28 | 29 | 30 | /** 31 | * @test 32 | */ 33 | public function selectComponentAction() 34 | { 35 | $this->object->expects( $this->once() )->method( 'getOutput' ) 36 | ->will( $this->returnValue( 'body' ) ); 37 | 38 | $this->view->expects( $this->once() )->method( 'assign' ) 39 | ->with( $this->equalTo( 'output' ), $this->equalTo( 'body' ) ); 40 | 41 | $this->object->selectComponentAction(); 42 | } 43 | } -------------------------------------------------------------------------------- /Configuration/Routes.Account.yaml: -------------------------------------------------------------------------------- 1 | - 2 | name: 'Account download page' 3 | uriPattern: '/download/{dl_id}' 4 | defaults: 5 | '@package': 'Aimeos.Shop' 6 | '@controller': 'Account' 7 | '@action': 'download' 8 | '@format': 'html' 9 | appendExceedingArguments: true 10 | 11 | - 12 | name: 'Account favorite products' 13 | uriPattern: '/favorite(/{fav_action}/{fav_id}/{d_name})' 14 | defaults: 15 | '@package': 'Aimeos.Shop' 16 | '@controller': 'Account' 17 | '@action': 'index' 18 | '@format': 'html' 19 | 'fav_action': '' 20 | 'fav_id': '' 21 | 'd_name': '' 22 | appendExceedingArguments: true 23 | 24 | - 25 | name: 'Account watched products' 26 | uriPattern: '/watch(/{wat_action}/{wat_id}/{d_name})' 27 | defaults: 28 | '@package': 'Aimeos.Shop' 29 | '@controller': 'Account' 30 | '@action': 'index' 31 | '@format': 'html' 32 | 'wat_action': '' 33 | 'wat_id': '' 34 | 'd_name': '' 35 | appendExceedingArguments: true 36 | 37 | - 38 | name: 'Account index page' 39 | uriPattern: '' 40 | defaults: 41 | '@package': 'Aimeos.Shop' 42 | '@controller': 'Account' 43 | '@action': 'index' 44 | '@format': 'html' 45 | appendExceedingArguments: true 46 | -------------------------------------------------------------------------------- /Tests/Unit/Base/I18nTest.php: -------------------------------------------------------------------------------- 1 | object = new \Aimeos\Shop\Base\I18n(); 16 | 17 | $this->inject( $this->object, 'aimeos', $aimeos ); 18 | } 19 | 20 | 21 | /** 22 | * @test 23 | */ 24 | public function get() 25 | { 26 | $settings = array( 27 | 'i18n' => array( 'de' => array( 'test' => 1 ) ), 28 | 'flow' => array( 'apc' => array( 'enable' => true ) ), 29 | ); 30 | $this->object->injectSettings( $settings ); 31 | 32 | $list = $this->object->get( array( 'de', 'en' ) ); 33 | 34 | $this->assertInternalType( 'array', $list ); 35 | $this->assertArrayHasKey( 'de', $list ); 36 | $this->assertArrayHasKey( 'en', $list ); 37 | $this->assertInstanceOf( '\\Aimeos\\MW\\Translation\\Iface', $list['de'] ); 38 | $this->assertInstanceOf( '\\Aimeos\\MW\\Translation\\Iface', $list['en'] ); 39 | } 40 | 41 | 42 | /** 43 | * @test 44 | */ 45 | public function injectSettings() 46 | { 47 | $this->object->injectSettings( array( 'test' ) ); 48 | 49 | $this->assertEquals( array( 'test' ), \PHPUnit\Framework\Assert::readAttribute( $this->object, 'settings' ) ); 50 | } 51 | } -------------------------------------------------------------------------------- /Tests/Unit/Base/ConfigTest.php: -------------------------------------------------------------------------------- 1 | object = new \Aimeos\Shop\Base\Config(); 15 | 16 | $aimeos = new \Aimeos\Shop\Base\Aimeos(); 17 | 18 | $resource = array( 19 | 'host' => '127.0.0.1', 20 | 'dbname' => 'flow', 21 | 'user' => 'root', 22 | 'password' => '', 23 | ); 24 | 25 | $settings = array( 26 | 'backend' => array( 'test' => 1 ), 27 | 'frontend' => array( 'test' => 0 ), 28 | ); 29 | 30 | $this->inject( $this->object, 'aimeos', $aimeos ); 31 | $this->inject( $this->object, 'resource', $resource ); 32 | $this->inject( $this->object, 'settings', $settings ); 33 | } 34 | 35 | 36 | /** 37 | * @test 38 | */ 39 | public function getFrontend() 40 | { 41 | $config = $this->object->get(); 42 | 43 | $this->assertInstanceOf( '\Aimeos\MW\Config\Iface', $config ); 44 | $this->assertEquals( 0, $config->get( 'test', -1 ) ); 45 | } 46 | 47 | 48 | /** 49 | * @test 50 | */ 51 | public function getBackend() 52 | { 53 | $config = $this->object->get( 'backend' ); 54 | 55 | $this->assertInstanceOf( '\Aimeos\MW\Config\Iface', $config ); 56 | $this->assertEquals( 1, $config->get( 'test', -1 ) ); 57 | } 58 | } -------------------------------------------------------------------------------- /Classes/Aimeos/Shop/ViewHelper/BlockViewHelper.php: -------------------------------------------------------------------------------- 1 | registerArgument( 'name', 'string', 'Name of the content block' ); 34 | } 35 | 36 | 37 | /** 38 | * Adds the rendered Fluid section to the Aimeos block view helper 39 | */ 40 | public function render() 41 | { 42 | $iface = '\Aimeos\MW\View\Iface'; 43 | $view = $this->templateVariableContainer->get( '_aimeos_view' ); 44 | 45 | if( !is_object( $view ) || !( $view instanceof $iface ) ) { 46 | throw new Exception( 'Aimeos view object is missing' ); 47 | } 48 | 49 | if( !isset( $this->arguments['name'] ) ) { 50 | throw new Exception( 'Attribute "name" missing for Aimeos translate view helper' ); 51 | } 52 | 53 | $view->block()->set( $this->arguments['name'], $this->renderChildren() ); 54 | } 55 | } -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/media/pswp.svg: -------------------------------------------------------------------------------- 1 | default-skin 2 -------------------------------------------------------------------------------- /Classes/Aimeos/Flow/AimeosTypeConverter.php: -------------------------------------------------------------------------------- 1 | registerArgument( 'key', 'string', 'Configuration key, e.g. client/html/catalog/lists/basket-add' ); 34 | $this->registerArgument( 'default', 'mixed', 'Value if no configuration for the given key was found', false ); 35 | } 36 | 37 | 38 | /** 39 | * Returns the configuration value for the given key 40 | * 41 | * @return mixed Configuration value 42 | */ 43 | public function render() 44 | { 45 | $iface = '\Aimeos\MW\View\Iface'; 46 | $view = $this->templateVariableContainer->get( '_aimeos_view' ); 47 | 48 | if( !is_object( $view ) || !( $view instanceof $iface ) ) { 49 | throw new Exception( 'Aimeos view object is missing' ); 50 | } 51 | 52 | if( !isset( $this->arguments['key'] ) ) { 53 | throw new Exception( 'Attribute "key" missing for Aimeos translate view helper' ); 54 | } 55 | 56 | $key = $this->arguments['key']; 57 | $default = ( isset( $this->arguments['default'] ) ? $this->arguments['default'] : null ); 58 | 59 | return $view->config( $key, $default ); 60 | } 61 | } -------------------------------------------------------------------------------- /Configuration/Routes.Jsonadm.yaml: -------------------------------------------------------------------------------- 1 | - 2 | name: 'REST JSON Admin GET' 3 | uriPattern: '/{resource}' 4 | defaults: 5 | '@package': 'Aimeos.Shop' 6 | '@controller': 'Jsonadm' 7 | '@action': 'get' 8 | '@format': 'html' 9 | httpMethods: ['GET'] 10 | appendExceedingArguments: true 11 | 12 | - 13 | name: 'REST JSON Admin DELETE' 14 | uriPattern: '/{resource}' 15 | defaults: 16 | '@package': 'Aimeos.Shop' 17 | '@controller': 'Jsonadm' 18 | '@action': 'delete' 19 | '@format': 'html' 20 | httpMethods: ['DELETE'] 21 | appendExceedingArguments: true 22 | 23 | - 24 | name: 'REST JSON Admin PATCH' 25 | uriPattern: '/{resource}' 26 | defaults: 27 | '@package': 'Aimeos.Shop' 28 | '@controller': 'Jsonadm' 29 | '@action': 'patch' 30 | '@format': 'html' 31 | httpMethods: ['PATCH'] 32 | appendExceedingArguments: true 33 | 34 | - 35 | name: 'REST JSON Admin POST' 36 | uriPattern: '/{resource}' 37 | defaults: 38 | '@package': 'Aimeos.Shop' 39 | '@controller': 'Jsonadm' 40 | '@action': 'post' 41 | '@format': 'html' 42 | httpMethods: ['POST'] 43 | appendExceedingArguments: true 44 | 45 | - 46 | name: 'REST JSON Admin PUT' 47 | uriPattern: '/{resource}' 48 | defaults: 49 | '@package': 'Aimeos.Shop' 50 | '@controller': 'Jsonadm' 51 | '@action': 'put' 52 | '@format': 'html' 53 | httpMethods: ['PUT'] 54 | appendExceedingArguments: true 55 | 56 | - 57 | name: 'REST JSON Admin OPTIONS' 58 | uriPattern: '(/{resource})' 59 | defaults: 60 | '@package': 'Aimeos.Shop' 61 | '@controller': 'Jsonadm' 62 | '@action': 'options' 63 | '@format': 'html' 64 | 'resource': '' 65 | httpMethods: ['OPTIONS'] 66 | appendExceedingArguments: true 67 | -------------------------------------------------------------------------------- /Configuration/Routes.Jsonapi.yaml: -------------------------------------------------------------------------------- 1 | - 2 | name: 'REST JSON frontend GET' 3 | uriPattern: '/{resource}' 4 | defaults: 5 | '@package': 'Aimeos.Shop' 6 | '@controller': 'Jsonapi' 7 | '@action': 'get' 8 | '@format': 'html' 9 | httpMethods: ['GET'] 10 | appendExceedingArguments: true 11 | 12 | - 13 | name: 'REST JSON frontend DELETE' 14 | uriPattern: '/{resource}' 15 | defaults: 16 | '@package': 'Aimeos.Shop' 17 | '@controller': 'Jsonapi' 18 | '@action': 'delete' 19 | '@format': 'html' 20 | httpMethods: ['DELETE'] 21 | appendExceedingArguments: true 22 | 23 | - 24 | name: 'REST JSON frontend PATCH' 25 | uriPattern: '/{resource}' 26 | defaults: 27 | '@package': 'Aimeos.Shop' 28 | '@controller': 'Jsonapi' 29 | '@action': 'patch' 30 | '@format': 'html' 31 | httpMethods: ['PATCH'] 32 | appendExceedingArguments: true 33 | 34 | - 35 | name: 'REST JSON frontend POST' 36 | uriPattern: '/{resource}' 37 | defaults: 38 | '@package': 'Aimeos.Shop' 39 | '@controller': 'Jsonapi' 40 | '@action': 'post' 41 | '@format': 'html' 42 | httpMethods: ['POST'] 43 | appendExceedingArguments: true 44 | 45 | - 46 | name: 'REST JSON frontend PUT' 47 | uriPattern: '/{resource}' 48 | defaults: 49 | '@package': 'Aimeos.Shop' 50 | '@controller': 'Jsonapi' 51 | '@action': 'put' 52 | '@format': 'html' 53 | httpMethods: ['PUT'] 54 | appendExceedingArguments: true 55 | 56 | - 57 | name: 'REST JSON frontend OPTIONS' 58 | uriPattern: '(/{resource})' 59 | defaults: 60 | '@package': 'Aimeos.Shop' 61 | '@controller': 'Jsonapi' 62 | '@action': 'options' 63 | '@format': 'html' 64 | 'resource': '' 65 | httpMethods: ['OPTIONS'] 66 | appendExceedingArguments: true 67 | -------------------------------------------------------------------------------- /Classes/Aimeos/Shop/Base/Aimeos.php: -------------------------------------------------------------------------------- 1 | aimeos === null ) 44 | { 45 | $extDirs = ( isset( $this->settings['flow']['extdir'] ) ? (array) $this->settings['flow']['extdir'] : array() ); 46 | $this->aimeos = new \Aimeos\Bootstrap( $extDirs, false ); 47 | } 48 | 49 | return $this->aimeos; 50 | } 51 | 52 | 53 | /** 54 | * Returns the version of the Aimeos package 55 | * 56 | * @return string Version string 57 | */ 58 | public function getVersion() 59 | { 60 | if( ( $content = @file_get_contents( FLOW_PATH_ROOT . 'composer.lock' ) ) !== false 61 | && ( $content = json_decode( $content, true ) ) !== null && isset( $content['packages'] ) 62 | ) { 63 | foreach( (array) $content['packages'] as $item ) 64 | { 65 | if( $item['name'] === 'aimeos/aimeos-flow' ) { 66 | return $item['version']; 67 | } 68 | } 69 | } 70 | return ''; 71 | } 72 | 73 | 74 | /** 75 | * Inject the settings 76 | * 77 | * @param array $settings 78 | * @return void 79 | */ 80 | public function injectSettings( array $settings ) 81 | { 82 | $this->settings = $settings; 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /Configuration/Routes.yaml: -------------------------------------------------------------------------------- 1 | - 2 | name: 'Admin index page' 3 | uriPattern: 'admin' 4 | defaults: 5 | '@package': 'Aimeos.Shop' 6 | '@controller': 'Admin' 7 | '@action': 'index' 8 | '@format': 'html' 9 | appendExceedingArguments: true 10 | 11 | - 12 | name: 'Jqadm' 13 | uriPattern: 'admin/{site}/jqadm' 14 | subRoutes: 15 | 'JqadmSubroutes': 16 | package: 'Aimeos.Shop' 17 | suffix: 'Jqadm' 18 | 19 | - 20 | name: 'Jsonadm' 21 | uriPattern: 'admin/{site}/jsonadm' 22 | subRoutes: 23 | 'JsonadmSubroutes': 24 | package: 'Aimeos.Shop' 25 | suffix: 'Jsonadm' 26 | 27 | - 28 | name: 'Jsonapi' 29 | uriPattern: 'jsonapi' 30 | subRoutes: 31 | 'JsonapiSubroutes': 32 | package: 'Aimeos.Shop' 33 | suffix: 'Jsonapi' 34 | 35 | - 36 | name: 'Account' 37 | uriPattern: 'myaccount' 38 | subRoutes: 39 | 'AccountSubroutes': 40 | package: 'Aimeos.Shop' 41 | suffix: 'Account' 42 | 43 | - 44 | name: 'Default' 45 | uriPattern: '' 46 | subRoutes: 47 | 'DefaultSubroutes': 48 | package: 'Aimeos.Shop' 49 | suffix: 'Default' 50 | 51 | - 52 | name: 'Update' 53 | uriPattern: '' 54 | subRoutes: 55 | 'UpdateSubroutes': 56 | package: 'Aimeos.Shop' 57 | suffix: 'Update' 58 | 59 | 60 | - 61 | name: 'Example terms and conditions page' 62 | uriPattern: 'terms' 63 | defaults: 64 | '@package': 'Aimeos.Shop' 65 | '@controller': 'Page' 66 | '@action': 'terms' 67 | '@format': 'html' 68 | appendExceedingArguments: true 69 | 70 | - 71 | name: 'Example privacy policy page' 72 | uriPattern: 'privacy' 73 | defaults: 74 | '@package': 'Aimeos.Shop' 75 | '@controller': 'Page' 76 | '@action': 'privacy' 77 | '@format': 'html' 78 | appendExceedingArguments: true 79 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aimeos/aimeos-flow", 3 | "description": "Professional, full-featured and high performance Flow/NeosCMS e-commerce package for online shops and complex B2B projects", 4 | "keywords": ["aimeos", "flow", "neoscms", "e-commerce", "ecommerce", "B2B", "shop", "portal", "market place"], 5 | "homepage": "https://aimeos.org/Flow", 6 | "type": "typo3-flow-package", 7 | "license": "LGPL-3.0-or-later", 8 | "support": { 9 | "source": "https://github.com/aimeos/aimeos-flow", 10 | "issues": "https://github.com/aimeos/aimeos-flow/issues", 11 | "forum": "https://aimeos.org/help", 12 | "wiki": "https://aimeos.org/docs" 13 | }, 14 | "minimum-stability": "dev", 15 | "prefer-stable": true, 16 | "require": { 17 | "neos/flow": "~4.0||~5.0", 18 | "neos/swiftmailer": "~6.0", 19 | "aimeos/aimeos-core": "dev-master", 20 | "aimeos/ai-swiftmailer": "dev-master", 21 | "aimeos/ai-gettext": "dev-master", 22 | "aimeos/ai-flow": "dev-master", 23 | "aimeos/ai-admin-jqadm": "dev-master", 24 | "aimeos/ai-admin-jsonadm": "dev-master", 25 | "aimeos/ai-client-jsonapi": "dev-master", 26 | "aimeos/ai-client-html": "dev-master", 27 | "aimeos/ai-controller-jobs": "dev-master", 28 | "zendframework/zend-diactoros": "~1.3" 29 | }, 30 | "require-dev": { 31 | "php-coveralls/php-coveralls": "~2.0" 32 | }, 33 | "autoload": { 34 | "psr-4": { 35 | "Aimeos\\Shop\\": "Classes/Aimeos/Shop", 36 | "Aimeos\\Flow\\": "Classes/Aimeos/Flow" 37 | } 38 | }, 39 | "extra": { 40 | "installer-paths": { 41 | "Resources/Extensions/{$name}/": ["type:aimeos-extension"] 42 | } 43 | }, 44 | "scripts": { 45 | "post-update-cmd": [ 46 | "cp -r Resources/Extensions/ai-client-html/client/html/themes/* Resources/Public/themes/" 47 | ] 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Classes/Aimeos/Shop/Controller/BasketController.php: -------------------------------------------------------------------------------- 1 | view->assign( 'output', $this->getOutput( 'basket/bulk' ) ); 31 | } 32 | 33 | 34 | /** 35 | * Returns the output of the basket mini component 36 | * 37 | * @return string Rendered HTML for the body 38 | */ 39 | public function miniComponentAction() 40 | { 41 | $this->view->assign( 'output', $this->getOutput( 'basket/mini' ) ); 42 | $this->response->setHeader( 'Cache-Control', 'no-store' ); 43 | } 44 | 45 | 46 | /** 47 | * Returns the output of the basket related component 48 | * 49 | * @return string Rendered HTML for the body 50 | */ 51 | public function relatedComponentAction() 52 | { 53 | $this->view->assign( 'output', $this->getOutput( 'basket/related' ) ); 54 | $this->response->setHeader( 'Cache-Control', 'no-store' ); 55 | } 56 | 57 | 58 | /** 59 | * Returns the output of the basket standard component 60 | * 61 | * @return string Rendered HTML for the body 62 | */ 63 | public function standardComponentAction() 64 | { 65 | $this->view->assign( 'output', $this->getOutput( 'basket/standard' ) ); 66 | $this->response->setHeader( 'Cache-Control', 'no-store' ); 67 | } 68 | 69 | 70 | /** 71 | * Content for MyAccount page 72 | * 73 | * @Flow\Session(autoStart = TRUE) 74 | */ 75 | public function indexAction() 76 | { 77 | $this->view->assignMultiple( $this->get( 'basket-index' ) ); 78 | $this->response->setHeader( 'Cache-Control', 'no-store' ); 79 | } 80 | } -------------------------------------------------------------------------------- /Classes/Aimeos/Shop/Controller/AbstractController.php: -------------------------------------------------------------------------------- 1 | aimeos->get()->getCustomPaths( 'client/html/templates' ); 57 | $context = $this->context->get( $this->request ); 58 | $langid = $context->getLocale()->getLanguageId(); 59 | $view = $this->viewContainer->create( $context, $this->uriBuilder, $tmplPaths, $this->request, $langid ); 60 | 61 | $client = \Aimeos\Client\Html::create( $context, $clientName ); 62 | $client->setView( $view ); 63 | $client->process(); 64 | 65 | $this->view->assign( 'aimeos_component_header', (string) $client->getHeader() ); 66 | 67 | return $client->getBody(); 68 | } 69 | 70 | 71 | /** 72 | * Returns the body and header output for the given page name 73 | * 74 | * @param string $name Page name as defined in the Settings.yaml file 75 | */ 76 | protected function get( $name ) 77 | { 78 | return $this->shop->get( $this->request, $name ); 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /Classes/Aimeos/Shop/Base/I18n.php: -------------------------------------------------------------------------------- 1 | aimeos->get()->getI18nPaths(); 51 | 52 | foreach( $languageIds as $langid ) 53 | { 54 | if( !isset( $this->i18n[$langid] ) ) 55 | { 56 | $i18n = new \Aimeos\MW\Translation\Gettext( $i18nPaths, $langid ); 57 | 58 | $apc = (bool) ( isset( $this->settings['flow']['apc']['enable'] ) ? $this->settings['flow']['apc']['enable'] : false ); 59 | $prefix = (string) ( isset( $this->settings['flow']['apc']['prefix'] ) ? $this->settings['flow']['apc']['prefix'] : 'flow:' ); 60 | 61 | if( $apc === true ) { 62 | $i18n = new \Aimeos\MW\Translation\Decorator\APC( $i18n, $prefix ); 63 | } 64 | 65 | if( isset( $this->settings['i18n'][$langid] ) ) { 66 | $i18n = new \Aimeos\MW\Translation\Decorator\Memory( $i18n, $this->settings['i18n'][$langid] ); 67 | } 68 | 69 | $this->i18n[$langid] = $i18n; 70 | } 71 | } 72 | 73 | return $this->i18n; 74 | } 75 | 76 | 77 | /** 78 | * Inject the settings 79 | * 80 | * @param array $settings 81 | * @return void 82 | */ 83 | public function injectSettings( array $settings ) 84 | { 85 | $this->settings = $settings; 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /Configuration/Routes.Jqadm.yaml: -------------------------------------------------------------------------------- 1 | - 2 | name: 'JQAdm file request' 3 | uriPattern: '/file/{type}' 4 | defaults: 5 | '@package': 'Aimeos.Shop' 6 | '@controller': 'Jqadm' 7 | '@action': 'file' 8 | appendExceedingArguments: true 9 | 10 | - 11 | name: 'JQAdm copy' 12 | uriPattern: '/copy/{resource}' 13 | defaults: 14 | '@package': 'Aimeos.Shop' 15 | '@controller': 'Jqadm' 16 | '@action': 'copy' 17 | '@format': 'html' 18 | httpMethods: ['GET', 'POST'] 19 | appendExceedingArguments: true 20 | 21 | - 22 | name: 'JQAdm create' 23 | uriPattern: '/create/{resource}' 24 | defaults: 25 | '@package': 'Aimeos.Shop' 26 | '@controller': 'Jqadm' 27 | '@action': 'create' 28 | '@format': 'html' 29 | httpMethods: ['GET', 'POST'] 30 | appendExceedingArguments: true 31 | 32 | - 33 | name: 'JQAdm delete' 34 | uriPattern: '/delete/{resource}' 35 | defaults: 36 | '@package': 'Aimeos.Shop' 37 | '@controller': 'Jqadm' 38 | '@action': 'delete' 39 | '@format': 'html' 40 | httpMethods: ['GET', 'POST'] 41 | appendExceedingArguments: true 42 | 43 | - 44 | name: 'JQAdm export' 45 | uriPattern: '/export/{resource}' 46 | defaults: 47 | '@package': 'Aimeos.Shop' 48 | '@controller': 'Jqadm' 49 | '@action': 'export' 50 | '@format': 'html' 51 | httpMethods: ['GET'] 52 | appendExceedingArguments: true 53 | 54 | - 55 | name: 'JQAdm get' 56 | uriPattern: '/get/{resource}' 57 | defaults: 58 | '@package': 'Aimeos.Shop' 59 | '@controller': 'Jqadm' 60 | '@action': 'get' 61 | '@format': 'html' 62 | httpMethods: ['GET'] 63 | appendExceedingArguments: true 64 | 65 | - 66 | name: 'JQAdm save' 67 | uriPattern: '/save/{resource}' 68 | defaults: 69 | '@package': 'Aimeos.Shop' 70 | '@controller': 'Jqadm' 71 | '@action': 'save' 72 | '@format': 'html' 73 | httpMethods: ['POST'] 74 | appendExceedingArguments: true 75 | 76 | - 77 | name: 'JQAdm search' 78 | uriPattern: '/search/{resource}' 79 | defaults: 80 | '@package': 'Aimeos.Shop' 81 | '@controller': 'Jqadm' 82 | '@action': 'search' 83 | '@format': 'html' 84 | httpMethods: ['GET', 'POST'] 85 | appendExceedingArguments: true 86 | -------------------------------------------------------------------------------- /Classes/Aimeos/Shop/Base/Config.php: -------------------------------------------------------------------------------- 1 | settings['resource']['db']['host'] = $this->resource['host']; 51 | $this->settings['resource']['db']['database'] = $this->resource['dbname']; 52 | $this->settings['resource']['db']['username'] = $this->resource['user']; 53 | $this->settings['resource']['db']['password'] = $this->resource['password']; 54 | 55 | $configPaths = $this->aimeos->get()->getConfigPaths(); 56 | $config = new \Aimeos\MW\Config\PHPArray( array(), $configPaths ); 57 | 58 | $apc = (bool) ( isset( $this->settings['flow']['apc']['enable'] ) ? $this->settings['flow']['apc']['enable'] : false ); 59 | $prefix = (string) ( isset( $this->settings['flow']['apc']['prefix'] ) ? $this->settings['flow']['apc']['prefix'] : 'flow:' ); 60 | 61 | if( $apc === true ) { 62 | $config = new \Aimeos\MW\Config\Decorator\APC( $config, $prefix ); 63 | } 64 | 65 | $config = new \Aimeos\MW\Config\Decorator\Memory( $config, $this->settings ); 66 | 67 | if( isset( $this->settings[$type] ) ) { 68 | $config = new \Aimeos\MW\Config\Decorator\Memory( $config, $this->settings[$type] ); 69 | } 70 | 71 | return $config; 72 | } 73 | 74 | 75 | /** 76 | * Inject the settings 77 | * 78 | * @param array $settings 79 | * @return void 80 | */ 81 | public function injectSettings( array $settings ) 82 | { 83 | $this->settings = $settings; 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /Resources/Private/Layouts/Default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Aimeos shop 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 29 | 30 |
31 | 32 | 33 | 34 | 35 |
36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /.travis.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -ev 4 | 5 | cat composer.json | sed 's/^\}$/,\ 6 | "minimum-stability": "dev",\ 7 | "prefer-stable": true,\ 8 | "extra": {\ 9 | "installer-paths": {\ 10 | "Packages\/Extensions\/{$name}\/": ["type:aimeos-extension"]\ 11 | }\ 12 | }\ 13 | }/' > composer.json.new 14 | mv composer.json.new composer.json 15 | 16 | composer require aimeos/aimeos-flow:dev-master 17 | rm -rf Packages/Application/Aimeos.Shop 18 | mv ../aimeos-flow Packages/Application/Aimeos.Shop 19 | composer dump-autoload 20 | 21 | mysql -e "CREATE DATABASE flow; GRANT ALL ON flow.* TO 'aimeos'@'127.0.0.1' IDENTIFIED BY 'aimeos'" 22 | 23 | printf " 24 | Neos: 25 | Flow: 26 | persistence: 27 | backendOptions: 28 | host: '127.0.0.1' 29 | dbname: 'flow' 30 | user: 'aimeos' 31 | password: 'aimeos' 32 | http: 33 | baseUri: http://aimeos.org/ 34 | Aimeos: 35 | Shop: 36 | flow: 37 | disableSites: 0 38 | " > Configuration/Testing/Settings.yaml 39 | 40 | printf " 41 | - 42 | name: 'Aimeos Extadm' 43 | uriPattern: '{site}/extadm' 44 | subRoutes: 45 | ExtadmShopRoutes: 46 | package: 'Aimeos.Shop' 47 | suffix: 'Extadm' 48 | - 49 | name: 'Aimeos Jqadm' 50 | uriPattern: '{site}/jqadm' 51 | subRoutes: 52 | JqadmShopRoutes: 53 | package: 'Aimeos.Shop' 54 | suffix: 'Jqadm' 55 | - 56 | name: 'Aimeos Jsonadm' 57 | uriPattern: '{site}/jsonadm' 58 | subRoutes: 59 | JsonadmShopRoutes: 60 | package: 'Aimeos.Shop' 61 | suffix: 'Jsonadm' 62 | - 63 | name: 'Aimeos Jsonapi' 64 | uriPattern: '{site}/jsonapi' 65 | subRoutes: 66 | JsonapiShopRoutes: 67 | package: 'Aimeos.Shop' 68 | suffix: 'Jsonapi' 69 | - 70 | name: 'Aimeos Account' 71 | uriPattern: '{site}/myaccount' 72 | subRoutes: 73 | AccountShopRoutes: 74 | package: 'Aimeos.Shop' 75 | suffix: 'Account' 76 | - 77 | name: 'Default' 78 | uriPattern: '{site}' 79 | subRoutes: 80 | 'DefaultSubroutes': 81 | package: 'Aimeos.Shop' 82 | suffix: 'Default' 83 | - 84 | name: 'Update' 85 | uriPattern: '{site}' 86 | subRoutes: 87 | 'UpdateSubroutes': 88 | package: 'Aimeos.Shop' 89 | suffix: 'Update' 90 | " > Configuration/Routes.yaml 91 | -------------------------------------------------------------------------------- /Classes/Aimeos/Shop/Controller/CheckoutController.php: -------------------------------------------------------------------------------- 1 | view->assign( 'output', $this->getOutput( 'checkout/confirm' ) ); 31 | $this->response->setHeader( 'Cache-Control', 'no-store' ); 32 | } 33 | 34 | 35 | /** 36 | * Returns the output of the checkout standard component 37 | * 38 | * @return string Rendered HTML for the body 39 | */ 40 | public function standardComponentAction() 41 | { 42 | $this->view->assign( 'output', $this->getOutput( 'checkout/standard' ) ); 43 | $this->response->setHeader( 'Cache-Control', 'no-store' ); 44 | } 45 | 46 | 47 | /** 48 | * Returns the output of the checkout update component 49 | * 50 | * @return string Rendered HTML for the body 51 | */ 52 | public function updateComponentAction() 53 | { 54 | $this->view->assign( 'output', $this->getOutput( 'checkout/update' ) ); 55 | $this->response->setHeader( 'Cache-Control', 'no-store' ); 56 | } 57 | 58 | 59 | /** 60 | * Content for checkout standard page 61 | * 62 | * @Flow\Session(autoStart = TRUE) 63 | */ 64 | public function indexAction() 65 | { 66 | $this->view->assignMultiple( $this->get( 'checkout-index' ) ); 67 | $this->response->setHeader( 'Cache-Control', 'no-store' ); 68 | } 69 | 70 | 71 | /** 72 | * Content for checkout confirm page 73 | * 74 | * @Flow\Session(autoStart = TRUE) 75 | */ 76 | public function confirmAction() 77 | { 78 | $this->view->assignMultiple( $this->get( 'checkout-confirm' ) ); 79 | $this->response->setHeader( 'Cache-Control', 'no-store' ); 80 | } 81 | 82 | 83 | /** 84 | * Returns the view for the order update page. 85 | * 86 | * @return Response Response object containing the generated output 87 | */ 88 | public function updateAction() 89 | { 90 | $this->view->assignMultiple( $this->get( 'checkout-update' ) ); 91 | $this->response->setHeader( 'Cache-Control', 'no-store' ); 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /Tests/Unit/Base/PageTest.php: -------------------------------------------------------------------------------- 1 | object = new \Aimeos\Shop\Base\Shop(); 15 | 16 | $aimeos = new \Aimeos\Shop\Base\Aimeos(); 17 | 18 | $uriBuilder = $this->getMockBuilder( '\Neos\Flow\Mvc\Routing\UriBuilder' ) 19 | ->disableOriginalConstructor() 20 | ->getMock(); 21 | 22 | $this->inject( $this->object, 'aimeos', $aimeos ); 23 | $this->inject( $this->object, 'uriBuilder', $uriBuilder ); 24 | } 25 | 26 | 27 | /** 28 | * @test 29 | */ 30 | public function get() 31 | { 32 | $view = $this->getMockBuilder( '\Aimeos\Shop\Base\View' ) 33 | ->setMethods( array( 'create' ) ) 34 | ->disableOriginalConstructor() 35 | ->getMock(); 36 | 37 | $mwView = new \Aimeos\MW\View\Standard(); 38 | 39 | $view->expects( $this->once() )->method( 'create' ) 40 | ->will( $this->returnValue( $mwView ) ); 41 | 42 | $this->inject( $this->object, 'view', $view ); 43 | 44 | 45 | $context = $this->getMockBuilder( '\Aimeos\Shop\Base\Context' ) 46 | ->setMethods( array( 'get' ) ) 47 | ->disableOriginalConstructor() 48 | ->getMock(); 49 | 50 | $ctx = new \Aimeos\MShop\Context\Item\Standard(); 51 | $ctx->setConfig( new \Aimeos\MW\Config\PHPArray() ); 52 | $ctx->setLocale( new \Aimeos\MShop\Locale\Item\Standard( array( 'langid' => 'de' ) ) ); 53 | 54 | $context->expects( $this->once() )->method( 'get' ) 55 | ->will( $this->returnValue( $ctx ) ); 56 | 57 | $this->inject( $this->object, 'context', $context ); 58 | 59 | 60 | $settings = array( 61 | 'flow' => array( 'cache' => array( 'name' => 'None' ) ), 62 | 'page' => array(), 63 | ); 64 | $this->inject( $this->object, 'settings', $settings ); 65 | 66 | 67 | $request = $this->getMockBuilder( '\Neos\Flow\Mvc\ActionRequest' ) 68 | ->setMethods( array( 'getArguments' ) ) 69 | ->disableOriginalConstructor() 70 | ->getMock(); 71 | 72 | 73 | $result = $this->object->get( $request, 'catalog/list' ); 74 | 75 | $this->assertInternalType( 'array', $result ); 76 | $this->assertArrayHasKey( 'aibody', $result ); 77 | $this->assertArrayHasKey( 'aiheader', $result ); 78 | } 79 | 80 | 81 | /** 82 | * @test 83 | */ 84 | public function injectSettings() 85 | { 86 | $this->object->injectSettings( array( 'test' ) ); 87 | 88 | $this->assertEquals( array( 'test' ), \PHPUnit\Framework\Assert::readAttribute( $this->object, 'settings' ) ); 89 | } 90 | } -------------------------------------------------------------------------------- /Tests/Unit/Base/ViewTest.php: -------------------------------------------------------------------------------- 1 | object = new \Aimeos\Shop\Base\View(); 20 | 21 | $this->inject( $i18n, 'aimeos', $aimeos ); 22 | $this->inject( $this->object, 'i18n', $i18n ); 23 | $this->inject( $this->object, 'view', $view ); 24 | $this->inject( $this->object, 'security', $security ); 25 | } 26 | 27 | 28 | /** 29 | * @test 30 | */ 31 | public function create() 32 | { 33 | $context = new \Aimeos\MShop\Context\Item\Standard(); 34 | $context->setConfig( new \Aimeos\MW\Config\PHPArray() ); 35 | $context->setSession( new \Aimeos\MW\Session\None() ); 36 | 37 | $uriBuilder = $this->getMockBuilder('\Neos\Flow\Mvc\Routing\UriBuilder') 38 | ->disableOriginalConstructor() 39 | ->getMock(); 40 | 41 | $view = $this->object->create( $context, $uriBuilder, array() ); 42 | 43 | $this->assertInstanceOf( '\Aimeos\MW\View\Iface', $view ); 44 | } 45 | 46 | 47 | /** 48 | * @test 49 | */ 50 | public function createWithRequest() 51 | { 52 | $context = new \Aimeos\MShop\Context\Item\Standard(); 53 | $context->setConfig( new \Aimeos\MW\Config\PHPArray() ); 54 | $context->setSession( new \Aimeos\MW\Session\None() ); 55 | 56 | $uriBuilder = $this->getMockBuilder( '\Neos\Flow\Mvc\Routing\UriBuilder' ) 57 | ->disableOriginalConstructor() 58 | ->getMock(); 59 | 60 | $httpRequest = new \Neos\Flow\Http\Request( array(), array(), array(), array() ); 61 | 62 | $request = $this->getMockBuilder( '\Neos\Flow\Mvc\ActionRequest' ) 63 | ->setMethods( array( 'getArguments', 'getControllerActionName', 'getHttpRequest' ) ) 64 | ->disableOriginalConstructor() 65 | ->getMock(); 66 | 67 | $request->expects( $this->exactly( 2 ) )->method( 'getArguments' ) 68 | ->will( $this->returnValue( array( 'site' => 'unittest', 'locale' => 'de', 'currency' => 'EUR' ) ) ); 69 | 70 | $request->expects( $this->once() )->method( 'getControllerActionName' ) 71 | ->will( $this->returnValue( 'list' ) ); 72 | 73 | $request->expects( $this->once() )->method( 'getHttpRequest' ) 74 | ->will( $this->returnValue( $httpRequest ) ); 75 | 76 | $view = $this->object->create( $context, $uriBuilder, array(), $request, 'de' ); 77 | 78 | $this->assertInstanceOf( '\Aimeos\MW\View\Iface', $view ); 79 | } 80 | } -------------------------------------------------------------------------------- /Classes/Aimeos/Shop/Base/Locale.php: -------------------------------------------------------------------------------- 1 | locale === null ) 46 | { 47 | $params = $request->getArguments(); 48 | 49 | $site = ( isset( $params['site'] ) ? $params['site'] : 'default' ); 50 | $lang = ( isset( $params['locale'] ) ? $params['locale'] : '' ); 51 | $currency = ( isset( $params['currency'] ) ? $params['currency'] : '' ); 52 | 53 | $disableSites = (bool) ( isset( $this->settings['flow']['disableSites'] ) ? $this->settings['flow']['disableSites'] : true ); 54 | 55 | $localeManager = \Aimeos\MShop::create( $context, 'locale' ); 56 | $this->locale = $localeManager->bootstrap( $site, $lang, $currency, $disableSites ); 57 | } 58 | 59 | return $this->locale; 60 | } 61 | 62 | 63 | /** 64 | * Returns the locale item for the current request 65 | * 66 | * @param \Aimeos\MShop\Context\Item\Iface $context Context object 67 | * @param string $site Unique site code 68 | * @return \Aimeos\MShop\Locale\Item\Iface Locale item object 69 | */ 70 | public function getBackend( \Aimeos\MShop\Context\Item\Iface $context, $site ) 71 | { 72 | $localeManager = \Aimeos\MShop::create( $context, 'locale' ); 73 | 74 | try { 75 | $localeItem = $localeManager->bootstrap( $site, '', '', false, null, true ); 76 | } catch( \Aimeos\MShop\Exception $e ) { 77 | $localeItem = $localeManager->createItem(); 78 | } 79 | 80 | return $localeItem->setCurrencyId( null )->setLanguageId( null ); 81 | } 82 | 83 | 84 | /** 85 | * Inject the settings 86 | * 87 | * @param array $settings 88 | * @return void 89 | */ 90 | public function injectSettings( array $settings ) 91 | { 92 | $this->settings = $settings; 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /Classes/Aimeos/Shop/ViewHelper/TranslateViewHelper.php: -------------------------------------------------------------------------------- 1 | registerArgument( 'singular', 'string', 'Singular form of the text to translate' ); 34 | $this->registerArgument( 'plural', 'string', 'Plural form of the text, used if $number is greater than one', false ); 35 | $this->registerArgument( 'number', 'integer', 'Amount of things relevant for the plural form', false ); 36 | $this->registerArgument( 'escape', 'boolean', 'If translated string should be escaped', false ); 37 | $this->registerArgument( 'domain', 'string', 'Translation domain from core or an extension', false ); 38 | $this->registerArgument( 'arguments', 'array', 'Arguments to be replaced in the resulting string', false ); 39 | } 40 | 41 | 42 | /** 43 | * Returns the translated string for the given phrase 44 | * 45 | * @return mixed Translated string 46 | */ 47 | public function render() 48 | { 49 | $iface = '\Aimeos\MW\View\Iface'; 50 | $view = $this->templateVariableContainer->get( '_aimeos_view' ); 51 | 52 | if( !is_object( $view ) || !( $view instanceof $iface ) ) { 53 | throw new Exception( 'Aimeos view object is missing' ); 54 | } 55 | 56 | if( !isset( $this->arguments['singular'] ) ) { 57 | throw new Exception( 'Attribute "singular" missing for Aimeos translate view helper' ); 58 | } 59 | 60 | $singular = $this->arguments['singular']; 61 | $plural = ( isset( $this->arguments['plural'] ) ? $this->arguments['plural'] : '' ); 62 | $number = ( isset( $this->arguments['number'] ) ? $this->arguments['number'] : 1 ); 63 | $escape = ( isset( $this->arguments['escape'] ) ? $this->arguments['escape'] : true ); 64 | $domain = ( isset( $this->arguments['domain'] ) ? $this->arguments['domain'] : 'client' ); 65 | $values = ( isset( $this->arguments['arguments'] ) ? $this->arguments['arguments'] : array() ); 66 | 67 | $string = vsprintf( $view->translate( $domain, $singular, $plural, $number ), (array) $values ); 68 | 69 | if( $escape === false ) { 70 | return $string; 71 | } 72 | 73 | return $view->encoder()->html( $string ); 74 | } 75 | } -------------------------------------------------------------------------------- /Classes/Aimeos/Shop/Base/Shop.php: -------------------------------------------------------------------------------- 1 | uriBuilder->setRequest( $request ); 65 | 66 | $tmplPaths = $this->aimeos->get()->getCustomPaths( 'client/html/templates' ); 67 | $pagesConfig = $this->settings['page']; 68 | $result = array( 'aibody' => array(), 'aiheader' => array() ); 69 | 70 | $context = $this->context->get( $request ); 71 | $langid = $context->getLocale()->getLanguageId(); 72 | $view = $this->view->create( $context, $this->uriBuilder, $tmplPaths, $request, $langid ); 73 | $context->setView( $view ); 74 | 75 | if( isset( $pagesConfig[$pageName] ) ) 76 | { 77 | foreach( (array) $pagesConfig[$pageName] as $clientName ) 78 | { 79 | $client = \Aimeos\Client\Html::create( $context, $clientName ); 80 | $client->setView( clone $view ); 81 | $client->process(); 82 | 83 | $varName = str_replace( '/', '_', $clientName ); 84 | 85 | $result['aibody'][$varName] = $client->getBody(); 86 | $result['aiheader'][$varName] = $client->getHeader(); 87 | } 88 | } 89 | 90 | return $result; 91 | } 92 | 93 | 94 | /** 95 | * Inject the settings 96 | * 97 | * @param array $settings 98 | * @return void 99 | */ 100 | public function injectSettings( array $settings ) 101 | { 102 | $this->settings = $settings; 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /Configuration/Routes.Default.yaml: -------------------------------------------------------------------------------- 1 | - 2 | name: 'Basket page' 3 | uriPattern: 'basket' 4 | defaults: 5 | '@package': 'Aimeos.Shop' 6 | '@controller': 'Basket' 7 | '@action': 'index' 8 | '@format': 'html' 9 | appendExceedingArguments: true 10 | 11 | - 12 | name: 'Catalog count XHR' 13 | uriPattern: 'count' 14 | defaults: 15 | '@package': 'Aimeos.Shop' 16 | '@controller': 'Catalog' 17 | '@action': 'count' 18 | '@format': 'html' 19 | appendExceedingArguments: true 20 | 21 | - 22 | name: 'Catalog detail page' 23 | uriPattern: 'd/{d_name}(/{d_pos})' 24 | defaults: 25 | '@package': 'Aimeos.Shop' 26 | '@controller': 'Catalog' 27 | '@action': 'detail' 28 | '@format': 'html' 29 | 'd_pos': '0' 30 | appendExceedingArguments: true 31 | 32 | - 33 | name: 'Catalog list page' 34 | uriPattern: 'list' 35 | defaults: 36 | '@package': 'Aimeos.Shop' 37 | '@controller': 'Catalog' 38 | '@action': 'list' 39 | '@format': 'html' 40 | appendExceedingArguments: true 41 | 42 | - 43 | name: 'Catalog session pinned products' 44 | uriPattern: 'd/pin/{pin_action}/{pin_id}(/{d_name})' 45 | defaults: 46 | '@package': 'Aimeos.Shop' 47 | '@controller': 'Catalog' 48 | '@action': 'detail' 49 | '@format': 'html' 50 | 'd_name': '' 51 | appendExceedingArguments: true 52 | 53 | - 54 | name: 'Catalog stock XHR' 55 | uriPattern: 'stock' 56 | defaults: 57 | '@package': 'Aimeos.Shop' 58 | '@controller': 'Catalog' 59 | '@action': 'stock' 60 | '@format': 'html' 61 | appendExceedingArguments: true 62 | 63 | - 64 | name: 'Catalog suggest XHR' 65 | uriPattern: 'suggest' 66 | defaults: 67 | '@package': 'Aimeos.Shop' 68 | '@controller': 'Catalog' 69 | '@action': 'suggest' 70 | '@format': 'html' 71 | appendExceedingArguments: true 72 | 73 | - 74 | name: 'Catalog tree page' 75 | uriPattern: 'c/{f_name}/{f_catid}' 76 | defaults: 77 | '@package': 'Aimeos.Shop' 78 | '@controller': 'Catalog' 79 | '@action': 'tree' 80 | '@format': 'html' 81 | appendExceedingArguments: true 82 | 83 | - 84 | name: 'Checkout page' 85 | uriPattern: 'checkout(/{c_step})' 86 | defaults: 87 | '@package': 'Aimeos.Shop' 88 | '@controller': 'Checkout' 89 | '@action': 'index' 90 | '@format': 'html' 91 | 'c_step': '' 92 | appendExceedingArguments: true 93 | 94 | - 95 | name: 'Checkout confirm page' 96 | uriPattern: 'confirm(/{code})' 97 | defaults: 98 | '@package': 'Aimeos.Shop' 99 | '@controller': 'Checkout' 100 | '@action': 'confirm' 101 | '@format': 'html' 102 | 'code': '' 103 | appendExceedingArguments: true 104 | -------------------------------------------------------------------------------- /Classes/Aimeos/Shop/Controller/AccountController.php: -------------------------------------------------------------------------------- 1 | view->assign( 'output', $this->getOutput( 'account/favorite' ) ); 31 | } 32 | 33 | 34 | /** 35 | * Returns the output of the account history component 36 | * 37 | * @return string Rendered HTML for the body 38 | */ 39 | public function historyComponentAction() 40 | { 41 | $this->view->assign( 'output', $this->getOutput( 'account/history' ) ); 42 | } 43 | 44 | 45 | /** 46 | * Returns the output of the account profile component 47 | * 48 | * @return string Rendered HTML for the body 49 | */ 50 | public function profileComponentAction() 51 | { 52 | $this->view->assign( 'output', $this->getOutput( 'account/profile' ) ); 53 | } 54 | 55 | 56 | /** 57 | * Returns the output of the account watch component 58 | * 59 | * @return string Rendered HTML for the body 60 | */ 61 | public function watchComponentAction() 62 | { 63 | $this->view->assign( 'output', $this->getOutput( 'account/watch' ) ); 64 | } 65 | 66 | 67 | /** 68 | * Content for MyAccount page 69 | * 70 | * @Flow\Session(autoStart = TRUE) 71 | */ 72 | public function indexAction() 73 | { 74 | $this->view->assignMultiple( $this->get( 'account-index' ) ); 75 | } 76 | 77 | 78 | /** 79 | * Content for MyAccount download page 80 | * 81 | * @Flow\Session(autoStart = TRUE) 82 | */ 83 | public function downloadAction() 84 | { 85 | $context = $this->context->get( $this->request ); 86 | $langid = $context->getLocale()->getLanguageId(); 87 | 88 | $view = $this->viewContainer->create( $context, $this->uriBuilder, array(), $this->request, $langid ); 89 | $context->setView( $view ); 90 | 91 | $client = \Aimeos\Client\Html::create( $context, 'account/download' ); 92 | $client->setView( $view ); 93 | $client->process(); 94 | 95 | $response = $view->response(); 96 | $this->response->setStatus( $response->getStatusCode() ); 97 | 98 | foreach( $response->getHeaders() as $key => $value ) { 99 | $this->response->setHeader( $key, $value ); 100 | } 101 | 102 | return $this->response; 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /Tests/Unit/Controller/BasketControllerTest.php: -------------------------------------------------------------------------------- 1 | object = $this->getMockBuilder( '\Aimeos\Shop\Controller\BasketController' ) 17 | ->setMethods( array( 'getOutput', 'get' ) ) 18 | ->disableOriginalConstructor() 19 | ->getMock(); 20 | 21 | $this->view = $this->getMockBuilder( '\Neos\Flow\Mvc\View\JsonView' ) 22 | ->disableOriginalConstructor() 23 | ->getMock(); 24 | 25 | $this->response = $this->getMockBuilder( '\Neos\Flow\Http\Response' ) 26 | ->disableOriginalConstructor() 27 | ->getMock(); 28 | 29 | $this->inject( $this->object, 'view', $this->view ); 30 | $this->inject( $this->object, 'response', $this->response ); 31 | } 32 | 33 | 34 | /** 35 | * @test 36 | */ 37 | public function indexAction() 38 | { 39 | $expected = array( 'aibody' => 'body', 'aiheader' => 'header' ); 40 | 41 | $this->object->expects( $this->once() )->method( 'get' ) 42 | ->will( $this->returnValue( $expected ) ); 43 | 44 | $this->view->expects( $this->once() )->method( 'assignMultiple' ) 45 | ->with( $this->equalTo( $expected ) ); 46 | 47 | $this->response->expects( $this->once() )->method( 'setHeader' ); 48 | 49 | $this->object->indexAction(); 50 | } 51 | 52 | 53 | /** 54 | * @test 55 | */ 56 | public function miniComponentAction() 57 | { 58 | $this->object->expects( $this->once() )->method( 'getOutput' ) 59 | ->will( $this->returnValue( 'body' ) ); 60 | 61 | $this->view->expects( $this->once() )->method( 'assign' ) 62 | ->with( $this->equalTo( 'output' ), $this->equalTo( 'body' ) ); 63 | 64 | $this->response->expects( $this->once() )->method( 'setHeader' ); 65 | 66 | $this->object->miniComponentAction(); 67 | } 68 | 69 | 70 | /** 71 | * @test 72 | */ 73 | public function relatedComponentAction() 74 | { 75 | $this->object->expects( $this->once() )->method( 'getOutput' ) 76 | ->will( $this->returnValue( 'body' ) ); 77 | 78 | $this->view->expects( $this->once() )->method( 'assign' ) 79 | ->with( $this->equalTo( 'output' ), $this->equalTo( 'body' ) ); 80 | 81 | $this->response->expects( $this->once() )->method( 'setHeader' ); 82 | 83 | $this->object->relatedComponentAction(); 84 | } 85 | 86 | 87 | /** 88 | * @test 89 | */ 90 | public function standardComponentAction() 91 | { 92 | $this->object->expects( $this->once() )->method( 'getOutput' ) 93 | ->will( $this->returnValue( 'body' ) ); 94 | 95 | $this->view->expects( $this->once() )->method( 'assign' ) 96 | ->with( $this->equalTo( 'output' ), $this->equalTo( 'body' ) ); 97 | 98 | $this->response->expects( $this->once() )->method( 'setHeader' ); 99 | 100 | $this->object->standardComponentAction(); 101 | } 102 | } -------------------------------------------------------------------------------- /Resources/Public/themes/elegance/email.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Shared CSS between website and e-mails 3 | * 4 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 5 | * @copyright Aimeos (aimeos.org), 2014 6 | */ 7 | 8 | a { 9 | color: #B0A060; 10 | } 11 | 12 | .logo img { 13 | max-width: 300px; 14 | margin: auto; 15 | } 16 | 17 | 18 | li.attr-item { 19 | list-style: none; 20 | padding: 0; 21 | margin: 0; 22 | } 23 | 24 | 25 | /* Account creation */ 26 | 27 | .account-login .btn-primary tr { 28 | background: #ba9a5a; 29 | color: #ffffff; 30 | } 31 | 32 | 33 | /* Common summary */ 34 | .common-summary .item { 35 | vertical-align: top; 36 | } 37 | 38 | .common-summary .content { 39 | padding: 0.5em; 40 | margin: 10px; 41 | } 42 | 43 | .common-summary .item h3 { 44 | border-bottom: solid 1px #B0A060; 45 | padding: 0.5em; 46 | margin: 10px; 47 | } 48 | 49 | .common-summary .item h4 { 50 | vertical-align: middle; 51 | display: inline-block; 52 | font-size: 1em; 53 | margin: 0.5em 0; 54 | padding: 0; 55 | color: #555; 56 | } 57 | 58 | .common-summary .item li { 59 | vertical-align: top; 60 | padding: 0; 61 | } 62 | 63 | .common-summary .item .name { 64 | padding: 0.25em 0; 65 | display: block; 66 | color: #555; 67 | } 68 | 69 | .common-summary .item .value { 70 | display: block; 71 | } 72 | 73 | .common-summary .item .attr-list { 74 | list-style: none; 75 | padding: 0; 76 | margin: 0; 77 | margin-bottom: 0.5; 78 | } 79 | 80 | .basket { 81 | padding: 10px !important; 82 | } 83 | 84 | .basket th, 85 | .basket td { 86 | vertical-align: middle; 87 | padding: 0.5em; 88 | } 89 | 90 | .basket .header { 91 | font-weight: bold; 92 | background-color: #F0F0F0; 93 | border-bottom: 1px solid #D0D0D0; 94 | color: #555; 95 | } 96 | 97 | .basket .body { 98 | border-bottom: 1px solid #D0D0D0; 99 | } 100 | 101 | .basket th.label { 102 | text-align: left; 103 | } 104 | 105 | .basket td.quantity { 106 | white-space: nowrap; 107 | text-align: center; 108 | } 109 | 110 | .basket td.price { 111 | text-align: right; 112 | white-space: nowrap; 113 | } 114 | 115 | .basket .product .product-image { 116 | max-height: 150px; 117 | } 118 | 119 | .basket .product .product-name { 120 | margin: 0.5em 0; 121 | display: block; 122 | } 123 | 124 | .basket .product .code, 125 | .basket .product .timeframe { 126 | margin: 0.5em; 127 | } 128 | 129 | .basket .product .attr-list { 130 | vertical-align: top; 131 | color: #555; 132 | margin: 0.5em; 133 | padding: 0; 134 | } 135 | 136 | .basket .product li.attr-item { 137 | display: inline; 138 | } 139 | 140 | .basket .product li.attr-item:not(:last-of-type) .value:after { 141 | content: ","; 142 | } 143 | 144 | .basket .footer { 145 | vertical-align: bottom; 146 | } 147 | 148 | .basket .subtotal { 149 | font-weight: bold; 150 | color: #555; 151 | } 152 | 153 | .basket .total { 154 | border-top: 1px solid #D0D0D0; 155 | background-color: #F0F0F0; 156 | font-weight: bold; 157 | color: #555; 158 | } 159 | -------------------------------------------------------------------------------- /Tests/Unit/Controller/AccountControllerTest.php: -------------------------------------------------------------------------------- 1 | object = $this->getMockBuilder( '\Aimeos\Shop\Controller\AccountController' ) 17 | ->setMethods( array( 'getOutput', 'get' ) ) 18 | ->disableOriginalConstructor() 19 | ->getMock(); 20 | 21 | $this->view = $this->getMockBuilder( '\Neos\Flow\Mvc\View\JsonView' ) 22 | ->disableOriginalConstructor() 23 | ->getMock(); 24 | 25 | $this->response = $this->getMockBuilder( '\Neos\Flow\Http\Response' ) 26 | ->disableOriginalConstructor() 27 | ->getMock(); 28 | 29 | $this->inject( $this->object, 'view', $this->view ); 30 | $this->inject( $this->object, 'response', $this->response ); 31 | } 32 | 33 | 34 | /** 35 | * @test 36 | */ 37 | public function indexAction() 38 | { 39 | $expected = array( 'aibody' => 'body', 'aiheader' => 'header' ); 40 | 41 | $this->object->expects( $this->once() )->method( 'get' ) 42 | ->will( $this->returnValue( $expected ) ); 43 | 44 | $this->view->expects( $this->once() )->method( 'assignMultiple' ) 45 | ->with( $this->equalTo( $expected ) ); 46 | 47 | $this->object->indexAction(); 48 | } 49 | 50 | 51 | /** 52 | * @test 53 | */ 54 | public function favoriteComponentAction() 55 | { 56 | $this->object->expects( $this->once() )->method( 'getOutput' ) 57 | ->will( $this->returnValue( 'body' ) ); 58 | 59 | $this->view->expects( $this->once() )->method( 'assign' ) 60 | ->with( $this->equalTo( 'output' ), $this->equalTo( 'body' ) ); 61 | 62 | $this->object->favoriteComponentAction(); 63 | } 64 | 65 | 66 | /** 67 | * @test 68 | */ 69 | public function historyComponentAction() 70 | { 71 | $this->object->expects( $this->once() )->method( 'getOutput' ) 72 | ->will( $this->returnValue( 'body' ) ); 73 | 74 | $this->view->expects( $this->once() )->method( 'assign' ) 75 | ->with( $this->equalTo( 'output' ), $this->equalTo( 'body' ) ); 76 | 77 | $this->object->historyComponentAction(); 78 | } 79 | 80 | 81 | /** 82 | * @test 83 | */ 84 | public function profileComponentAction() 85 | { 86 | $this->object->expects( $this->once() )->method( 'getOutput' ) 87 | ->will( $this->returnValue( 'body' ) ); 88 | 89 | $this->view->expects( $this->once() )->method( 'assign' ) 90 | ->with( $this->equalTo( 'output' ), $this->equalTo( 'body' ) ); 91 | 92 | $this->object->profileComponentAction(); 93 | } 94 | 95 | 96 | /** 97 | * @test 98 | */ 99 | public function watchComponentAction() 100 | { 101 | $this->object->expects( $this->once() )->method( 'getOutput' ) 102 | ->will( $this->returnValue( 'body' ) ); 103 | 104 | $this->view->expects( $this->once() )->method( 'assign' ) 105 | ->with( $this->equalTo( 'output' ), $this->equalTo( 'body' ) ); 106 | 107 | $this->object->watchComponentAction(); 108 | } 109 | } -------------------------------------------------------------------------------- /Tests/Functional/Controller/JsonapiControllerTest.php: -------------------------------------------------------------------------------- 1 | browser->request( 'http://localhost/unittest/jsonapi', 'OPTIONS' ); 13 | $json = json_decode( $response->getContent(), true ); 14 | 15 | $this->assertNotNull( $json ); 16 | $this->assertEquals( 200, $response->getStatusCode() ); 17 | $this->assertArrayHasKey( 'resources', $json['meta'] ); 18 | $this->assertGreaterThan( 1, count( $json['meta']['resources'] ) ); 19 | } 20 | 21 | 22 | public function testGetAction() 23 | { 24 | $params = ['filter' => ['f_search' => 'Cafe Noire Cap']]; 25 | $response = $this->browser->request( 'http://localhost/unittest/jsonapi/product', 'GET', $params ); 26 | $json = json_decode( $response->getContent(), true ); 27 | 28 | $this->assertNotNull( $json ); 29 | $this->assertEquals( 200, $response->getStatusCode() ); 30 | $this->assertEquals( 2, $json['meta']['total'] ); 31 | $this->assertEquals( 2, count( $json['data'] ) ); 32 | $this->assertArrayHasKey( 'id', $json['data'][0] ); 33 | $this->assertEquals( 'CNC', $json['data'][0]['attributes']['product.code'] ); 34 | 35 | $id = $json['data'][0]['id']; 36 | 37 | 38 | $response = $this->browser->request( 'http://localhost/unittest/jsonapi/product', 'GET', ['id' => $id] ); 39 | $json = json_decode( $response->getContent(), true ); 40 | 41 | $this->assertNotNull( $json ); 42 | $this->assertEquals( 200, $response->getStatusCode() ); 43 | $this->assertEquals( 1, $json['meta']['total'] ); 44 | $this->assertArrayHasKey( 'id', $json['data'] ); 45 | $this->assertEquals( 'CNC', $json['data']['attributes']['product.code'] ); 46 | } 47 | 48 | 49 | /* 50 | * @Flow\Session(autoStart = TRUE) 51 | */ 52 | public function testPostAction() 53 | { 54 | // get CNC product 55 | $params = ['filter' => ['f_search' => 'Cafe Noire Cap', 'f_listtype' => 'unittype19']]; 56 | $response = $this->browser->request( 'http://localhost/unittest/jsonapi/product', 'GET', $params ); 57 | $json = json_decode( $response->getContent(), true ); 58 | $this->assertEquals( 'CNC', $json['data'][0]['attributes']['product.code'] ); 59 | 60 | // add CNC product to basket 61 | $params = ['id' => 'default', 'related' => 'product']; 62 | $content = json_encode( ['data' => ['attributes' => ['product.id' => $json['data'][0]['id']]]] ); 63 | $response = $this->browser->request( 'http://localhost/unittest/jsonapi/basket', 'POST', $params, [], [], $content ); 64 | $json = json_decode( $response->getContent(), true ); 65 | 66 | $this->assertEquals( 201, $response->getStatusCode() ); 67 | $this->assertEquals( 'CNC', $json['included'][0]['attributes']['order.base.product.prodcode'] ); 68 | } 69 | 70 | 71 | public function testPutAction() 72 | { 73 | $response = $this->browser->request( 'http://localhost/unittest/jsonapi/basket', 'PUT' ); 74 | $json = json_decode( $response->getContent(), true ); 75 | $this->assertArrayHasKey( 'errors', $json ); 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /Configuration/NodeTypes.yaml: -------------------------------------------------------------------------------- 1 | 'Aimeos.Shop:Plugin': 2 | superTypes: ['Neos.Neos:Plugin'] 3 | ui: 4 | label: 'Aimeos web shop' 5 | group: 'plugins' 6 | options: 7 | pluginViews: 8 | 'AccountFavorite': 9 | label: 'Aimeos Account Favorite' 10 | controllerActions: 11 | 'Aimeos\Shop\Controller\AccountController': ['favoriteComponent'] 12 | 'AccountHistory': 13 | label: 'Aimeos Account History' 14 | controllerActions: 15 | 'Aimeos\Shop\Controller\AccountController': ['historyComponent'] 16 | 'AccountWatch': 17 | label: 'Aimeos Account Watch' 18 | controllerActions: 19 | 'Aimeos\Shop\Controller\AccountController': ['watchComponent'] 20 | 21 | 'BasketMini': 22 | label: 'Aimeos Basket Small' 23 | controllerActions: 24 | 'Aimeos\Shop\Controller\BasketController': ['miniComponent'] 25 | 'BasketRelated': 26 | label: 'Aimeos Basket Related' 27 | controllerActions: 28 | 'Aimeos\Shop\Controller\BasketController': ['relatedComponent'] 29 | 'BasketStandard': 30 | label: 'Aimeos Basket Standard' 31 | controllerActions: 32 | 'Aimeos\Shop\Controller\BasketController': ['standardComponent'] 33 | 34 | 'CatalogCount': 35 | label: 'Aimeos Catalog Count JSON' 36 | controllerActions: 37 | 'Aimeos\Shop\Controller\CatalogController': ['countComponent'] 38 | 'CatalogDetail': 39 | label: 'Aimeos Catalog Detail' 40 | controllerActions: 41 | 'Aimeos\Shop\Controller\CatalogController': ['detailComponent'] 42 | 'CatalogFilter': 43 | label: 'Aimeos Catalog Filter' 44 | controllerActions: 45 | 'Aimeos\Shop\Controller\CatalogController': ['filterComponent'] 46 | 'CatalogList': 47 | label: 'Aimeos Catalog List' 48 | controllerActions: 49 | 'Aimeos\Shop\Controller\CatalogController': ['listComponent'] 50 | 'CatalogSession': 51 | label: 'Aimeos Catalog Session' 52 | controllerActions: 53 | 'Aimeos\Shop\Controller\CatalogController': ['sessionComponent'] 54 | 'CatalogStage': 55 | label: 'Aimeos Catalog Stage' 56 | controllerActions: 57 | 'Aimeos\Shop\Controller\CatalogController': ['stageComponent'] 58 | 'CatalogStock': 59 | label: 'Aimeos Catalog Stock JS' 60 | controllerActions: 61 | 'Aimeos\Shop\Controller\CatalogController': ['stockComponent'] 62 | 'CatalogSuggest': 63 | label: 'Aimeos Catalog Suggest JSON' 64 | controllerActions: 65 | 'Aimeos\Shop\Controller\CatalogController': ['suggestComponent'] 66 | 67 | 'CheckoutConfirm': 68 | label: 'Aimeos Checkout Confirm' 69 | controllerActions: 70 | 'Aimeos\Shop\Controller\CheckoutController': ['confirmComponent'] 71 | 'CheckoutStandard': 72 | label: 'Aimeos Checkout Standard' 73 | controllerActions: 74 | 'Aimeos\Shop\Controller\CheckoutController': ['standardComponent'] 75 | 'CheckoutUpdate': 76 | label: 'Aimeos Checkout Update' 77 | controllerActions: 78 | 'Aimeos\Shop\Controller\CheckoutController': ['updateComponent'] 79 | 80 | 'LocaleSelect': 81 | label: 'Aimeos Locale Selector' 82 | controllerActions: 83 | 'Aimeos\Shop\Controller\LocaleController': ['selectComponent'] 84 | -------------------------------------------------------------------------------- /Tests/Functional/Controller/JqadmControllerTest.php: -------------------------------------------------------------------------------- 1 | browser->request( 'http://localhost/unittest/jqadm/file/css', 'GET' ); 13 | 14 | $this->assertEquals( 200, $response->getStatusCode() ); 15 | $this->assertContains( '.aimeos', $response->getContent() ); 16 | } 17 | 18 | 19 | public function testFileActionJs() 20 | { 21 | $response = $this->browser->request( 'http://localhost/unittest/jqadm/file/js', 'GET' ); 22 | 23 | $this->assertEquals( 200, $response->getStatusCode() ); 24 | $this->assertContains( 'Aimeos = {', $response->getContent() ); 25 | } 26 | 27 | 28 | /* 29 | * @Flow\Session(autoStart = TRUE) 30 | */ 31 | public function testCopyAction() 32 | { 33 | $response = $this->browser->request( 'http://localhost/unittest/jqadm/copy/product?id=0', 'GET' ); 34 | 35 | $this->assertEquals( 200, $response->getStatusCode() ); 36 | $this->assertContains( 'item-product', $response->getContent() ); 37 | } 38 | 39 | 40 | /* 41 | * @Flow\Session(autoStart = TRUE) 42 | */ 43 | public function testCreateAction() 44 | { 45 | $response = $this->browser->request( 'http://localhost/unittest/jqadm/create/product', 'GET' ); 46 | 47 | $this->assertEquals( 200, $response->getStatusCode() ); 48 | $this->assertContains( 'item-product', $response->getContent() ); 49 | } 50 | 51 | 52 | /* 53 | * @Flow\Session(autoStart = TRUE) 54 | */ 55 | public function testDeleteAction() 56 | { 57 | $response = $this->browser->request( 'http://localhost/unittest/jqadm/delete/product?id=0', 'GET' ); 58 | 59 | $this->assertEquals( 302, $response->getStatusCode() ); 60 | } 61 | 62 | 63 | /* 64 | * @Flow\Session(autoStart = TRUE) 65 | */ 66 | public function testExportAction() 67 | { 68 | $response = $this->browser->request( 'http://localhost/unittest/jqadm/export/order', 'GET' ); 69 | 70 | $this->assertEquals( 200, $response->getStatusCode() ); 71 | $this->assertContains( 'list-items', $response->getContent() ); 72 | } 73 | 74 | 75 | /* 76 | * @Flow\Session(autoStart = TRUE) 77 | */ 78 | public function testGetAction() 79 | { 80 | $response = $this->browser->request( 'http://localhost/unittest/jqadm/get/product?id=0', 'GET' ); 81 | 82 | $this->assertEquals( 200, $response->getStatusCode() ); 83 | $this->assertContains( 'item-product', $response->getContent() ); 84 | } 85 | 86 | 87 | /* 88 | * @Flow\Session(autoStart = TRUE) 89 | */ 90 | public function testSaveAction() 91 | { 92 | $response = $this->browser->request( 'http://localhost/unittest/jqadm/save/product', 'POST' ); 93 | 94 | $this->assertEquals( 200, $response->getStatusCode() ); 95 | $this->assertContains( 'item-product', $response->getContent() ); 96 | } 97 | 98 | 99 | /* 100 | * @Flow\Session(autoStart = TRUE) 101 | */ 102 | public function testSearchAction() 103 | { 104 | $response = $this->browser->request( 'http://localhost/unittest/jqadm/search/product', 'GET' ); 105 | 106 | $this->assertEquals( 200, $response->getStatusCode() ); 107 | $this->assertContains( 'list-items', $response->getContent() ); 108 | } 109 | 110 | 111 | public function testSearchActionSite() 112 | { 113 | $response = $this->browser->request( 'http://localhost/invalid/jqadm/search/product', 'GET' ); 114 | 115 | $this->assertEquals( 500, $response->getStatusCode() ); 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Jqadm/Index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Aimeos administration interface 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 21 | 22 | 23 | {content} 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /Tests/Unit/Controller/CheckoutControllerTest.php: -------------------------------------------------------------------------------- 1 | object = $this->getMockBuilder( '\Aimeos\Shop\Controller\CheckoutController' ) 17 | ->setMethods( array( 'getOutput', 'get' ) ) 18 | ->disableOriginalConstructor() 19 | ->getMock(); 20 | 21 | $this->view = $this->getMockBuilder( '\Neos\Flow\Mvc\View\JsonView' ) 22 | ->disableOriginalConstructor() 23 | ->getMock(); 24 | 25 | $this->response = $this->getMockBuilder( '\Neos\Flow\Http\Response' ) 26 | ->disableOriginalConstructor() 27 | ->getMock(); 28 | 29 | $this->inject( $this->object, 'view', $this->view ); 30 | $this->inject( $this->object, 'response', $this->response ); 31 | } 32 | 33 | 34 | /** 35 | * @test 36 | */ 37 | public function indexAction() 38 | { 39 | $expected = array( 'aibody' => 'body', 'aiheader' => 'header' ); 40 | 41 | $this->object->expects( $this->once() )->method( 'get' ) 42 | ->will( $this->returnValue( $expected ) ); 43 | 44 | $this->view->expects( $this->once() )->method( 'assignMultiple' ) 45 | ->with( $this->equalTo( $expected ) ); 46 | 47 | $this->response->expects( $this->once() )->method( 'setHeader' ); 48 | 49 | $this->object->indexAction(); 50 | } 51 | 52 | 53 | /** 54 | * @test 55 | */ 56 | public function confirmAction() 57 | { 58 | $expected = array( 'aibody' => 'body', 'aiheader' => 'header' ); 59 | 60 | $this->object->expects( $this->once() )->method( 'get' ) 61 | ->will( $this->returnValue( $expected ) ); 62 | 63 | $this->view->expects( $this->once() )->method( 'assignMultiple' ) 64 | ->with( $this->equalTo( $expected ) ); 65 | 66 | $this->response->expects( $this->once() )->method( 'setHeader' ); 67 | 68 | $this->object->confirmAction(); 69 | } 70 | 71 | 72 | /** 73 | * @test 74 | */ 75 | public function updateAction() 76 | { 77 | $expected = array( 'aibody' => 'body', 'aiheader' => 'header' ); 78 | 79 | $this->object->expects( $this->once() )->method( 'get' ) 80 | ->will( $this->returnValue( $expected ) ); 81 | 82 | $this->view->expects( $this->once() )->method( 'assignMultiple' ) 83 | ->with( $this->equalTo( $expected ) ); 84 | 85 | $this->response->expects( $this->once() )->method( 'setHeader' ); 86 | 87 | $this->object->updateAction(); 88 | } 89 | 90 | 91 | /** 92 | * @test 93 | */ 94 | public function confirmComponentAction() 95 | { 96 | $this->object->expects( $this->once() )->method( 'getOutput' ) 97 | ->will( $this->returnValue( 'body' ) ); 98 | 99 | $this->view->expects( $this->once() )->method( 'assign' ) 100 | ->with( $this->equalTo( 'output' ), $this->equalTo( 'body' ) ); 101 | 102 | $this->response->expects( $this->once() )->method( 'setHeader' ); 103 | 104 | $this->object->confirmComponentAction(); 105 | } 106 | 107 | 108 | /** 109 | * @test 110 | */ 111 | public function standardComponentAction() 112 | { 113 | $this->object->expects( $this->once() )->method( 'getOutput' ) 114 | ->will( $this->returnValue( 'body' ) ); 115 | 116 | $this->view->expects( $this->once() )->method( 'assign' ) 117 | ->with( $this->equalTo( 'output' ), $this->equalTo( 'body' ) ); 118 | 119 | $this->response->expects( $this->once() )->method( 'setHeader' ); 120 | 121 | $this->object->standardComponentAction(); 122 | } 123 | 124 | 125 | /** 126 | * @test 127 | */ 128 | public function updateComponentAction() 129 | { 130 | $this->object->expects( $this->once() )->method( 'getOutput' ) 131 | ->will( $this->returnValue( 'body' ) ); 132 | 133 | $this->view->expects( $this->once() )->method( 'assign' ) 134 | ->with( $this->equalTo( 'output' ), $this->equalTo( 'body' ) ); 135 | 136 | $this->response->expects( $this->once() )->method( 'setHeader' ); 137 | 138 | $this->object->updateComponentAction(); 139 | } 140 | } -------------------------------------------------------------------------------- /Configuration/Settings.yaml: -------------------------------------------------------------------------------- 1 | Aimeos: 2 | Shop: 3 | flow: 4 | apc: 5 | enable: false 6 | prefix: 'flow:' 7 | # cache: 8 | # name: None 9 | # prefix: myshop 10 | extdir: "%FLOW_PATH_PACKAGES%Extensions" 11 | uploaddir: / 12 | 13 | page: 14 | account-index: ['account/profile','account/subscription','account/history','account/favorite','account/watch','basket/mini','catalog/session'] 15 | basket-index: ['basket/bulk', 'basket/standard','basket/related'] 16 | catalog-count: ['catalog/count'] 17 | catalog-detail: ['basket/mini','catalog/stage','catalog/detail','catalog/session'] 18 | catalog-list: ['basket/mini','catalog/filter','catalog/lists'] 19 | catalog-stock: ['catalog/stock'] 20 | catalog-suggest: ['catalog/suggest'] 21 | catalog-tree: ['basket/mini','catalog/filter','catalog/stage','catalog/lists'] 22 | checkout-confirm: ['checkout/confirm'] 23 | checkout-index: ['checkout/standard'] 24 | checkout-update: ['checkout/update'] 25 | 26 | resource: 27 | db: 28 | adapter: mysql 29 | stmt: ["SET SESSION sort_buffer_size=2097144; SET NAMES 'utf8'; SET SESSION sql_mode='ANSI'"] 30 | host: 31 | port: 32 | database: 33 | username: 34 | password: 35 | limit: 3 36 | opt-persistent: 0 37 | fs: 38 | adapter: Standard 39 | basedir: "%FLOW_PATH_WEB%" 40 | tempdir: "%FLOW_PATH_DATA%Temporary" 41 | baseurl: "/" 42 | fs-admin: 43 | adapter: Standard 44 | basedir: "%FLOW_PATH_WEB%Uploads" 45 | tempdir: "%FLOW_PATH_DATA%Temporary" 46 | fs-import: 47 | adapter: Standard 48 | basedir: "%FLOW_PATH_DATA%Import" 49 | tempdir: "%FLOW_PATH_DATA%Temporary" 50 | fs-secure: 51 | adapter: Standard 52 | basedir: "%FLOW_PATH_DATA%Persistent/Secure" 53 | tempdir: "%FLOW_PATH_DATA%Temporary" 54 | mq: 55 | adapter: Standard 56 | db: db 57 | 58 | admin: 59 | jsonadm: 60 | url: 61 | config: 62 | absoluteUri: true 63 | options: 64 | config: 65 | absoluteUri: true 66 | 67 | client: 68 | html: 69 | account: 70 | index: 71 | url: 72 | action: index 73 | subscription: 74 | url: 75 | action: index 76 | favorite: 77 | url: 78 | action: index 79 | watch: 80 | url: 81 | action: index 82 | download: 83 | url: 84 | error: 85 | action: index 86 | checkout: 87 | standard: 88 | summary: 89 | option: 90 | terms: 91 | url: 92 | controller: Page 93 | action: terms 94 | cancel: 95 | url: 96 | controller: Page 97 | action: terms 98 | privacy: 99 | url: 100 | controller: Page 101 | action: privacy 102 | jsonapi: 103 | url: 104 | config: 105 | absoluteUri: true 106 | 107 | controller: 108 | common: 109 | media: 110 | standard: 111 | # Mime icon related settings 112 | mimeicon: 113 | # Directory where icons for the mime types stored. Must be relative to the path in "basedir" 114 | directory: _Resources/Static/Packages/Aimeos.Shop/mimeicons 115 | # File extension of mime type icons 116 | extension: .png 117 | 118 | i18n: 119 | 120 | madmin: 121 | 122 | mshop: 123 | index: 124 | manager: 125 | attribute: 126 | name: MySQL 127 | catalog: 128 | name: MySQL 129 | price: 130 | name: MySQL 131 | supplier: 132 | name: MySQL 133 | text: 134 | name: MySQL 135 | -------------------------------------------------------------------------------- /Tests/Unit/Controller/AbstractControllerTest.php: -------------------------------------------------------------------------------- 1 | object = $this->getMockBuilder( '\Aimeos\Shop\Controller\AbstractController' ) 16 | ->disableOriginalConstructor() 17 | ->getMock(); 18 | 19 | $this->view = $this->getMockBuilder( '\Neos\Flow\Mvc\View\JsonView' ) 20 | ->setMethods( array( 'assign' ) ) 21 | ->disableOriginalConstructor() 22 | ->getMock(); 23 | 24 | $this->inject( $this->object, 'view', $this->view ); 25 | 26 | $request = $this->getMockBuilder( '\Neos\Flow\Mvc\ActionRequest' ) 27 | ->disableOriginalConstructor() 28 | ->getMock(); 29 | 30 | $this->inject( $this->object, 'request', $request ); 31 | } 32 | 33 | 34 | /** 35 | * @test 36 | */ 37 | public function getOutput() 38 | { 39 | $aimeos = new \Aimeos\Shop\Base\Aimeos(); 40 | $this->inject( $this->object, 'aimeos', $aimeos ); 41 | 42 | 43 | $context = $this->getMockBuilder( '\Aimeos\Shop\Base\Context' ) 44 | ->setMethods( array( 'get' ) ) 45 | ->disableOriginalConstructor() 46 | ->getMock(); 47 | 48 | $ctx = new \Aimeos\MShop\Context\Item\Standard(); 49 | $ctx->setConfig( new \Aimeos\MW\Config\PHPArray() ); 50 | $ctx->setLocale( new \Aimeos\MShop\Locale\Item\Standard( array( 'langid' => 'de' ) ) ); 51 | 52 | $context->expects( $this->once() )->method( 'get' ) 53 | ->will( $this->returnValue( $ctx ) ); 54 | 55 | $this->inject( $this->object, 'context', $context ); 56 | 57 | 58 | $viewContainer = $this->getMockBuilder( '\Aimeos\Shop\Base\View' ) 59 | ->setMethods( array( 'create' ) ) 60 | ->disableOriginalConstructor() 61 | ->getMock(); 62 | 63 | $mwView = new \Aimeos\MW\View\Standard(); 64 | 65 | $viewContainer->expects( $this->once() )->method( 'create' ) 66 | ->will( $this->returnValue( $mwView ) ); 67 | 68 | $this->inject( $this->object, 'viewContainer', $viewContainer ); 69 | 70 | 71 | $uriBuilder = $this->getMockBuilder( '\Neos\Flow\Mvc\Routing\UriBuilder' ) 72 | ->disableOriginalConstructor() 73 | ->getMock(); 74 | 75 | $this->inject( $this->object, 'uriBuilder', $uriBuilder ); 76 | 77 | 78 | $client = $this->getMockBuilder( '\Aimeos\Client\Html\Catalog\Lists\Standard' ) 79 | ->setMethods( array( 'getBody', 'getHeader', 'process') ) 80 | ->disableOriginalConstructor() 81 | ->getMock(); 82 | 83 | $client->expects( $this->once() )->method( 'getBody' ) 84 | ->will( $this->returnValue( 'body' ) ); 85 | 86 | $client->expects( $this->once() )->method( 'getHeader' ) 87 | ->will( $this->returnValue( 'header' ) ); 88 | 89 | $client->expects( $this->once() )->method( 'process' ); 90 | 91 | \Aimeos\Client\Html\Catalog\Lists\Factory::injectClient( '\Aimeos\Client\Html\Catalog\Lists\Standard', $client ); 92 | 93 | 94 | $this->view->expects( $this->once() )->method( 'assign' ) 95 | ->with( $this->equalTo( 'aimeos_component_header' ), $this->equalTo( 'header' ) ); 96 | 97 | 98 | $class = new \ReflectionClass( '\Aimeos\Shop\Controller\AbstractController' ); 99 | $method = $class->getMethod( 'getOutput' ); 100 | $method->setAccessible( true ); 101 | 102 | 103 | $result = $method->invokeArgs( $this->object, array( 'catalog/lists' ) ); 104 | 105 | $this->assertEquals( 'body', $result ); 106 | } 107 | 108 | 109 | /** 110 | * @test 111 | */ 112 | public function get() 113 | { 114 | $expected = array( 'aibody' => 'body', 'aiheader' => 'header' ); 115 | 116 | $shop = $this->getMockBuilder( '\Aimeos\Shop\Base\Shop' ) 117 | ->setMethods( array( 'get' ) ) 118 | ->disableOriginalConstructor() 119 | ->getMock(); 120 | 121 | $this->inject( $this->object, 'shop', $shop ); 122 | 123 | $shop->expects( $this->once() )->method( 'get' ) 124 | ->will( $this->returnValue( $expected ) ); 125 | 126 | 127 | $class = new \ReflectionClass( '\Aimeos\Shop\Controller\AbstractController' ); 128 | $method = $class->getMethod( 'get' ); 129 | $method->setAccessible( true ); 130 | 131 | 132 | $result = $method->invokeArgs( $this->object, array( 'test' ) ); 133 | 134 | $this->assertEquals( $expected, $result ); 135 | } 136 | } -------------------------------------------------------------------------------- /Classes/Aimeos/Shop/Controller/CatalogController.php: -------------------------------------------------------------------------------- 1 | view->assign( 'output', $this->getOutput( 'catalog/count' ) ); 31 | $this->response->setHeader( 'Content-Type', 'application/javascript' ); 32 | } 33 | 34 | 35 | /** 36 | * Returns the output of the catalog detail component 37 | * 38 | * @return string Rendered HTML for the body 39 | */ 40 | public function detailComponentAction() 41 | { 42 | $this->view->assign( 'output', $this->getOutput( 'catalog/detail' ) ); 43 | } 44 | 45 | 46 | /** 47 | * Returns the output of the catalog filter component 48 | * 49 | * @return string Rendered HTML for the body 50 | */ 51 | public function filterComponentAction() 52 | { 53 | $this->view->assign( 'output', $this->getOutput( 'catalog/filter' ) ); 54 | } 55 | 56 | 57 | /** 58 | * Returns the output of the catalog list component 59 | * 60 | * @return string Rendered HTML for the body 61 | */ 62 | public function listComponentAction() 63 | { 64 | $this->view->assign( 'output', $this->getOutput( 'catalog/lists' ) ); 65 | } 66 | 67 | 68 | /** 69 | * Returns the output of the catalog session component 70 | * 71 | * @return string Rendered HTML for the body 72 | */ 73 | public function sessionComponentAction() 74 | { 75 | $this->view->assign( 'output', $this->getOutput( 'catalog/session' ) ); 76 | } 77 | 78 | 79 | /** 80 | * Returns the output of the catalog stage component 81 | * 82 | * @return string Rendered HTML for the body 83 | */ 84 | public function stageComponentAction() 85 | { 86 | $this->view->assign( 'output', $this->getOutput( 'catalog/stage' ) ); 87 | } 88 | 89 | 90 | /** 91 | * Returns the output of the catalog stock component 92 | * 93 | * @return string Rendered HTML for the body 94 | */ 95 | public function stockComponentAction() 96 | { 97 | $this->view->assign( 'output', $this->getOutput( 'catalog/stock' ) ); 98 | $this->response->setHeader( 'Content-Type', 'application/javascript' ); 99 | } 100 | 101 | 102 | /** 103 | * Returns the output of the catalog suggest component 104 | * 105 | * @return string Rendered HTML for the body 106 | */ 107 | public function suggestComponentAction() 108 | { 109 | $this->view->assign( 'output', $this->getOutput( 'catalog/suggest' ) ); 110 | $this->response->setHeader( 'Content-Type', 'application/json' ); 111 | } 112 | 113 | 114 | /** 115 | * Renders the catalog counts. 116 | */ 117 | public function countAction() 118 | { 119 | $this->view->assignMultiple( $this->get( 'catalog-count' ) ); 120 | $this->response->setHeader( 'Content-Type', 'application/javascript' ); 121 | $this->response->setHeader( 'Cache-Control', 'max-age=300' ); 122 | } 123 | 124 | 125 | /** 126 | * Content for catalog detail page 127 | * 128 | * @Flow\Session(autoStart = TRUE) 129 | */ 130 | public function detailAction() 131 | { 132 | $this->view->assignMultiple( $this->get( 'catalog-detail' ) ); 133 | $this->response->setHeader( 'Cache-Control', 'max-age=10' ); 134 | } 135 | 136 | 137 | /** 138 | * Content for catalog list page 139 | * 140 | * @Flow\Session(autoStart = TRUE) 141 | */ 142 | public function listAction() 143 | { 144 | $this->view->assignMultiple( $this->get( 'catalog-list' ) ); 145 | $this->response->setHeader( 'Cache-Control', 'max-age=10' ); 146 | } 147 | 148 | 149 | /** 150 | * Renders the catalog stock section. 151 | */ 152 | public function stockAction() 153 | { 154 | $this->view->assignMultiple( $this->get( 'catalog-stock' ) ); 155 | $this->response->setHeader( 'Content-Type', 'application/javascript' ); 156 | $this->response->setHeader( 'Cache-Control', 'max-age=30' ); 157 | } 158 | 159 | 160 | /** 161 | * Renders a list of product names in JSON format. 162 | */ 163 | public function suggestAction() 164 | { 165 | $this->view->assignMultiple( $this->get( 'catalog-suggest' ) ); 166 | $this->response->setHeader( 'Content-Type', 'application/json' ); 167 | $this->response->setHeader( 'Cache-Control', 'max-age=300' ); 168 | } 169 | 170 | 171 | /** 172 | * Content for catalog tree page 173 | * 174 | * @Flow\Session(autoStart = TRUE) 175 | */ 176 | public function treeAction() 177 | { 178 | $this->view->assignMultiple( $this->get( 'catalog-tree' ) ); 179 | $this->response->setHeader( 'Cache-Control', 'max-age=10' ); 180 | } 181 | } 182 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | Aimeos logo 3 | 4 | 5 | # Aimeos Flow/Neos package 6 | 7 | [![Build Status](https://travis-ci.org/aimeos/aimeos-flow.svg?branch=master)](https://travis-ci.org/aimeos/aimeos-flow) 8 | [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/aimeos/aimeos-flow/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/aimeos/aimeos-flow/?branch=master) 9 | 10 | :star: Star us on GitHub — it helps! 11 | 12 | [Aimeos](https://aimeos.org/Flow) is THE professional, full-featured and 13 | high performance e-commerce package for Flow/NeosCMS! You can install it in your 14 | existing Flow application within 5 minutes and can adapt, extend, overwrite 15 | and customize anything to your needs. 16 | 17 | [![Aimeos Flow demo](https://aimeos.org/fileadmin/aimeos.org/images/aimeos-github.png)](http://flow.demo.aimeos.org/) 18 | 19 | ## Table of content 20 | 21 | - [Installation](#installation) 22 | - [Setup](#setup) 23 | - [Hints](#hints) 24 | - [License](#license) 25 | - [Links](#links) 26 | 27 | ## Installation 28 | 29 | This document is for the latest Aimeos Flow **2019.10 release and later**. 30 | 31 | - LTS release: 2019.10 32 | 33 | The Aimeos Flow/Neos web shop package is a composer based library that can be 34 | installed easiest by using [Composer](https://getcomposer.org): 35 | 36 | `composer create-project neos/flow-base-distribution myshop` 37 | 38 | Make sure that the **database is set up and it is configured**. If you want to 39 | use a database server other than MySQL, please have a look into the article about 40 | [supported database servers](https://aimeos.org/docs/Developers/Library/Database_support) 41 | and their specific configuration. 42 | 43 | Neos has a nice setup page for this when opening the `/setup` URL of your installation. 44 | For Flow, this is done in your `Configuration/Settings.yaml` file and must 45 | at least include these settings: 46 | 47 | ```yaml 48 | Neos: 49 | Flow: 50 | persistence: 51 | backendOptions: 52 | host: '' 53 | dbname: '' 54 | user: '' 55 | password: '' 56 | ``` 57 | 58 | **Important:** The configuration file format requires each additional indention 59 | to be two spaces. Not more, not less and no tabs at all! Otherwise, you will get 60 | an error about an invalid configuration file format. 61 | 62 | Then add these lines to your `composer.json` of your Flow/Neos project: 63 | 64 | ``` 65 | "extra": { 66 | "installer-paths": { 67 | "Packages/Extensions/{$name}/": ["type:aimeos-extension"] 68 | } 69 | }, 70 | "prefer-stable": true, 71 | "minimum-stability": "dev", 72 | "require": { 73 | "aimeos/aimeos-flow": "~2019.10", 74 | ... 75 | }, 76 | ``` 77 | 78 | Afterwards, install the Aimeos shop package using 79 | 80 | `composer update` 81 | 82 | ## Setup 83 | 84 | To create all required tables and to add the demo data, you need to execute a 85 | Flow console command in the base directory of your Flow application: 86 | 87 | `./flow aimeos:setup --option=setup/default/demo:1` 88 | 89 | In a production environment or if you don't want that the demo data gets 90 | installed, leave out the `--option=setup/default/demo:1` option. 91 | 92 | For **Flow only** you need to import the routes from the Aimeos web shop 93 | package into your `Configuration/Routes.yaml` nice looking URLs. Insert the lines 94 | below to the **beginning** of the Routes.yaml file: 95 | 96 | ```yaml 97 | - 98 | name: 'Aimeos' 99 | uriPattern: 'shop/' 100 | subRoutes: 101 | AimeosShopRoutes: 102 | package: 'Aimeos.Shop' 103 | ``` 104 | 105 | It's important to import the routes from the Aimeos web shop package before the 106 | `FlowSubroutes` lines. If you add it afterwards, the default Flow routes will 107 | match first and you will get an error that the requested package/action wasn't 108 | found. 109 | 110 | Now Flow would basically know which controller/action it shall execute. But with 111 | Neos, one additional step is needed: 112 | 113 | Add the following **PrivilegeTarget** to `Configuration/Policy.yaml` 114 | 115 | ```yaml 116 | privilegeTargets: 117 | Neos\Flow\Security\Authorization\Privilege\Method\MethodPrivilege: 118 | 'MyShop:AllActions': 119 | matcher: 'method(Aimeos\Shop\Controller\(.*)Controller->(.*)Action())' 120 | 121 | roles: 122 | 'Neos.Flow:Everybody': 123 | privileges: 124 | - 125 | privilegeTarget: 'MyShop:AllActions' 126 | permission: GRANT 127 | ``` 128 | 129 | The above will grant access to **all** Aimeos Controller/Actions pairs, for 130 | **everyone** - probably not what you want. Please refine to your needs! 131 | 132 | Then, you should be able to call the catalog list page in your browser using 133 | 134 | ```http:///shop/list``` 135 | 136 | For the administration interface you have to setup authenticaton first and log 137 | in before you will be able to get into the shop management interface: 138 | 139 | ```http:///shop/admin``` 140 | 141 | ## Hints 142 | 143 | To simplify development, you should configure to use no content cache. You can 144 | do this in the `Configuration/Settings.yaml` file of your Flow/Neos application 145 | by adding these lines at the bottom: 146 | 147 | ```yaml 148 | Aimeos: 149 | Shop: 150 | flow: 151 | cache: 152 | name: None 153 | ``` 154 | 155 | ## License 156 | 157 | The Aimeos Flow/Neos package is licensed under the terms of the LGPLv3 license 158 | and is available for free. 159 | 160 | ## Links 161 | 162 | * [Web site](https://aimeos.org/Flow) 163 | * [Documentation](https://aimeos.org/docs/Flow) 164 | * [Forum](https://aimeos.org/help) 165 | * [Issue tracker](https://github.com/aimeos/aimeos-flow/issues) 166 | * [Composer packages](https://packagist.org/packages/aimeos/aimeos-flow) 167 | * [Source code](https://github.com/aimeos/aimeos-flow) 168 | -------------------------------------------------------------------------------- /Classes/Aimeos/Shop/Controller/JsonapiController.php: -------------------------------------------------------------------------------- 1 | createClient( $resource ); 54 | $psrResponse = $client->delete( $this->getPsrRequest(), new Response() ); 55 | 56 | return $this->setPsrResponse( $psrResponse ); 57 | } 58 | 59 | 60 | /** 61 | * Returns the requested resource object or list of resource objects 62 | * 63 | * @param string Resource location, e.g. "customer" 64 | * @return string Response message content 65 | */ 66 | public function getAction( $resource ) 67 | { 68 | $client = $this->createClient( $resource ); 69 | $psrResponse = $client->get( $this->getPsrRequest(), new Response() ); 70 | 71 | return $this->setPsrResponse( $psrResponse ); 72 | } 73 | 74 | 75 | /** 76 | * Updates a resource object or a list of resource objects 77 | * 78 | * @param string Resource location, e.g. "customer" 79 | * @return string Response message content 80 | * @Flow\Session(autoStart = TRUE) 81 | */ 82 | public function patchAction( $resource ) 83 | { 84 | $client = $this->createClient( $resource ); 85 | $psrResponse = $client->patch( $this->getPsrRequest(), new Response() ); 86 | 87 | return $this->setPsrResponse( $psrResponse ); 88 | } 89 | 90 | 91 | /** 92 | * Creates a new resource object or a list of resource objects 93 | * 94 | * @param string Resource location, e.g. "customer" 95 | * @return string Response message content 96 | * @Flow\Session(autoStart = TRUE) 97 | */ 98 | public function postAction( $resource ) 99 | { 100 | $client = $this->createClient( $resource ); 101 | $psrResponse = $client->post( $this->getPsrRequest(), new Response() ); 102 | 103 | return $this->setPsrResponse( $psrResponse ); 104 | } 105 | 106 | 107 | /** 108 | * Creates or updates a single resource object 109 | * 110 | * @param string Resource location, e.g. "customer" 111 | * @return string Response message content 112 | * @Flow\Session(autoStart = TRUE) 113 | */ 114 | public function putAction( $resource ) 115 | { 116 | $client = $this->createClient( $resource ); 117 | $psrResponse = $client->put( $this->getPsrRequest(), new Response() ); 118 | 119 | return $this->setPsrResponse( $psrResponse ); 120 | } 121 | 122 | 123 | /** 124 | * Returns the available HTTP verbs and the resource URLs 125 | * 126 | * @param string $resource Resource location, e.g. "product" 127 | * @return string Response message content 128 | */ 129 | public function optionsAction( $resource = '' ) 130 | { 131 | $client = $this->createClient( $resource ); 132 | $psrResponse = $client->options( $this->getPsrRequest(), new Response() ); 133 | 134 | return $this->setPsrResponse( $psrResponse ); 135 | } 136 | 137 | 138 | /** 139 | * Returns the resource controller 140 | * 141 | * @param string Resource location, e.g. "customer" 142 | * @return \Aimeos\Client\JsonApi\Iface JsonApi client 143 | */ 144 | protected function createClient( $resource ) 145 | { 146 | $related = ''; 147 | $tmplPaths = $this->aimeos->get()->getCustomPaths( 'client/jsonapi/templates' ); 148 | 149 | if( $this->request->hasArgument( 'related' ) ) { 150 | $related = $this->request->getArgument( 'related' ); 151 | } 152 | 153 | $context = $this->context->get( $this->request ); 154 | $langid = $context->getLocale()->getLanguageId(); 155 | 156 | $view =$this->viewContainer->create( $context, $this->uriBuilder, $tmplPaths, $this->request, $langid ); 157 | $context->setView( $view ); 158 | 159 | return \Aimeos\Client\JsonApi::create( $context, $resource . '/' . $related ); 160 | } 161 | 162 | 163 | /** 164 | * Returns a PSR-7 request object for the current request 165 | * 166 | * @return \Psr\Http\Message\ServerRequestInterface PSR-7 request object 167 | */ 168 | protected function getPsrRequest() 169 | { 170 | $psrRequest = new \Zend\Diactoros\ServerRequest(); 171 | $flowRequest = $this->request->getHttpRequest(); 172 | 173 | try { 174 | $resource = $flowRequest->getContent( true ); 175 | } catch( \Neos\Flow\Http\Exception $exception ) { 176 | $resource = fopen( 'php://temp', 'rw' ); 177 | fwrite( $resource, $flowRequest->getContent() ); 178 | } 179 | 180 | $psrRequest = $psrRequest->withBody( new \Zend\Diactoros\Stream( $resource ) ); 181 | 182 | foreach( $flowRequest->getHeaders()->getAll() as $headerName => $headerValues ) { 183 | $psrRequest = $psrRequest->withHeader( $headerName, $headerValues ); 184 | } 185 | 186 | return $psrRequest; 187 | } 188 | 189 | 190 | /** 191 | * Set the response data from a PSR-7 response object 192 | * 193 | * @param \Psr\Http\Message\ResponseInterface $response PSR-7 response object 194 | * @return string Response message content 195 | */ 196 | protected function setPsrResponse( \Psr\Http\Message\ResponseInterface $response ) 197 | { 198 | $this->response->setStatus( $response->getStatusCode() ); 199 | 200 | foreach( $response->getHeaders() as $key => $value ) { 201 | $this->response->setHeader( $key, $value ); 202 | } 203 | 204 | return (string) $response->getBody(); 205 | } 206 | } 207 | --------------------------------------------------------------------------------