{"id":27160992,"url":"https://github.com/flownative/neos-pixxio","last_synced_at":"2026-01-23T12:38:30.475Z","repository":{"id":32566621,"uuid":"137171719","full_name":"flownative/neos-pixxio","owner":"flownative","description":"Integration of the pixx.io DAM SaaS as an asset source for Neos CMS","archived":false,"fork":false,"pushed_at":"2025-03-24T14:30:27.000Z","size":150,"stargazers_count":4,"open_issues_count":0,"forks_count":11,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-24T15:35:09.186Z","etag":null,"topics":["asset-management","dam","neos-cms","neos-media","neos-plugin","pixxio"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flownative.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-13T06:25:23.000Z","updated_at":"2025-01-24T09:37:49.000Z","dependencies_parsed_at":"2025-02-20T12:21:28.178Z","dependency_job_id":"37191a4f-e1df-48bc-974e-f67d479b969e","html_url":"https://github.com/flownative/neos-pixxio","commit_stats":null,"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flownative%2Fneos-pixxio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flownative%2Fneos-pixxio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flownative%2Fneos-pixxio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flownative%2Fneos-pixxio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flownative","download_url":"https://codeload.github.com/flownative/neos-pixxio/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247947857,"owners_count":21023066,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asset-management","dam","neos-cms","neos-media","neos-plugin","pixxio"],"created_at":"2025-04-09T00:08:29.303Z","updated_at":"2025-10-16T06:11:14.827Z","avatar_url":"https://github.com/flownative.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![MIT license](http://img.shields.io/badge/license-MIT-brightgreen.svg)](http://opensource.org/licenses/MIT)\n[![Packagist](https://img.shields.io/packagist/v/flownative/neos-pixxio.svg)](https://packagist.org/packages/flownative/neos-pixxio)\n[![Maintenance level: Acquaintance](https://img.shields.io/badge/maintenance-%E2%99%A1-ff69b4.svg)](https://www.flownative.com/en/products/open-source.html)\n\n# pixx.io adaptor for Neos\n\nThis [Flow](https://flow.neos.io) package allows you to use assets (ie. pictures and other documents)\nstored in [pixx.io](https://www.pixx.io/) in your Neos website as if these assets were native Neos assets.\n\n## About pixx.io\n\npixx.io offers an intelligent solution for digital asset management. The software makes working with\npictures, graphics and video files easier. pixx.io is safe, efficient and easy to understand and handle.\n\n## Key Features\n\n- authentication setup via own backend module\n- seamless integration into the Neos media browser\n- automatic import and clean up of media assets from pixx.io\n\n## Installation\n\nThe pixx.io connector is installed as a regular Flow package via Composer. For your existing\nproject, simply include `flownative/neos-pixxio` into the dependencies of your Flow or Neos distribution:\n\n```bash\ncomposer require flownative/neos-pixxio\n```\n\nAfter installation you need to run database migrations:\n\n```bash\n./flow doctrine:migrate\n```\n\n## Enabling pixx.io API access\n\nThe API access is configured by three components:\n\n1. a setting which contains the customer-specific service endpoint URL\n2. a setting providing the pixx.io API key\n3. a setting providing a shared pixx.io user refresh token\n\n**To get the needed values for API endpoint and API key, please contact your pixx.io support contact.**\n\nUsing those values configure an asset source by adding this to your settings:\n\n```yaml\nNeos:\n  Media:\n    assetSources:\n      # an identifier for your asset source, up to you\n      'acme-pixxio':\n        assetSource: 'Flownative\\Pixxio\\AssetSource\\PixxioAssetSource'\n        assetSourceOptions:\n          apiEndpointUri: 'https://acme.pixxio.media/cgi-bin/api/pixxio-api.pl'\n          apiKey: 'abcdef123456789'\n          sharedRefreshToken: 'A3ZezMq6Q24X314xbaiq5ewNE5q4Gt'\n```\n\nWhen you committed and deployed these changes, you can log in to the Neos backend and navigate to the pixx.io backend\nmodule to verify your settings.\n\nIf you would like a separate pixx.io user for the logged in Neos user, you can copy and paste your own \"refresh token\"\ninto the form found in the backend module and store it along with your Neos user.\n\nWhen everything works out fine, Neos will report that the connection was successful (and if not, you'll see an error\nmessage with further details).\n\n## Additional configuration options\n\nDefaults for the described settings can be found (and adjusted) in `Flownative.Pixxio.defaults.assetSourceOptions`.\n\n### Label \u0026 description\n\nYou can configure a custom label and description for the asset source like this:\n\n```yaml\nNeos:\n  Media:\n    assetSources:\n      'acme-pixxio':\n        assetSourceOptions:\n          label: 'ACME assets'\n          description: 'Our custom pixx.io assets source'\n```\n\n### Additional configuration for specific media types\n\nDuring import, Neos tries to use a medium-sized version of the original instead of the high resolution file uploaded to\npixx.io. This greatly improves import speed and produces good results in most cases. Furthermore, this way some formats,\nlike Adobe Photoshop, can be used seamlessly in Neos without the need to prior converting them into a web-compatible image\nformat.\n\nIt is possible though, to configure this plugin to always use the high-res original for import. By default, formats like\nSVG or PDF are imported this way. You can add more types through the similar entries like in the following settings:\n\n```yaml\nNeos:\n  Media:\n    assetSources:\n      'acme-pixxio':\n        assetSourceOptions:\n          mediaTypes:\n            'image/svg+xml':\n              usePixxioThumbnailAsOriginal: true\n            'application/pdf':\n              usePixxioThumbnailAsOriginal: true\n```\n\n### Custom API client options\n\nSometimes the API Client needs additional configuration for the tls connection like custom timeouts or certificates.\nSee: http://docs.guzzlephp.org/en/6.5/request-options.html\n\n```yaml\nNeos:\n  Media:\n    assetSources:\n      'acme-pixxio':\n        assetSourceOptions:\n          apiClientOptions:\n            'verify': '/path/to/cert.pem'\n```\n\n## Using ImageOptions parameters for files\n\nVia configuration, you can set what dimensions the returned images must have. The sizes are defined by the following keys:\n * `thumbnailUri` used in the media browser list\n * `previewUri` used in the detail page of a asset\n * `originalUri` used for downloading the asset\n\nEach can be overridden from your own configuration, by addressing the specific preset key.\n\nBy default, the assets from Pixx.io is returned in a cropped format. When this is the case,\na editor can't see if a asset is horizontal or vertical, when looking in the Media Browser list.\nBy setting `crop: false` the image will be returned in a not-cropped version, and it's visible\nfor the editor, to see the assets orientation.\n\n```yaml\nNeos:\n  Media:\n    assetSources:\n      'acme-pixxio':\n        assetSourceOptions:\n          imageOptions:\n            thumbnailUri:\n              crop: false\n```\n\n## Cleaning up unused assets\n\nWhenever a pixx.io asset is used in Neos, the media file will be copied automatically to the internal Neos asset\nstorage. As long as this media is used somewhere on the website, Neos will flag this asset as being in use.\nWhen an asset is not used anymore, the binary data and the corresponding metadata can be removed from the internal\nstorage. While this does not happen automatically, it can be easily automated by a recurring task, such as a cron-job.\n\nIn order to clean up unused assets, simply run the following command as often as you like:\n\n```bash\n./flow media:removeunused --asset-source acme-pixxio\n```\n\nIf you'd rather like to invoke this command through a cron-job, you can add two additional flags which make this\ncommand non-interactive:\n\n```bash\n./flow media:removeunused --quiet --assume-yes --asset-source acme-pixxio\n```\n\n## Auto-Tagging\n\nThis plugin also offers an auto-tagging feature. When auto-tagging is enabled, Neos will automatically flag assets\nwhich are currently used with a user-defined keyword. When as the asset is not used in Neos anymore, this keyword\nis removed. This keyword is applied to the actual file / asset in the pixx.io media library and helps editors to keep\nan overview of which assets are currently used by Neos.\n\nAuto-tagging is configured as follows:\n\n```yaml\nNeos:\n  Media:\n    assetSources:\n      'acme-pixxio':\n        assetSourceOptions:\n          autoTagging:\n            enable: true\n            # optional, used-by-neos is the default tag\n            inUseTag: 'used-by-neos'\n```\n\nSince Neos currently cannot handle auto-tagging reliably during runtime, the job must be done through a\ncommand line command. Simply run the following command for tagging new assets and removing tags from\nassets which are not in use anymore:\n\n```\n./flow pixxio:tagusedassets --asset-source acme-pixxio\n\nTagging used assets of asset source \"acme-pixxio\" via Pixxio API:\n  (tagged)  dana-devolk-1348553-unsplash 358 (1)\n   tagged   azamat-zhanisov-1348039-unsplash 354 (1)\n  (tagged)  tim-foster-1345174-unsplash 373 (1)\n   removed  some-coffee 28 (0)\n  (tagged)  nikhita-s-615116-unsplash 368 (1)\n```\n\nIt is recommended to run this command through a cron-job, ideally in combination with the `media:removeunused`\ncommand. It's important to run the `removeunused`-command *after* the tagging command, because otherwise removed\nimages will not be untagged in the pixx.io media library.\n\n---\n\n**NOTE**  \nAt this point, the auto-tagging feature is not really optimized for performance. The command merely\niterates over all assets which were imported from pixx.io and checks if tags need to be updated.\n\n---\n\n### Category mapping from pixx.io to Neos\n\npixx.io offers categories to organize assets in a folder-like structure. Those\ncan be mapped to asset collections and tags in Neos, to make them visible for\nthe  users.\n\nThe configuration for the category import looks like this:\n\n```yaml\nNeos:\n  Media:\n    assetSources:\n      'acme-pixxio':\n        assetSourceOptions:\n          mapping:\n            # map \"categories\" from pixx.io to Neos\n            categoriesMaximumDepth: 2         # only include the first two levels of categories (10 is default)\n            categories:\n              'People/Employees':\n                asAssetCollection: false      # ignore this category, put more specific patterns first\n              'People*':                      # the category \"path\" in pixx.io, shell-style globbing is supported\n                asAssetCollection: true       # map to an asset collection named after the category\n```\n\n- The key used is the category identifier from pixx.io as used in the API, without leading slash\n- `asAssetCollection` set to `true` exposes the category as an asset collection named like the category.\n\nAfterwards, run the following command to update the asset collections, ideally\nin a cronjob to keep things up-to-date:\n\n```bash\n./flow pixxio:importcategoriesascollections --asset-source acme-pixxio\n```\n\nTo check what a given category would import, you can use a verbose dry-run:\n\n```bash\n$ ./flow pixxio:importcategoriesascollections --asset-source acme-pixxio --quiet 0 --dry-run 1\nImporting categories as asset collections via pixx.io API\no Dokumentation\n= Kunde A\n= Kunde A/Projekt 1\no Kunde A/Projekt 1/Copy\no Kunde A/Projekt 1/Design\n+ Kunde A/Projekt 2\no Kunde A/Projekt 2/Copy\no Kunde A/Projekt 2/Design\no Marketing\no home\no home/Doe_John\nImport done.\n```\nThe above would have added \"Kunde A/Projekt 2\", the items marked \"=\" exist already,\nand everything else is ignored.\n\n## Background and Demo\n\n[![Background and Demo](https://img.youtube.com/vi/nG05nn-Yd0I/0.jpg)](https://www.youtube.com/watch?v=nG05nn-Yd0I)\n\n## Credits and license\n\nThe first version of this plugin was sponsored by [pixx.io](https://www.pixxio-bildverwaltung.de/) and its initial\nversion was developed by Robert Lemke of [Flownative](https://www.flownative.com).\n\nSee LICENSE for license details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflownative%2Fneos-pixxio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflownative%2Fneos-pixxio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflownative%2Fneos-pixxio/lists"}