--- /dev/null
+{% extends "base/class.php.twig" %}
+
+{% block file_path %}
+\Drupal\{{ module }}\Plugin\Condition\{{ class_name }}.
+{% endblock %}
+
+{% block namespace_class %}
+namespace Drupal\{{ module }}\Plugin\Condition;
+{% endblock %}
+
+{% block use_class %}
+use Drupal\Core\Condition\ConditionPluginBase;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Plugin\Context\ContextDefinition;
+{% endblock %}
+
+{% block class_declaration %}
+/**
+* Provides a '{{ label }}' condition to enable a condition based in module selected status.
+*
+* @Condition(
+* id = "{{ plugin_id }}",
+* label = @Translation("{{ label }}"),
+* context = {
+* "{{ context_id }}" = @ContextDefinition("{{ context_definition_id }}", required = {{ context_definition_required }} , label = @Translation("{{ context_definition_label }}"))
+* }
+* )
+*
+*/
+class {{ class_name }} extends ConditionPluginBase {% endblock %}
+{% block class_methods %}
+/**
+* {@inheritdoc}
+*/
+public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition)
+{
+ return new static(
+ $configuration,
+ $plugin_id,
+ $plugin_definition
+ );
+}
+
+/**
+ * Creates a new ExampleCondition instance.
+ *
+ * @param array $configuration
+ * The plugin configuration, i.e. an array with configuration values keyed
+ * by configuration option name. The special key 'context' may be used to
+ * initialize the defined contexts by setting it to an array of context
+ * values keyed by context names.
+ * @param string $plugin_id
+ * The plugin_id for the plugin instance.
+ * @param mixed $plugin_definition
+ * The plugin implementation definition.
+ */
+ public function __construct(array $configuration, $plugin_id, $plugin_definition) {
+ parent::__construct($configuration, $plugin_id, $plugin_definition);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
+ // Sort all modules by their names.
+ $modules = system_rebuild_module_data();
+ uasort($modules, 'system_sort_modules_by_info_name');
+
+ $options = [NULL => t('Select a module')];
+ foreach($modules as $module_id => $module) {
+ $options[$module_id] = $module->info['name'];
+ }
+
+ $form['module'] = [
+ '#type' => 'select',
+ '#title' => $this->t('Select a module to validate'),
+ '#default_value' => $this->configuration['module'],
+ '#options' => $options,
+ '#description' => $this->t('Module selected status will be use to evaluate condition.'),
+ ];
+
+ return parent::buildConfigurationForm($form, $form_state);
+ }
+
+/**
+ * {@inheritdoc}
+ */
+ public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
+ $this->configuration['module'] = $form_state->getValue('module');
+ parent::submitConfigurationForm($form, $form_state);
+ }
+
+/**
+ * {@inheritdoc}
+ */
+ public function defaultConfiguration() {
+ return ['module' => ''] + parent::defaultConfiguration();
+ }
+
+/**
+ * Evaluates the condition and returns TRUE or FALSE accordingly.
+ *
+ * @return bool
+ * TRUE if the condition has been met, FALSE otherwise.
+ */
+ public function evaluate() {
+ if (empty($this->configuration['module']) && !$this->isNegated()) {
+ return TRUE;
+ }
+
+ $module = $this->configuration['module'];
+ $modules = system_rebuild_module_data();
+
+ return $modules[$module]->status;
+ }
+
+/**
+ * Provides a human readable summary of the condition's configuration.
+ */
+ public function summary()
+ {
+ $module = $this->getContextValue('module');
+ $modules = system_rebuild_module_data();
+
+ $status = ($modules[$module]->status)?t('enabled'):t('disabled');
+
+ return t('The module @module is @status.', ['@module' => $module, '@status' => $status]);
+ }
+{% endblock %}