Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
9a43e6e
D11 upgrade
vincent-gao Aug 4, 2026
90bee36
update bulk_update test script
vincent-gao Aug 6, 2026
da8214a
Update dependencies
vincent-gao Aug 6, 2026
145d3bb
Update patches
vincent-gao Aug 11, 2026
6d2667e
rewriting Hooks in Drupal 11
vincent-gao Aug 11, 2026
8c63be0
remove outdated update hooks
vincent-gao Aug 11, 2026
7986c27
Remove redundant files and code.
vincent-gao Aug 12, 2026
485a0df
Coding standards issue
vincent-gao Aug 17, 2026
fa45db7
remove ckeditor5_embedded_content from the info.ymls
vincent-gao Aug 17, 2026
1716402
Retire the CK5 embedded module
vincent-gao Aug 17, 2026
ff8a3f7
add required patches
vincent-gao Aug 17, 2026
3f349e0
add prlp D11 upgrade patch
vincent-gao Aug 17, 2026
9060857
Update yaml_content
vincent-gao Aug 18, 2026
d2c95b4
Update user_created_by_field
vincent-gao Aug 18, 2026
81ca5f6
Update ckeditor5_embedded_content
vincent-gao Aug 18, 2026
714a196
Fix an issue for ddev poser
vincent-gao Aug 18, 2026
0999577
Removed unused packages.
vincent-gao Aug 18, 2026
4d977dd
remove progress-tracker/progress-tracker
vincent-gao Aug 18, 2026
0b11371
Fix Drupal 11 compatibility issues across Tide modules
vincent-gao Aug 19, 2026
b37caed
Fixes an incompatible issue.
vincent-gao Aug 19, 2026
4390a12
Upgrade select2
vincent-gao Aug 19, 2026
8a1cdef
Fixes a tide_media incompatible issue
vincent-gao Aug 19, 2026
f5dfa2d
Add CDN sources required by JavaScript components to the SecKit CSP
vincent-gao Aug 20, 2026
e36ca74
Fixes Callout escape issue.
vincent-gao Aug 20, 2026
1ce3b2d
remove `view` from `operations` options across all views
vincent-gao Aug 24, 2026
195b831
replace embedded_content with ckeditor_iframe
vincent-gao Aug 24, 2026
23b9764
remove fixed patch.
vincent-gao Aug 24, 2026
1cb34a4
add loading referrerpolicy attributes
vincent-gao Aug 24, 2026
7a48eb5
Fix Drupal 11 hook-compatibility issue
vincent-gao Aug 27, 2026
e1b2f64
Fixes a iframe related issue.
vincent-gao Aug 31, 2026
84e2577
Fix rich text caption filter order issue.
vincent-gao Sep 1, 2026
378c1a1
add `insert ckeditor templates` permission to roles.
vincent-gao Sep 1, 2026
b1a914a
move the new filter to tide_core
vincent-gao Sep 2, 2026
703026d
Fix Landing Page database update and admin image filename display
vincent-gao Sep 4, 2026
992df38
fix admin file link display
vincent-gao Sep 4, 2026
91a5a24
bump stage_file_proxy to 4.x
vincent-gao Sep 4, 2026
e0b8862
Clean up role imports and TFA hook documentation
vincent-gao Sep 7, 2026
49fd1d6
lint
vincent-gao Sep 7, 2026
14fe49f
Move iframe filter tests to tide_core
vincent-gao Sep 8, 2026
36a4ac2
Add loading and referrer policy controls
vincent-gao Sep 8, 2026
7d1c49c
fixed JSON:API Site filtering
vincent-gao Sep 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 10 additions & 2 deletions .ddev/commands/web/install-site
Original file line number Diff line number Diff line change
@@ -1,15 +1,23 @@
#!/usr/bin/env bash

## Description: Install a fresh Drupal site (testing profile) and enable tide_core + tide_test.
## Description: Install a fresh Drupal site (minimal profile) and enable tide_core + tide_test.
## Usage: install-site
## Example: "ddev install-site"
## ExecRaw: true

