The condition plugin system is useful on its own, but a user interface to allow for groupings of conditions to be made for generic reuse purposes helps promote the basic needs of both a page management style solution as well as a Rules style paradigm. This UI is incomplete but is basically working at this point and allows condition plugins to be configured and that configuration to be saved into a Condition Group config entity. The entities themselves cannot yet execute the configured conditions within them, but the UI is working if you inspect the entity as it is generated. This issue depends upon 4 other patches right now.

#1896076: Contextual Plugins and supporting code
#1743686: Condition Plugin System
#1886616: Multistep Form Wizard
#1909144: Allow #ajax['dialog'] to contain options other than 'modal'

Next steps:

The modal is saving the condition configuration into the entity appropriately. There is a blank div on the form that needs to be populated with condition summaries (there's a method on conditions to do this for you).

A user interface for TypedData probably needs to be build to tell the condition group what sorts of contexts will be required in order to fulfill this grouping of conditions. This is incredibly non-trivial and I will be filing a follow up for it shortly.

Configuration of the conditions will need to inspect what typed data is available and allow the configurer of the condition to select which (relevant and available) context to use in order to fulfill the condition.

Once the entity type is saving what TypedData conditions it requires to operate, it will need methods exposed on it to satisfy these contexts and pass them to the conditions appropriately for execution.

Eclipse

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

Status: Needs review » Needs work

The last submitted patch, condition-ui.patch, failed testing.

boztek’s picture

Started an initial review of conditions and used this UI as a way to try to get up to speed.

Simple condition listing attached with interdiff on this patch - as mentioned requires four patches applied first to work.

EclipseGc’s picture

Based on Boztek's great work, I went ahead and added operations to the list of conditions in the UI. This is all administratable from the modal, and seems to work quite nicely. Entities are updating as expected.

Eclipse

Bojhan’s picture

I'd be tempted to mark this as 9.x, is there any benefit to doing this so late in the cycle with no usecases defined, and no page management? The risk of this becoming triggers but then less usable is abundant.

EclipseGc’s picture

I've broken apart a bunch of this patch into other pieces and gotten a lot of them into core at this point. The full UI isn't there yet, but I intend on reusing some of it for block visibility. Whether the full condition group UI gets in or not I think is up for debate still, but once block visibility is converted over we would at least have a use case for it beyond page management. I see this as a really big nice to have, and if the cycle permits then perhaps we can do it, and if not... well perhaps that's just how the cookie crumbles here. Still I'd prefer to give it a little more time before we just postpone it.

Eclipse

kenorb’s picture

Version: 8.0.x-dev » 8.2.x-dev

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.0-beta1 was released on August 3, 2016, which means new developments and disruptive changes should now be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.0-alpha1 will be released the week of January 30, 2017, which means new developments and disruptive changes should now be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.0-alpha1 will be released the week of July 31, 2017, which means new developments and disruptive changes should now be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.0-alpha1 will be released the week of January 17, 2018, which means new developments and disruptive changes should now be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.6.x-dev » 8.7.x-dev

Drupal 8.6.0-alpha1 will be released the week of July 16, 2018, which means new developments and disruptive changes should now be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.7.x-dev » 8.8.x-dev

Drupal 8.7.0-alpha1 will be released the week of March 11, 2019, which means new developments and disruptive changes should now be targeted against the 8.8.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.0-alpha1 will be released the week of October 14th, 2019, which means new developments and disruptive changes should now be targeted against the 8.9.x-dev branch. (Any changes to 8.9.x will also be committed to 9.0.x in preparation for Drupal 9’s release, but some changes like significant feature additions will be deferred to 9.1.x.). For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.1.x-dev

Drupal 8.9.0-beta1 was released on March 20, 2020. 8.9.x is the final, long-term support (LTS) minor release of Drupal 8, which means new developments and disruptive changes should now be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 9.1.x-dev » 9.2.x-dev

Drupal 9.1.0-alpha1 will be released the week of October 19, 2020, which means new developments and disruptive changes should now be targeted for the 9.2.x-dev branch. For more information see the Drupal 9 minor version schedule and the Allowed changes during the Drupal 9 release cycle.

Version: 9.2.x-dev » 9.3.x-dev

Drupal 9.2.0-alpha1 will be released the week of May 3, 2021, which means new developments and disruptive changes should now be targeted for the 9.3.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.0-rc1 was released on November 26, 2021, which means new developments and disruptive changes should now be targeted for the 9.4.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.0-alpha1 was released on May 6, 2022, which means new developments and disruptive changes should now be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.5.x-dev » 10.1.x-dev

Drupal 9.5.0-beta2 and Drupal 10.0.0-beta2 were released on September 29, 2022, which means new developments and disruptive changes should now be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 10.1.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch, which currently accepts only minor-version allowed changes. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.