Example #1
0
 /**
  * @covers ::getContextValue
  */
 public function testDefaultValue()
 {
     $this->setUpDefaultValue();
     $context = new Context($this->contextDefinition);
     $context->setTypedDataManager($this->typedDataManager);
     $this->assertEquals('test', $context->getContextValue());
 }
 /**
  * {@inheritdoc}
  */
 public function getContextValue()
 {
     if (!$this->contextData) {
         $entity_type_id = substr($this->contextDefinition->getDataType(), 7);
         $this->setContextValue($this->entityRepository->loadEntityByUuid($entity_type_id, $this->uuid));
     }
     return parent::getContextValue();
 }
Example #3
0
 /**
  * Tests that getting a context value does not throw fatal errors.
  *
  * This test ensures that the typed data manager is set correctly on the
  * Context class.
  *
  * @covers ::getContextValue
  */
 public function testGetContextValue()
 {
     // Prepare a container that holds the typed data manager mock.
     $typed_data_manager = $this->getMockBuilder('Drupal\\Core\\TypedData\\TypedDataManager')->disableOriginalConstructor()->getMock();
     $typed_data_manager->expects($this->once())->method('getCanonicalRepresentation')->will($this->returnCallback(array($this, 'getCanonicalRepresentation')));
     $container = new ContainerBuilder();
     $container->set('typed_data_manager', $typed_data_manager);
     \Drupal::setContainer($container);
     $definition = new ContextDefinition('any');
     $data_definition = DataDefinition::create('string');
     $this->typedData = new StringData($data_definition);
     $this->typedData->setValue('example string');
     $context = new Context($definition, $this->typedData);
     $value = $context->getContextValue();
     $this->assertSame($value, $this->typedData->getValue());
 }
 /**
  * {@inheritdoc}
  */
 public function buildForm(array $form, FormStateInterface $form_state, $context_id = NULL, $tempstore_id = NULL, $machine_name = NULL)
 {
     $this->tempstore_id = $tempstore_id;
     $this->machine_name = $machine_name;
     $cached_values = $this->tempstore->get($this->tempstore_id)->get($this->machine_name);
     $contexts = $this->getContexts($cached_values);
     $edit = FALSE;
     if (!empty($contexts[$context_id])) {
         $context = $contexts[$context_id];
         $machine_name = $context_id;
         $edit = TRUE;
     } else {
         $context_definition = new ContextDefinition($context_id);
         $context = new Context($context_definition);
         $machine_name = '';
     }
     $label = $context->getContextDefinition()->getLabel();
     $description = $context->getContextDefinition()->getDescription();
     $data_type = $context->getContextDefinition()->getDataType();
     $form['#attached']['library'][] = 'core/drupal.dialog.ajax';
     $form['context_id'] = ['#type' => 'value', '#value' => $context_id];
     $form['label'] = ['#type' => 'textfield', '#title' => $this->t('Label'), '#default_value' => $label, '#required' => TRUE];
     $form['machine_name'] = ['#type' => 'machine_name', '#title' => $this->t('Machine Name'), '#default_value' => $machine_name, '#required' => TRUE, '#maxlength' => 128, '#machine_name' => ['source' => ['label'], 'exists' => [$this, 'contextExists']], '#disabled' => $this->disableMachineName($cached_values, $machine_name)];
     $form['description'] = ['#type' => 'textarea', '#title' => $this->t('Description'), '#default_value' => $description];
     if (strpos($data_type, 'entity:') === 0) {
         list(, $entity_type) = explode(':', $data_type);
         /** @var EntityAdapter $entity */
         $entity = $edit ? $context->getContextValue() : NULL;
         $form['context_value'] = ['#type' => 'entity_autocomplete', '#required' => TRUE, '#target_type' => $entity_type, '#default_value' => $entity, '#title' => $this->t('Select entity')];
     } else {
         $value = $context->getContextData()->getValue();
         $form['context_value'] = ['#title' => $this->t('Set a context value'), '#type' => 'textfield', '#required' => TRUE, '#default_value' => $value];
     }
     $form['submit'] = ['#type' => 'submit', '#value' => $this->t('Save'), '#ajax' => ['callback' => [$this, 'ajaxSave']]];
     return $form;
 }