set -eu -o pipefail

DRUPAL_PROFILE=${DRUPAL_PROFILE:-testing}
DRUPAL_PROFILE=${DRUPAL_PROFILE:-minimal}
DRUPAL_ADMIN_NAME=${DRUPAL_ADMIN_NAME:-admin}
DRUPAL_ADMIN_PASSWORD=${DRUPAL_ADMIN_PASSWORD:-admin}
TIDE_PRIVATE_FILES_PATH="${DDEV_APPROOT:-/var/www/html}/private"
TIDE_DDEV_SETTINGS_PATH="${DDEV_DOCROOT:-/var/www/html/web}/sites/default/settings.ddev.php"

mkdir -p "${TIDE_PRIVATE_FILES_PATH}"
if ! grep -Fq 'Tide Core DDEV private file system' "${TIDE_DDEV_SETTINGS_PATH}"; then
printf '\n// Tide Core DDEV private file system.\n' >> "${TIDE_DDEV_SETTINGS_PATH}"
printf "\$settings['file_private_path'] = '%s';\n" "${TIDE_PRIVATE_FILES_PATH}" >> "${TIDE_DDEV_SETTINGS_PATH}"
fi

drush site:install "${DRUPAL_PROFILE}" -y \
--account-name="${DRUPAL_ADMIN_NAME}" \
Expand Down
4 changes: 2 additions & 2 deletions .ddev/config.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: tide-core
type: drupal10
type: drupal11
docroot: web
php_version: "8.3"
webserver_type: nginx-fpm
Expand All @@ -17,7 +17,7 @@ corepack_enable: false
web_environment:
# Drupal core version used by `ddev poser` (drupal.org gitlab_templates
# expand_composer_json.php). Keep in sync with drupal/core in composer.json.
- DRUPAL_CORE=10.6.x
- DRUPAL_CORE=11.4.x

hooks:
post-import-db:
Expand Down
24 changes: 24 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,27 @@
docker-compose.override.yml
screenshots
vendor

# Drupal core scaffold files generated by the local composer root.
/.csslintrc
/.eslintignore
/.eslintrc.json
/.ht.router.php
/.htaccess
/INSTALL.txt
/autoload.php
/autoload_runtime.php
/example.gitignore
/index.php
/robots.txt
/update.php

