Compare commits
24 Commits
a50c20d1ce
...
89de042ef4
Author | SHA1 | Date |
---|---|---|
Aldo | 89de042ef4 | |
Michael Stenta | 5f09c940c1 | |
wotnak | 8c1fd8fe11 | |
wotnak | 8ce641adc5 | |
Michael Stenta | df0c25f047 | |
Michael Stenta | 1d6804d7b4 | |
Michael Stenta | f9225c05f4 | |
Michael Stenta | 6d68c387fd | |
Michael Stenta | 75f0a2f4b6 | |
Michael Stenta | 3c77ef281d | |
Paul Weidner | ed0c286247 | |
Paul Weidner | f3422c54e0 | |
Michael Stenta | 5617e81a0d | |
Michael Stenta | 215b67b58a | |
AlMaVizca | 3774afee32 | |
Michael Stenta | 61845e53cb | |
Michael Stenta | 9f44c64e99 | |
AlMaVizca | 53fd5ebbbb | |
AlMaVizca | 635adf1a04 | |
AlMaVizca | 3a25ca5d71 | |
AlMaVizca | 4803e40043 | |
wotnak | a2bd7136cf | |
wotnak | 1773a2eae5 | |
Paul Weidner | 0e211cb33c |
|
@ -48,7 +48,7 @@ jobs:
|
|||
# farmOS Composer project 3.x branch is always used.
|
||||
- name: Build and save farmOS dev Docker image
|
||||
run: |
|
||||
docker build --build-arg FARMOS_REPO=https://github.com/${FARMOS_REPO} --build-arg FARMOS_VERSION=${FARMOS_VERSION} -t farmos/farmos:3.x-dev --target farmos-dev docker
|
||||
docker build --build-arg FARMOS_REPO=https://github.com/${FARMOS_REPO} --build-arg FARMOS_VERSION=${FARMOS_VERSION} -t farmos/farmos:3.x-dev --target dev docker
|
||||
docker save farmos/farmos:3.x-dev > /tmp/farmos-dev.tar
|
||||
- name: Cache farmOS dev Docker image
|
||||
uses: actions/cache@v3
|
||||
|
@ -92,10 +92,13 @@ jobs:
|
|||
include:
|
||||
- dbms: pgsql
|
||||
DB_URL: pgsql://farm:farm@db/farm
|
||||
processes: auto
|
||||
- dbms: mariadb
|
||||
DB_URL: mysql://farm:farm@db/farm
|
||||
processes: auto
|
||||
- dbms: sqlite
|
||||
DB_URL: sqlite://localhost/sites/default/files/db.sqlite
|
||||
processes: 1
|
||||
steps:
|
||||
- name: Print test matrix variables
|
||||
run: echo "matrix.dbms=${{ matrix.dbms }}, matrix.DB_URL=${{ matrix.DB_URL }}"
|
||||
|
@ -122,8 +125,12 @@ jobs:
|
|||
# The www-container-fs-ready file is only created once we expect the containers to be online
|
||||
# so waiting for that lets us know it is safe to start the tests
|
||||
run: until [ -f ./www/www-container-fs-ready ]; do sleep 0.1; done
|
||||
- name: Install pg_trgm PostgreSQL extension
|
||||
# This avoids race conditions when trying to automatically install it in concurrently run tests.
|
||||
if: matrix.dbms == 'pgsql'
|
||||
run: docker compose exec -T db psql -U farm -c 'CREATE EXTENSION IF NOT EXISTS pg_trgm;'
|
||||
- name: Run PHPUnit tests
|
||||
run: docker compose exec -u www-data -T www phpunit --verbose /opt/drupal/web/profiles/farm
|
||||
run: docker compose exec -u www-data -T www paratest -vv --processes=${{ matrix.processes }} /opt/drupal/web/profiles/farm
|
||||
- name: Test Drush site install with all modules
|
||||
run: docker compose exec -u www-data -T www drush site-install --db-url=${{ matrix.DB_URL }} farm farm.modules='all'
|
||||
release:
|
||||
|
|
18
CHANGELOG.md
18
CHANGELOG.md
|
@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
## [Unreleased]
|
||||
|
||||
## [3.0.0] 2024-01-05
|
||||
|
||||
This is the first "stable" release of farmOS v3. See the release notes for
|
||||
[3.0.0-beta1] below for more information about major changes in the 3.x branch,
|
||||
including breaking changes to be aware of.
|
||||
|
||||
### Changed
|
||||
|
||||
- [Increase weight of Asset and Log tasks on canonical user route #757](https://github.com/farmOS/farmOS/pull/757)
|
||||
- [Update Drupal core to 10.2](https://github.com/farmOS/farmOS/pull/765)
|
||||
|
||||
### Deprecated
|
||||
|
||||
- [Issue #3410701: Deprecate d7_asset plugin](https://www.drupal.org/project/farm/issues/3410701)
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Correct alter hook to add password grant to static scopes #755](https://github.com/farmOS/farmOS/pull/755)
|
||||
|
@ -647,7 +662,8 @@ moving forward.
|
|||
Drupal 7, which required a complete refactor of the codebase. By comparison,
|
||||
updating from Drupal 9 to 10 will simply involve updating deprecated code.
|
||||
|
||||
[Unreleased]: https://github.com/farmOS/farmOS/compare/3.0.0-beta3...HEAD
|
||||
[Unreleased]: https://github.com/farmOS/farmOS/compare/3.0.0...HEAD
|
||||
[3.0.0]: https://github.com/farmOS/farmOS/releases/tag/3.0.0
|
||||
[3.0.0-beta3]: https://github.com/farmOS/farmOS/releases/tag/3.0.0-beta3
|
||||
[3.0.0-beta2]: https://github.com/farmOS/farmOS/releases/tag/3.0.0-beta2
|
||||
[3.0.0-beta1]: https://github.com/farmOS/farmOS/releases/tag/3.0.0-beta1
|
||||
|
|
|
@ -18,13 +18,13 @@
|
|||
"require": {
|
||||
"cweagans/composer-patches": "^1.6",
|
||||
"drupal/admin_toolbar": "^3.3",
|
||||
"drupal/core": "10.1.6",
|
||||
"drupal/core": "10.2.1",
|
||||
"drupal/config_update": "^2.0@alpha",
|
||||
"drupal/consumers": "^1.15",
|
||||
"drupal/csv_serialization": "^4.0",
|
||||
"drupal/date_popup": "^1.3",
|
||||
"drupal/entity": "1.4",
|
||||
"drupal/entity_browser": "2.9",
|
||||
"drupal/entity_browser": "^2.10",
|
||||
"drupal/entity_reference_integrity": "^1.1",
|
||||
"drupal/entity_reference_revisions": "1.10",
|
||||
"drupal/entity_reference_validators": "^1.0@beta",
|
||||
|
@ -48,7 +48,7 @@
|
|||
"drupal/subrequests": "^3.0.6",
|
||||
"drupal/token": "^1.11",
|
||||
"drupal/views_geojson": "^1.2",
|
||||
"drush/drush": "^11.3",
|
||||
"drush/drush": "^12.4.3",
|
||||
"ext-simplexml": "*",
|
||||
"itamair/geophp": "1.3"
|
||||
},
|
||||
|
@ -59,17 +59,13 @@
|
|||
"patches": {
|
||||
"drupal/core": {
|
||||
"Issue #2429699: Add Views EntityReference filter to be available for all entity reference fields.": "https://www.drupal.org/files/issues/2021-12-02/2429699-453-9.3.x.patch",
|
||||
"Issue #2339235: Remove taxonomy hard dependency on node module": "https://www.drupal.org/files/issues/2023-10-05/2339235-10.1.x-80.patch",
|
||||
"Issue #2339235: Remove taxonomy hard dependency on node module": "https://www.drupal.org/files/issues/2024-01-03/2339235-10.2.x-82.patch",
|
||||
"Issue #1874838: Allow exposed blocks to use 'Link display' settings": "https://www.drupal.org/files/issues/2021-11-11/1874838-26.patch",
|
||||
"Issue #2909128: Autocomplete not working on Chrome Android": "https://www.drupal.org/files/issues/2023-07-11/2909128-92.patch",
|
||||
"Issue #3349973: Automatically install pg_trgm extension on PostgreSQL 13+": "https://www.drupal.org/files/issues/2023-05-08/3349973-26.patch"
|
||||
"Issue #2909128: Autocomplete not working on Chrome Android": "https://www.drupal.org/files/issues/2023-07-11/2909128-92.patch"
|
||||
},
|
||||
"drupal/entity": {
|
||||
"Issue #3206703: Provide reverse relationships for bundle plugin entity_reference fields.": "https://www.drupal.org/files/issues/2022-05-11/3206703-10.patch"
|
||||
},
|
||||
"drupal/entity_browser": {
|
||||
"Issue #3350169: Fix PHP 8.2 deprecation issue with WidgetSelectorBase-class": "https://www.drupal.org/files/issues/2023-06-15/3350169-8_0.patch"
|
||||
},
|
||||
"drupal/entity_reference_revisions": {
|
||||
"Issue #3267304: Infer target_revision_id to be Latest Revision when Only a target_id is Provided": "https://www.drupal.org/files/issues/2022-05-13/3267304-9.patch"
|
||||
},
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
{
|
||||
"require": {
|
||||
"cweagans/composer-patches": "^1.7",
|
||||
"drupal/core-composer-scaffold": "10.1.6"
|
||||
"drupal/core-composer-scaffold": "10.2.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"behat/mink": "^1.10",
|
||||
"behat/mink-browserkit-driver": "^2.1",
|
||||
"behat/mink-selenium2-driver": "^1.6",
|
||||
"brianium/paratest": "^6",
|
||||
"drupal/coder": "^8.3",
|
||||
"mglaman/phpstan-drupal": "^1.1",
|
||||
"mikey179/vfsstream": "^1.6",
|
||||
|
|
|
@ -1,16 +1,10 @@
|
|||
# Use the official Drupal 10 image to build GEOS PHP extension.
|
||||
# Use the official Drupal 10 as base image.
|
||||
FROM drupal:10.1 as baseimage
|
||||
|
||||
# Define common paths.
|
||||
ENV FARMOS_PATH=/var/farmOS
|
||||
ENV DRUPAL_PATH=/opt/drupal
|
||||
|
||||
# Set the farmOS and composer project repository URLs and versions.
|
||||
ARG FARMOS_REPO=https://github.com/farmOS/farmOS.git
|
||||
ARG FARMOS_VERSION=3.x
|
||||
ARG PROJECT_VERSION=3.x
|
||||
ARG PROJECT_REPO=https://github.com/farmOS/composer-project/raw/${PROJECT_VERSION}/composer.json
|
||||
|
||||
##
|
||||
# Build PHP extensions, GEOS and bcmath.
|
||||
FROM baseimage as php-dependencies
|
||||
|
@ -30,19 +24,23 @@ RUN apt-get update && apt-get install -y libgeos-dev \
|
|||
# Install the BCMath PHP extension.
|
||||
RUN docker-php-ext-install bcmath
|
||||
|
||||
##
|
||||
# Setup dependencies and sources for composer installations.
|
||||
FROM baseimage as composer-file
|
||||
|
||||
# Set the COMPOSER environment variables.
|
||||
ENV COMPOSER_HOME=tmp \
|
||||
# Set the COMPOSER_MEMORY_LIMIT environment variable to unlimited.
|
||||
COMPOSER_MEMORY_LIMIT=-1 \
|
||||
# Allow root to install plugins.
|
||||
COMPOSER_ALLOW_SUPERUSER=1
|
||||
# Set the farmOS and composer project repository URLs and versions.
|
||||
ARG FARMOS_REPO=https://github.com/farmOS/farmOS.git
|
||||
ARG FARMOS_VERSION=3.x
|
||||
ARG PROJECT_VERSION=3.x
|
||||
ARG PROJECT_REPO=https://github.com/farmOS/composer-project/raw/${PROJECT_VERSION}/composer.json
|
||||
|
||||
# Set the COMPOSER_MEMORY_LIMIT environment variable to unlimited.
|
||||
ENV COMPOSER_MEMORY_LIMIT=-1
|
||||
# Allow root to install plugins.
|
||||
ENV COMPOSER_ALLOW_SUPERUSER=1
|
||||
ENV COMPOSER_NO_INTERACTION=1
|
||||
|
||||
# Install apt dependencies.
|
||||
RUN apt-get update && apt-get install -y \
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends\
|
||||
# Install git and unzip (needed by Composer).
|
||||
git unzip
|
||||
|
||||
|
@ -65,16 +63,13 @@ RUN sed -i "s|version: 3.x|version: ${FARMOS_VERSION}|g" ${FARMOS_PATH}/web/prof
|
|||
|
||||
##
|
||||
# Create layer with farmOS dev sources.
|
||||
FROM composer-file as farmos-dev-sources
|
||||
FROM farmos-sources as farmos-dev-sources
|
||||
|
||||
# Install sources.
|
||||
RUN composer install
|
||||
|
||||
# Set the version in farm.info.yml.
|
||||
RUN sed -i "s|version: 3.x|version: ${FARMOS_VERSION}|g" ${FARMOS_PATH}/web/profiles/farm/farm.info.yml
|
||||
RUN composer update
|
||||
|
||||
##
|
||||
# Add final image dependencies and configurations.
|
||||
# Dependencies layer.
|
||||
FROM baseimage as farmos-baseimage
|
||||
|
||||
# Set Apache ServerName directive globally to suppress AH00558 message.
|
||||
|
@ -88,16 +83,18 @@ RUN docker-php-ext-enable geos bcmath
|
|||
COPY conf.d/ /usr/local/etc/php/conf.d
|
||||
|
||||
# Install apt dependencies and clean up.
|
||||
RUN apt-get update && apt-get install -y \
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends\
|
||||
# Install postgresql-client so Drush can connect to the database.
|
||||
postgresql-client \
|
||||
# Install libgeos-c1v5 so geos php extension can use libgeos_c.so.1.
|
||||
libgeos-c1v5 \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& apt-get clean \
|
||||
# Clean up ${DRUPAL_PATH}.
|
||||
&& rm -r ${DRUPAL_PATH} \
|
||||
&& mkdir ${DRUPAL_PATH}
|
||||
# Install git and unzip (needed by Composer).
|
||||
git unzip \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& apt-get clean \
|
||||
# Clean up ${DRUPAL_PATH}.
|
||||
&& rm -r ${DRUPAL_PATH} \
|
||||
&& mkdir ${DRUPAL_PATH}
|
||||
|
||||
# Set the entrypoint.
|
||||
COPY --chown=www-data docker-entrypoint.sh /usr/local/bin/
|
||||
|
@ -109,7 +106,7 @@ CMD ["apache2-foreground"]
|
|||
|
||||
##
|
||||
# Development image.
|
||||
FROM farmos-baseimage as farmos-dev
|
||||
FROM farmos-baseimage as dev
|
||||
|
||||
# Change the user/group IDs of www-data inside the image to match the ID of the
|
||||
# developer's user on the host machine. This allows Composer to create files
|
||||
|
@ -121,9 +118,6 @@ FROM farmos-baseimage as farmos-dev
|
|||
ARG WWW_DATA_ID=1000
|
||||
RUN usermod -u ${WWW_DATA_ID} www-data && groupmod -g ${WWW_DATA_ID} www-data
|
||||
|
||||
# Add farmOS sources
|
||||
COPY --from=composer-file --chown=www-data:www-data ${FARMOS_PATH} ${FARMOS_PATH}
|
||||
|
||||
# Install and configure XDebug.
|
||||
RUN yes | pecl install xdebug \
|
||||
&& docker-php-ext-enable xdebug
|
||||
|
|
|
@ -53,5 +53,3 @@ allowedPlugins=(
|
|||
for plugin in ${allowedPlugins[@]}; do
|
||||
composer config --no-plugins allow-plugins.$plugin true
|
||||
done
|
||||
|
||||
mkdir -p ${FARMOS_PATH}/web/sites/simpletest/browser_output
|
||||
|
|
|
@ -12,4 +12,8 @@ sed -i 's|\./|\./web/core/|g' ${FARMOS_PATH}/phpunit.xml
|
|||
sed -i 's|\.\./web/core/|\./web/|g' ${FARMOS_PATH}/phpunit.xml
|
||||
sed -i 's| </php>| <env name="SYMFONY_DEPRECATIONS_HELPER" value="disabled"/>'"\n"' </php>|g' ${FARMOS_PATH}/phpunit.xml
|
||||
|
||||
# Create output directory for phpunit tests and permissions for testing user.
|
||||
mkdir -p ${FARMOS_PATH}/web/sites/simpletest/browser_output
|
||||
chown -R www-data:www-data ${FARMOS_PATH}/web/sites/simpletest
|
||||
|
||||
rm ${FARMOS_PATH}/phpunit.sh
|
||||
|
|
|
@ -12,7 +12,15 @@ services:
|
|||
MYSQL_DATABASE: farm
|
||||
MYSQL_USER: farm
|
||||
MYSQL_PASSWORD: farm
|
||||
healthcheck:
|
||||
test: [ "CMD", "healthcheck.sh", "--connect", "--innodb_initialized" ]
|
||||
start_period: 1m
|
||||
start_interval: 10s
|
||||
interval: 1m
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
|
||||
www:
|
||||
depends_on:
|
||||
- db
|
||||
db:
|
||||
condition: service_healthy
|
||||
|
|
|
@ -29,7 +29,7 @@ The `3.x-dev` image also provides the following build arguments:
|
|||
`--build-arg WWW_DATA_ID=$(id -u)`
|
||||
- Default: `1000`
|
||||
|
||||
To build the development image, you will have to define the target farmos-dev,
|
||||
To build the development image, you will have to define the target dev,
|
||||
for example:
|
||||
|
||||
`docker build --build-arg WWW_DATA_ID=$(id -u) -t farmos/farmos:3.x-dev --target farmos-dev docker`
|
||||
`docker build --build-arg WWW_DATA_ID=$(id -u) -t farmos/farmos:3.x-dev --target dev docker`
|
||||
|
|
|
@ -244,9 +244,11 @@ To make an existing quick form configurable:
|
|||
assigns configuration to `$this->configuration`.
|
||||
6. Add a `config/schema/[mymodule].schema.yml` file that describes the
|
||||
[configuration schema/metatdata](https://www.drupal.org/docs/drupal-apis/configuration-api/configuration-schemametadata).
|
||||
7. Add `'#default_value' => $this->configuration['...']` lines to the form
|
||||
elements that are configurable in the `buildForm()` method.
|
||||
|
||||
The following is the same "Harvest" example as above, with the new interface
|
||||
and methods, followed by the schema file that describes the settings.
|
||||
The following is the same "Harvest" example as above, with the changes described
|
||||
above, followed by the schema file that describes the settings.
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
|
|
@ -70,7 +70,7 @@ next section.
|
|||
To start your own project based on the farmOS project template, open a new
|
||||
directory and run the following command:
|
||||
|
||||
composer create-project farmos/project
|
||||
composer create-project farmos/project:3.x-dev
|
||||
|
||||
This will create a `composer.json` file in your directory, copied directly from
|
||||
the [farmOS project template](https://packagist.org/packages/farmos/project).
|
||||
|
@ -81,7 +81,7 @@ code repository with [Git](https://git-scm.com/):
|
|||
```shell
|
||||
git init
|
||||
git add composer.json
|
||||
git commit -m 'Intitial commit of my farmOS project.'
|
||||
git commit -m 'Initial commit of my farmOS project.'
|
||||
```
|
||||
|
||||
It is helpful to understand that your project is *not* farmOS, but rather
|
||||
|
|
|
@ -10,8 +10,6 @@ farmOS 2.x includes a **farmOS Migrate** module that leverage's Drupal core's
|
|||
migrations for each asset type, log type, etc. These migrations are defined in
|
||||
YML configuration files included with the farmOS Migrate module.
|
||||
|
||||
... migrate to 2.x then upgrade to 3.x
|
||||
|
||||
## Important considerations
|
||||
|
||||
* Do not migrate into a farmOS 2.x instance that already has records. This is
|
||||
|
|
|
@ -12,6 +12,11 @@ use Drupal\migrate_drupal\Plugin\migrate\source\d7\FieldableEntity;
|
|||
* id = "d7_asset",
|
||||
* source_module = "farm_asset"
|
||||
* )
|
||||
*
|
||||
* @deprecated in farm:3.0.0 and is removed from farm:4.0.0. Support for farmOS
|
||||
* v1 migrations was dropped in farmOS 3.x.
|
||||
* @see https://www.drupal.org/project/farm/issues/3410701
|
||||
* @see https://www.drupal.org/project/farm/issues/3382616
|
||||
*/
|
||||
class Asset extends FieldableEntity {
|
||||
|
||||
|
|
|
@ -3,10 +3,7 @@
|
|||
namespace Drupal\farm_field\Plugin\Field\FieldWidget;
|
||||
|
||||
use Drupal\Core\Datetime\DrupalDateTime;
|
||||
use Drupal\Core\Datetime\Element\Datetime;
|
||||
use Drupal\Core\Datetime\Entity\DateFormat;
|
||||
use Drupal\Core\Datetime\Plugin\Field\FieldWidget\TimestampDatetimeWidget;
|
||||
use Drupal\Core\Field\FieldItemListInterface;
|
||||
use Drupal\Core\Form\FormStateInterface;
|
||||
|
||||
/**
|
||||
|
@ -26,17 +23,6 @@ use Drupal\Core\Form\FormStateInterface;
|
|||
*/
|
||||
class TimestampDatetimeOptionalWidget extends TimestampDatetimeWidget {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
|
||||
$element = parent::formElement($items, $delta, $element, $form, $form_state);
|
||||
$date_format = DateFormat::load('html_date')->getPattern();
|
||||
$time_format = DateFormat::load('html_time')->getPattern();
|
||||
$element['value']['#description'] = $this->t('Format: %format.', ['%format' => Datetime::formatExample($date_format . ' ' . $time_format)]);
|
||||
return $element;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
|
|
@ -1786,7 +1786,7 @@ display:
|
|||
type: tab
|
||||
title: Assets
|
||||
description: ''
|
||||
weight: 0
|
||||
weight: 40
|
||||
expanded: false
|
||||
menu_name: account
|
||||
parent: ''
|
||||
|
|
|
@ -2790,7 +2790,7 @@ display:
|
|||
type: tab
|
||||
title: Logs
|
||||
description: ''
|
||||
weight: 0
|
||||
weight: 50
|
||||
expanded: false
|
||||
menu_name: main
|
||||
parent: ''
|
||||
|
|
Loading…
Reference in New Issue