class ViewsBulkOperationsAdvancedTestAction in Views Bulk Operations (VBO) 4.0.x
Same name and namespace in other branches
- 8.3 tests/views_bulk_operations_test/src/Plugin/Action/ViewsBulkOperationsAdvancedTestAction.php \Drupal\views_bulk_operations_test\Plugin\Action\ViewsBulkOperationsAdvancedTestAction
- 8 tests/views_bulk_operations_test/src/Plugin/Action/ViewsBulkOperationsAdvancedTestAction.php \Drupal\views_bulk_operations_test\Plugin\Action\ViewsBulkOperationsAdvancedTestAction
- 8.2 tests/views_bulk_operations_test/src/Plugin/Action/ViewsBulkOperationsAdvancedTestAction.php \Drupal\views_bulk_operations_test\Plugin\Action\ViewsBulkOperationsAdvancedTestAction
Action for test purposes only.
Plugin annotation
@Action(
id = "views_bulk_operations_advanced_test_action",
label = @Translation("VBO advanced test action"),
type = "",
confirm = TRUE,
requirements = {
"_permission" = "execute advanced test action",
},
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\Core\Action\ActionBase implements ActionInterface
- class \Drupal\views_bulk_operations\Action\ViewsBulkOperationsActionBase implements ConfigurableInterface, ViewsBulkOperationsActionInterface uses ViewsBulkOperationsActionCompletedTrait
- class \Drupal\views_bulk_operations_test\Plugin\Action\ViewsBulkOperationsAdvancedTestAction implements PluginFormInterface, ViewsBulkOperationsPreconfigurationInterface uses MessengerTrait
- class \Drupal\views_bulk_operations\Action\ViewsBulkOperationsActionBase implements ConfigurableInterface, ViewsBulkOperationsActionInterface uses ViewsBulkOperationsActionCompletedTrait
- class \Drupal\Core\Action\ActionBase implements ActionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of ViewsBulkOperationsAdvancedTestAction
File
- tests/
views_bulk_operations_test/ src/ Plugin/ Action/ ViewsBulkOperationsAdvancedTestAction.php, line 27
Namespace
Drupal\views_bulk_operations_test\Plugin\ActionView source
class ViewsBulkOperationsAdvancedTestAction extends ViewsBulkOperationsActionBase implements ViewsBulkOperationsPreconfigurationInterface, PluginFormInterface {
use MessengerTrait;
/**
* {@inheritdoc}
*/
public function execute($entity = NULL) {
// Check if $this->view is an instance of ViewsExecutable.
if (!$this->view instanceof ViewExecutable) {
throw new \Exception('View passed to action object is not an instance of \\Drupal\\views\\ViewExecutable.');
}
// Check if context array has been passed to the action.
if (empty($this->context)) {
throw new \Exception('Context array empty in action object.');
}
$this
->messenger()
->addMessage(sprintf('Test action (preconfig: %s, config: %s, label: %s)', $this->configuration['test_preconfig'], $this->configuration['test_config'], $entity
->label()));
// Unpublish entity.
if ($this->configuration['test_config'] === 'unpublish') {
if (!$entity
->isDefaultTranslation()) {
$entity = \Drupal::service('entity_type.manager')
->getStorage('node')
->load($entity
->id());
}
$entity
->setUnpublished();
$entity
->save();
}
return 'Test';
}
/**
* {@inheritdoc}
*/
public function buildPreConfigurationForm(array $element, array $values, FormStateInterface $form_state) {
$element['test_preconfig'] = [
'#title' => $this
->t('Preliminary configuration'),
'#type' => 'textfield',
'#default_value' => isset($values['preconfig']) ? $values['preconfig'] : '',
];
return $element;
}
/**
* Configuration form builder.
*
* @param array $form
* Form array.
* @param Drupal\Core\Form\FormStateInterface $form_state
* The form state object.
*
* @return array
* The configuration form.
*/
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$form['test_config'] = [
'#title' => $this
->t('Config'),
'#type' => 'textfield',
'#default_value' => $form_state
->getValue('config'),
];
return $form;
}
/**
* {@inheritdoc}
*/
public function access($object, AccountInterface $account = NULL, $return_as_object = FALSE) {
return $object
->access('update', $account, $return_as_object);
}
/**
* {@inheritdoc}
*/
public static function finished($success, array $results, array $operations) : ?RedirectResponse {
// Let's return a bit different message. We don't except faliures
// in tests as well so no need to check for a success.
$operations = array_count_values($results['operations']);
$details = [];
foreach ($operations as $op => $count) {
$details[] = $op . ' (' . $count . ')';
}
$message = static::translate('Custom processing message: @operations.', [
'@operations' => implode(', ', $details),
]);
static::message($message);
return NULL;
}
}