openculturas / openculturas-distribution
OpenCulturas: arts + culture portal software for regional marketing.
Package info
github.com/openculturas/openculturas-distribution
Language:SCSS
Type:drupal-profile
pkg:composer/openculturas/openculturas-distribution
Requires
- php: >=8.4.0
- ext-xmlwriter: *
- ajaxorg/ace-builds: ^1.43.6
- brianvoe/slim-select: ^2.13.1
- choices-js/choices.js: ^10.2
- drupal/address: ^2.0.4
- drupal/address_display: ^1.0
- drupal/addtocal_augment: ^1.2.4
- drupal/admin_toolbar: ^3.6.3
- drupal/allowed_formats: ^3.0.1
- drupal/asset_injector: ^2.21
- drupal/attribution: ^1.0.15
- drupal/auto_entitylabel: ^3.4.0
- drupal/better_exposed_filters: ^7.1.1
- drupal/block_content_template: ^1.7
- drupal/block_field: ^1.0.0-rc5@RC
- drupal/blockgroup: ^2.0.3
- drupal/checklistapi: ^2.1.7
- drupal/choices: ^2.2.0
- drupal/classy: ^2.0
- drupal/coffee: ^2.0.1
- drupal/composer_deploy: ^1.10.0
- drupal/conditional_fields: ^4.0.0-alpha6
- drupal/config_update: ^2.0.0-alpha4
- drupal/cookies: ^1.2.16
- drupal/core: ~11.3.9
- drupal/ctools: ^4.1
- drupal/date_augmenter: ^1.1.2
- drupal/datetime_extras: ^1.2.0
- drupal/default_content: ^2.0.0-beta1
- drupal/duration_field: ^2.2.0
- drupal/eca: ^2.1.18
- drupal/eca_flag: ^2.0.5
- drupal/entity_browser: ^2.15.0
- drupal/extra_field: ^3.0.0
- drupal/facets: ^2.0.10
- drupal/field_formatter_class: ^1.9.0
- drupal/field_group: ^4.0
- drupal/field_permissions: ^1.5.0
- drupal/flag: ^5.0.3
- drupal/focal_point: ^2.1.2
- drupal/formtips: ^2
- drupal/geocoder: ^4.34.0
- drupal/geofield: ^10.3.4
- drupal/gin: >=5.0.12
- drupal/heading: ^2.0
- drupal/honeypot: ^2.2.2
- drupal/ief_complex_open: ^1.0.2
- drupal/image_widget_crop: ^3.0
- drupal/inline_entity_form: ^3.0.0-rc21
- drupal/jquery_ui_accordion: ^2.1.0
- drupal/json_ld_schema: ^2.0
- drupal/key: ^1.22.0
- drupal/languagefield: ^1.14.0
- drupal/layout_builder_component_attributes: ^2.2
- drupal/layout_builder_restrictions: ^3.0.4
- drupal/layout_options: ^1.7
- drupal/leaflet: ^10.4.8
- drupal/legal: ^3.0.3
- drupal/licenses: ^2.0.5
- drupal/linkit: ^7.0.14
- drupal/matomo: ^1.26
- drupal/media_entity_download: ^2.4.0
- drupal/media_library_edit: ^3.0.5
- drupal/media_library_form_element: ^2.1.4
- drupal/metatag: ^2.2.0
- drupal/node_edit_protection: ^1.2.0
- drupal/oauth2_client: ^4.1.3
- drupal/oembed_providers: ^2.2.3
- drupal/office_hours: 1.21.0
- drupal/paragraph_view_mode: ^3.2.0
- drupal/paragraphs: ^1.20.0
- drupal/paragraphs_limits: ^1.0
- drupal/password_policy: ^4.0.3
- drupal/pathauto: ^1.15.0
- drupal/rabbit_hole: ^1.2.0
- drupal/realname: ^2.0
- drupal/redirect: ^1.13.0
- drupal/role_delegation: ^1.6.0
- drupal/search_api: ^1.40.0
- drupal/search_api_exclude_entity: ^3.0
- drupal/shariff: ^2.0.1
- drupal/similarterms: ^1.9.0
- drupal/simple_image_rotate: ^2.3.0-alpha3
- drupal/simple_sitemap: ^4.2.3
- drupal/simplei: ^3.0.2
- drupal/smart_date: ^4.2.5
- drupal/smart_trim: ^2.3.1
- drupal/smtp: ^1.4.0
- drupal/social_media_links: ^2.10.0
- drupal/svg_image: ^3.2.2
- drupal/swiffy_slider: ^1.4.0
- drupal/token: ^1.17.0
- drupal/tour: ^2.0.17
- drupal/twig_tweak: ^3.4.2
- drupal/update_helper: ^4.1.1
- drupal/view_password: ^6.0.5
- drupal/viewfield: ^3.0.0-beta11
- drupal/views_add_button: ^2.0.9-beta2
- drupal/views_autocomplete_filters: ^2.0.3
- drupal/views_bulk_edit: ^3.0.1
- drupal/views_bulk_operations: ^4.4.4
- drupal/views_conditional: ^1.10.0
- drupal/views_data_export: ^1.9.0
- drupal/views_infinite_scroll: ^2.0.3
- drupal/views_local_tasks: ^1.0.2
- elmarquis/leaflet.gesture-handling: ^1.2.2
- fengyuanchen/cropperjs: ^1.6.2
- fortawesome/font-awesome: ^6.7.2
- geocoder-php/nominatim-provider: ^5.8.0
- geocoder-php/photon-provider: ^0.10.0
- heiseonline/shariff: ^3.2.1
- leaflet/leaflet.fullscreen: ^1.0.2
- leaflet/leaflet.markercluster: ^1.5.3
- perliedman/leaflet-control-geocoder: ^2.4
- ujamii/osm-opening-hours: ^1.0.1
Requires (Dev)
- composer/installers: ^2.3.0
- cweagans/composer-patches: ^2.0
- dealerdirect/phpcodesniffer-composer-installer: ^1.2.1
- drupal/bpmn_io: ^2.0.11
- drupal/coder: ^9.0
- drupal/config_devel: ^1.11.0
- drupal/config_inspector: ^2.1.10
- drupal/core-composer-scaffold: ~11.3.9
- drupal/core-recommended: ~11.3.9
- drupal/core-vendor-hardening: ~11.3.9
- drupal/devel: ^5.5.0
- drupal/stage_file_proxy: ^3.1.6
- drupal/upgrade_status: ^4.3.9
- drush/drush: ^13.7.3
- ergebnis/composer-normalize: ^2.51.0
- mglaman/phpstan-drupal: ^2.0.15
- micheh/phpcs-gitlab: ^2.1
- oomphinc/composer-installers-extender: ^2.0.1
- openculturas/drupal-core-dev: @dev
- openculturas/openculturas-profile: @dev
- palantirnet/drupal-rector: ^0.21.2
- php-parallel-lint/php-console-highlighter: ^1.0
- php-parallel-lint/php-parallel-lint: ^1.4.0
- phpstan/extension-installer: ^1.4.3
- phpstan/phpstan: ^2.1.54
- phpstan/phpstan-phpunit: ^2.0.16
- rector/rector: ^2.4.3
- weitzman/drupal-test-traits: ^2.6.0
Conflicts
- 3.0.x-dev
- 3.0.0-beta2
- 3.0.0-beta1
- 2.6.x-dev
- 2.6.1
- 2.6.0
- 2.6.0-rc2
- 2.6.0-rc1
- 2.5.x-dev
- 2.5.5
- 2.5.4
- 2.5.3
- 2.5.2
- 2.5.1
- 2.5.0
- 2.5.0-rc1
- 2.4.x-dev
- 2.4.5
- 2.4.4
- 2.4.3
- 2.4.2
- 2.4.1
- 2.4.0
- 2.4.0-rc2
- 2.4.0-rc1
- 2.3.x-dev
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.3.0-beta3
- 2.3.0-beta2
- 2.3.0-beta1
- 2.2.x-dev
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.x-dev
- 2.1.1
- 2.1.0
- 2.1.0-rc2
- 2.1.0-rc1
- 2.1.0-beta5
- 2.1.0-beta4
- 2.1.0-beta3
- 2.1.0-beta2
- 2.1.0-beta1
- 2.0.x-dev
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.4.x-dev
- 1.3.x-dev
- 1.3.8
- 1.3.7
- 1.3.6
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.x-dev
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.x-dev
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.x-dev
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 1.0.0-alpha3
- 1.0.0-alpha2
- 1.0.0-alpha1
This package is auto-updated.
Last update: 2026-05-13 22:55:06 UTC
README
Table of contents
- Introduction
- Requirements
- Third-party libraries
- Installation
- FAQ
- Development
- Maintenance
- Security
Introduction
OpenCulturas is built as a pre-configured platform for cultural-focused communities, empowering actors in the cultural field to own their data and make their information accessible to a wide audience.
Requirements
- https://www.drupal.org/docs/system-requirements for Drupal
- PHP 8.4
- A bunch of drupal modules and external libraries.
Third-party libraries
These JavaScript/CSS libraries are not available on Packagist and are declared as inline package repositories in composer.json.
| Library | Repository | Used by |
|---|---|---|
| ajaxorg/ace-builds | https://github.com/ajaxorg/ace-builds | drupal/asset_injector |
| brianvoe/slim-select | https://github.com/brianvoe/slim-select | openculturas_slimselect |
| choices-js/choices.js | https://github.com/choices-js/choices | drupal/choices |
| elmarquis/leaflet.gesture-handling | https://github.com/elmarquis/leaflet.gestureHandling | drupal/leaflet |
| fengyuanchen/cropperjs | https://github.com/fengyuanchen/cropperjs | drupal/image_widget_crop |
| fortawesome/font-awesome | https://github.com/FortAwesome/Font-Awesome | openculturas_base, drupal/social_media_links |
| heiseonline/shariff | https://github.com/heiseonline/shariff | drupal/shariff |
| leaflet/leaflet.fullscreen | https://github.com/brunob/leaflet.fullscreen | drupal/leaflet |
| leaflet/leaflet.markercluster | https://github.com/Leaflet/Leaflet.markercluster | drupal/leaflet |
| perliedman/leaflet-control-geocoder | https://github.com/perliedman/leaflet-control-geocoder | openculturas_map |
Installation
New installation
Use the composer project template:
composer create-project --remove-vcs drupal/openculturas_project example.org
For more information go to https://www.drupal.org/project/openculturas_project.
Updating
Patch release
Optionally update library versions in the inline package repositories in composer.json, then:
composer update openculturas/openculturas-distribution "drupal/core-*" drupal/core --with-dependencies --minimal-changes drush updatedb --yes # Review changes, then export and commit configuration drush config:export --yes
Minor release
Manually increase the version constraints for drupal/core-* and openculturas/openculturas-distribution to the next minor version in composer.json, then follow the same steps as a patch release.
FAQ
Q: How can I ignore patches?
A: OpenCulturas defines patches for some contrib modules. If you want to update a module before we release a new version with the patch removed, you can configure composer-patches to ignore specific patches. For more information go to https://docs.cweagans.net/composer-patches/usage/configuration/#ignore-dependency-patches.
Q: How can I contribute to OpenCulturas?
A: Please read the Contribution gudelines.
Development
Please read the Development guidelines before you start.
We recommend using https://ddev.com for development.
Installation (with ddev)
- Clone this repository
- Install dependencies
ddev composer install
- Install OpenCulturas distribution
ddev drush site:install --yes --existing-config
DDEV
Cheatsheet:
- Start project
ddev start - Run composer commands
ddev composer COMMANDe.g.ddev composer install - Run drush commands
ddev drush COMMANDe.g.ddev drush uli - Import latest database snapshot
ddev dbimport
More information about ddev cli command https://ddev.readthedocs.io/en/stable/users/basics/cli-usage/.
Patching
Patches are managed with cweagans/composer-patches v2 and tracked in patches.lock.json.
ddev composer patches-relock # Re-discover patches in composer.json and rewrite patches.lock.json ddev composer patches-repatch # Delete, re-download and re-apply patches for all affected packages ddev composer patches-doctor # Diagnose common patching issues
Run patches-relock after adding or removing a patch in composer.json. Run patches-repatch when a patch fails to apply or a package needs a clean re-install.
PHP Quality Checks
ddev composer run php:lint # PHP parallel lint ddev composer run php:cs # PHPCS ddev composer run php:cs-fix # Auto-fix PHPCS issues ddev composer run php:phpstan # Static analysis ddev composer run php:rector # Rector dry-run ddev composer run php:rector-fix # Rector auto-fix
JS/CSS Linting
All linting commands run inside the DDEV container:
ddev exec npm run lint:js # ESLint JavaScript (entire project) ddev exec npm run lint:yaml # ESLint YAML ddev exec npm run lint:css # stylelint CSS (profile/modules) ddev exec npm run lint:css:fix # Auto-fix CSS ddev exec npm run lint:scss # stylelint SCSS (openculturas_base theme) ddev exec npm run lint:scss:fix # Auto-fix SCSS ddev exec npm run prettier # Prettier JavaScript ddev exec npm run prettier:css # Prettier CSS ddev exec npm run prettier:scss # Prettier SCSS
To lint specific JS files:
ddev exec npx eslint --ext .js --no-ignore path/to/file.js
Configuration files
All configurations are managed via config_devel. Each configuration is listed in the info file of the profile or module. Therefore, any changes to the configuration must also be made in the info file.
After that, enable config_devel and run ddev composer run cde or ddev drush cde module.
This command updates all configuration listed in the info file and removes the key _core and uuid except for
views configuration. The uuid is needed because the uuid is used in other configuration as a default value, without this
the default value would be not set/broken.
Maintenance
Repository
The source code is privately hosted and mirrored to https://github.com/openculturas/openculturas-distribution. To create a new release on drupal.org we push the used git branch/tag to https://git.drupalcode.org/project/openculturas. Someday when the issue https://www.drupal.org/project/project_composer/issues/3252534 is fixed we can directly work on drupal.org git repository.
Info files
To update the version and sort dependencies in all module/theme info files, run:
ddev composer run info_file_normalizer
Creating a release
- Set the version in
scripts/info_file_normalizer.php(theVERSIONconstant) to the release version, e.g.3.0.0-beta3 - Run
ddev composer run info_file_normalizer - Commit:
chore(release): Prepare 3.0.0-beta3 - Tag the commit
- Set
VERSIONback to3.0.x-dev - Run
ddev composer run info_file_normalizer - Commit:
chore: Back to 3.0.x-dev git pushgit push --tags
After the tag is pushed and the repository is synced to https://git.drupalcode.org/project/openculturas, create the release on drupal.org manually.
Updating initial content
- Fetch latest changes and install site:
git pull && ddev composer install && ddev composer run si - Change content via UI
- Export content
ddev composer run export-content
Drush scripts
At the moment l.d.o does not find the labels of field_group. Therefore, we generate the strings.
drush scr scripts/generate_field_group_strings.php
Download the composer.json from drupal/core-dev and update the adjusted core-dev composer.json based on the current Drupal version.
drush scr scripts/update_drupal_core_dev.php
Sync display settings from 'full' to 'full_lb' view mode.
drush scr scripts/sync_full_to_full_lb.php
Security
Concerns about the software security? Or have you found a vulnerability? Please follow the principles of Responsible Disclosure. You'll find all information you need in SECURITY.md.