# Generated Drupal scaffold and local test artifacts.
/.phpunit.cache/
/modules/.gitignore
/phpcs.xml.dist
/private/
/profiles/
/recipes/
/sites/
/themes/
157 changes: 74 additions & 83 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,126 +1,117 @@
# Tide Core
Core functionality of [Tide](https://github.com/dpc-sdp/tide) distribution for [Drupal 10](https://github.com/dpc-sdp)

Tide is a Drupal 10 distribution focused on delivering an API first, headless Drupal content administration site.
Core functionality of the [Tide](https://github.com/dpc-sdp/tide) distribution
for Drupal 11.

Tide is an API-first, headless Drupal content administration platform.

[![CircleCI](https://circleci.com/gh/dpc-sdp/tide_core.svg?style=shield&circle-token=2a0e49166724ac193636fba5b458024e00342dce)](https://circleci.com/gh/dpc-sdp/tide_core)
[![Release](https://img.shields.io/github/release/dpc-sdp/tide_core.svg)](https://github.com/dpc-sdp/tide_core/releases/latest)
![https://www.drupal.org/8](https://img.shields.io/badge/Drupal-8-blue.svg)
![Drupal 11](https://img.shields.io/badge/Drupal-11-blue.svg)
[![Licence: GPL 2](https://img.shields.io/badge/licence-GPL2-blue.svg)](https://github.com/dpc-sdp/tide_core/blob/master/LICENSE.txt)
[![Pull Requests](https://img.shields.io/github/issues-pr/dpc-sdp/tide_page.svg)](https://github.com/dpc-sdp/tide_core/pulls)

## What is in this package
- Roles
- Permissions for site administration
- Theme components discovery mechanism (if required)
- Text formats
- WYSIWYG configurations
- Common fields shared across content types
- `Topic` Taxonomy Vocabulary
- `Tags` Taxonomy Vocabulary
- `Locations` Taxonomy Vocabulary
- `Departments` Taxonomy Vocabulary

- Roles and site administration permissions
- Text formats and WYSIWYG configuration
- Shared fields and paragraph types
- Content moderation workflows
- Common taxonomies including Topics, Tags, Locations and Departments

## Installation
To install this package, add this custom repository to `repositories` section of
your `composer.json`:

Add the repository to your project's `composer.json`:

```json
{
"repositories": {
"dpc-sdp/tide_core": {
"type": "vcs",
"no-api": true,
"url": "https://github.com/dpc-sdp/tide_core.git"
}
"repositories": {
"dpc-sdp/tide_core": {
"type": "vcs",
"no-api": true,
"url": "https://github.com/dpc-sdp/tide_core.git"
}
}
}
```

Require this package as any other Composer package:
```bash
composer require dpc/tide_core
```

## Support
[Digital Engagement, Department of Premier and Cabinet, Victoria, Australia](https://github.com/dpc-sdp)
is a maintainer of this package.
Require the package:

## Contribute
[Open an issue](https://github.com/dpc-sdp) on GitHub or submit a pull request with suggested changes.
```bash
composer require dpc/tide_core
```

## Development and maintenance
Local development is powered by [DDEV](https://ddev.readthedocs.io/) with the
[ddev-drupal-contrib](https://github.com/ddev/ddev-drupal-contrib) add-on. The module
repository is the project root; a disposable Drupal site is built into `web/` and the
module is made available to it via per-file symlinks — code changes at the repository
root take effect immediately, no sync step required.

To build a fresh local development site in one step:

1. Checkout this project.
2. Run `ddev build` — removes the generated `web/` and `vendor/` directories, starts
the services, installs the dependencies, symlinks the module and installs the site.

Alternatively, run each build step separately:

1. Run `ddev start` — starts web, db, OpenSearch, selenium-chrome and clamav services.
2. Run `ddev poser` — installs Drupal core (version pinned by `DRUPAL_CORE` in `.ddev/config.yaml`) plus all module dependencies into `web/` and `vendor/`.
3. Run `ddev symlink-project` — symlinks this module into `web/modules/custom/tide_core` (re-run after adding/removing root-level files; also runs automatically on `ddev start`).
4. Run `ddev install-site` — installs a fresh site (`testing` profile) and enables `tide_core` and `tide_test`.

Day-to-day commands:
- `ddev drush <command>` — run Drush.
- `ddev phpunit --testsuite unit` — run PHPUnit unit tests.
- `ddev exec vendor/bin/behat --strict --colors [path/to.feature]` — run Behat tests (add `--profile=suggest` for the suggest profile).
- `ddev phpcs` / `ddev phpcbf` — lint / auto-fix coding standards.
- `ddev ssh` — shell into the web container.
Local development uses [DDEV](https://ddev.readthedocs.io/) and the
[ddev-drupal-contrib](https://github.com/ddev/ddev-drupal-contrib) add-on. The
module repository is the project root. A disposable Drupal site is built into
`web/`, and root files are symlinked into `web/modules/custom/tide_core`.

### Troubleshooting OpenSearch startup

If `ddev start` reports that the OpenSearch container exited or failed to become
healthy, inspect its logs:
Build a fresh development site with:

```bash
ddev logs -s opensearch
ddev build
```

If the logs report that `vm.max_map_count` is too low:
The individual build steps are:

```text
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
```
1. `ddev start` starts the web, database, OpenSearch, Selenium Chrome and
ClamAV services.
2. `ddev poser` installs Drupal 11.4 and project dependencies into `web/` and
`vendor/`.
3. `ddev symlink-project` links Tide Core into the generated site.
4. `ddev install-site` installs the minimal profile and enables `tide_core` and
`tide_test`.

Common commands:

Increase the limit and start DDEV again:
- `ddev drush <command>` runs Drush.
- `ddev phpunit --testsuite unit` runs unit tests.
- `ddev exec vendor/bin/behat --strict --colors [path]` runs Behat tests.
- `ddev phpcs` and `ddev phpcbf` check and fix coding standards.
- `ddev ssh` opens a shell in the web container.

If OpenSearch fails its bootstrap check because `vm.max_map_count` is too low,
inspect it with `ddev logs -s opensearch`, then increase the Docker host
limit and restart DDEV:

```bash
docker run --privileged --rm --pid=host alpine sysctl -w vm.max_map_count=262144
ddev start
```

The setting may need to be applied again after restarting Docker.

## Support and contributing

[Digital Engagement, Department of Premier and Cabinet, Victoria, Australia](https://github.com/dpc-sdp)
maintains this package. Open an issue or submit a pull request on GitHub to
propose a change.

## Related projects
- [tide](https://github.com/dpc-sdp/tide)
- [tide_api](https://github.com/dpc-sdp/tide_api)
- [tide_event](https://github.com/dpc-sdp/tide_event)
- [tide_landing_page](https://github.com/dpc-sdp/tide_landing_page)
- [tide_media](https://github.com/dpc-sdp/tide_media)
- [tide_monsido](https://github.com/dpc-sdp/tide_monsido)
- [tide_news](https://github.com/dpc-sdp/tide_news)
- [tide_page](https://github.com/dpc-sdp/tide_page)
- [tide_search](https://github.com/dpc-sdp/tide_search)
- [tide_site](https://github.com/dpc-sdp/tide_site)
- [tide_test](https://github.com/dpc-sdp/tide_test)
- [tide_webform](https://github.com/dpc-sdp/tide_webform)

- [Tide](https://github.com/dpc-sdp/tide)
- [Tide API](https://github.com/dpc-sdp/tide_api)
- [Tide Event](https://github.com/dpc-sdp/tide_event)
- [Tide Landing Page](https://github.com/dpc-sdp/tide_landing_page)
- [Tide Media](https://github.com/dpc-sdp/tide_media)
- [Tide News](https://github.com/dpc-sdp/tide_news)
- [Tide Search](https://github.com/dpc-sdp/tide_search)
- [Tide Site](https://github.com/dpc-sdp/tide_site)
- [Tide Webform](https://github.com/dpc-sdp/tide_webform)

## License
This project is licensed under [GPL2](https://github.com/dpc-sdp/tide_core/blob/master/LICENSE.txt)

This project is licensed under [GPL 2](https://github.com/dpc-sdp/tide_core/blob/master/LICENSE.txt).

## Attribution
Single Digital Presence offers government agencies an open and flexible toolkit to build websites quickly and cost-effectively.

Single Digital Presence offers government agencies an open and flexible toolkit
to build websites quickly and cost-effectively.

<p align="center"><a href="https://www.vic.gov.au/what-single-digital-presence-offers" target="_blank"><img src="docs/SDP_Logo_VicGov_RGB.jpg" alt="SDP logo" height="150"></a></p>

The Department of Premier and Cabinet partnered with Salsa Digital to deliver Single Digital Presence. As long-term supporters of open government approaches, they were integral to the establishment of SDP as an open source platform.
The Department of Premier and Cabinet partnered with Salsa Digital to deliver
Single Digital Presence. As long-term supporters of open government approaches,
they were integral to establishing SDP as an open source platform.

<p align="center"><a href="https://salsadigital.com.au/" target="_blank"><img src="docs/Salsa.png" alt="Salsa logo" height="150"></a></p>
Loading
Loading