Commit 01ed544c authored by Alex Pott's avatar Alex Pott
Browse files

Revert "Issue #2609252 by eiriksm, lokapujya, toncic92, Arla, chx, Berdir:...

Revert "Issue #2609252 by eiriksm, lokapujya, toncic92, Arla, chx, Berdir: Boolean field with #access FALSE cause EntityStorageException"

This reverts commit f4da7286.
parent dbf2b0ed
Loading
Loading
Loading
Loading
+1 −3
Changes for core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php: 1 added line, 3 removed lines.
Original line number Diff line number Diff line
@@ -1257,9 +1257,7 @@ protected function saveToDedicatedTables(ContentEntityInterface $entity, $update
          foreach ($storage_definition->getColumns() as $column => $attributes) {
            $column_name = $table_mapping->getFieldColumnName($storage_definition, $column);
            // Serialize the value if specified in the column schema.
            $value = drupal_schema_get_field_value($attributes, $item->$column);
            $record[$column_name] = !empty($attributes['serialize'])
              ? serialize($value) : $value;
            $record[$column_name] = !empty($attributes['serialize']) ? serialize($item->$column) : $item->$column;
          }
          $query->values($record);
          if ($this->entityType->isRevisionable()) {
+1 −68
Changes for core/modules/field/src/Tests/Boolean/BooleanFieldTest.php: 1 added line, 68 removed lines.
Original line number Diff line number Diff line
@@ -20,12 +20,7 @@ class BooleanFieldTest extends WebTestBase {
   *
   * @var array
   */
  public static $modules = [
    'entity_test',
    'field_ui',
    'options',
    'field_test_boolean_access_denied',
  ];
  public static $modules = array('entity_test', 'field_ui', 'options');

  /**
   * A field to use in this test class.
@@ -184,66 +179,4 @@ function testBooleanField() {
    $this->assertFieldById('edit-settings-off-label', $off);
  }

  /**
   * Test field access.
   */
  public function testFormAccess() {
    $on = 'boolean_on';
    $off = 'boolean_off';
    $label = 'boolean_label';
    $field_name = 'boolean_name';
    $this->fieldStorage = FieldStorageConfig::create([
      'field_name' => $field_name,
      'entity_type' => 'entity_test',
      'type' => 'boolean',
    ]);
    $this->fieldStorage->save();
    $this->field = FieldConfig::create([
      'field_name' => $field_name,
      'entity_type' => 'entity_test',
      'bundle' => 'entity_test',
      'label' => $label,
      'settings' => [
        'on_label' => $on,
        'off_label' => $off,
      ],
    ]);
    $this->field->save();

    // Create a form display for the default form mode.
    entity_get_form_display('entity_test', 'entity_test', 'default')
      ->setComponent($field_name, [
        'type' => 'boolean_checkbox',
      ])
      ->save();

    // Create a display for the full view mode.
    entity_get_display('entity_test', 'entity_test', 'full')
      ->setComponent($field_name, [
        'type' => 'boolean',
      ])
      ->save();

    // Display creation form.
    $this->drupalGet('entity_test/add');
    $this->assertFieldByName("{$field_name}[value]");

    // Should be posted OK.
    $this->drupalPostForm(NULL, [], t('Save'));
    preg_match('|entity_test/manage/(\d+)|', $this->url, $match);
    $id = $match[1];
    $this->assertText(t('entity_test @id has been created.', ['@id' => $id]));

    // Tell the test module to disable access to the field.
    \Drupal::state()->set('field.test_boolean_field_access_field', $field_name);
    $this->drupalGet('entity_test/add');
    // Field should not be there anymore.
    $this->assertNoFieldByName("{$field_name}[value]");
    // Should still be able to post the form.
    $this->drupalPostForm(NULL, [], t('Save'));
    preg_match('|entity_test/manage/(\d+)|', $this->url, $match);
    $id = $match[1];
    $this->assertText(t('entity_test @id has been created.', ['@id' => $id]));
  }

}
+0 −8
Changes for core/modules/field/tests/modules/field_test_boolean_access_denied/field_test_boolean_access_denied.info.yml: 0 added lines, 8 removed lines.
Original line number Diff line number Diff line
name: 'Boolean field Test'
type: module
description: 'Support module for the field and entity display tests.'
core: 8.x
package: Testing
version: VERSION
dependencies:
  - field
+0 −20
Changes for core/modules/field/tests/modules/field_test_boolean_access_denied/field_test_boolean_access_denied.module: 0 added lines, 20 removed lines.
Original line number Diff line number Diff line
<?php

/**
 * @file
 * Helper module for the boolean field tests.
 *
 * @see \Drupal\field\Tests\Boolean\BooleanFieldTest::testFormAccess()
 */

use Drupal\Core\Access\AccessResult;
use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Session\AccountInterface;

/**
 * Implements hook_entity_field_access().
 */
function field_test_boolean_access_denied_entity_field_access($operation, FieldDefinitionInterface $field_definition, AccountInterface $account, FieldItemListInterface $items = NULL) {
  return AccessResult::forbiddenIf($field_definition->getName() === \Drupal::state()->get('field.test_boolean_field_access_field'));
}