Commit 1e26472d authored by catch's avatar catch
Browse files

Issue #1892158 by dawehner, damiankloip: Added Only allow machine like names...

Issue #1892158 by dawehner, damiankloip: Added Only allow machine like names for the field alias row plugin.
parent bab6874e
...@@ -82,11 +82,21 @@ public function buildOptionsForm(&$form, &$form_state) { ...@@ -82,11 +82,21 @@ public function buildOptionsForm(&$form, &$form_state) {
'#type' => 'textfield', '#type' => 'textfield',
'#title' => $id, '#title' => $id,
'#default_value' => isset($this->options['aliases'][$id]) ? $this->options['aliases'][$id] : '', '#default_value' => isset($this->options['aliases'][$id]) ? $this->options['aliases'][$id] : '',
'#element_validate' => array(array($this, 'validateAliasName')),
); );
} }
} }
} }
/**
* Form element validation handler for \Drupal\rest\Plugin\views\row\DataFieldRow::buildOptionsForm().
*/
public function validateAliasName($element, &$form_state) {
if (preg_match('@[^A-Za-z0-9_-]+@', $element['#value'])) {
form_error($element, t('The machine-readable name must contain only letters, numbers, dashes and underscores.'));
}
}
/** /**
* Overrides \Drupal\views\Plugin\views\row\RowPluginBase::validateOptionsForm(). * Overrides \Drupal\views\Plugin\views\row\RowPluginBase::validateOptionsForm().
*/ */
......
...@@ -13,8 +13,10 @@ ...@@ -13,8 +13,10 @@
/** /**
* Tests the serializer style plugin. * Tests the serializer style plugin.
* *
* @see \Drupal\views\Plugin\display\Data * @see \Drupal\rest\Plugin\views\display\RestExport
* @see \Drupal\views\Plugin\style\Serialize * @see \Drupal\rest\Plugin\views\style\Serializer
* @see \Drupal\rest\Plugin\views\row\DataEntityRow
* @see \Drupal\rest\Plugin\views\row\DataFieldRow
*/ */
class StyleSerializerTest extends PluginTestBase { class StyleSerializerTest extends PluginTestBase {
...@@ -174,11 +176,16 @@ public function testUIFieldAlias() { ...@@ -174,11 +176,16 @@ public function testUIFieldAlias() {
// Test a random aliases for fields, they should be replaced. // Test a random aliases for fields, they should be replaced.
$random_name = $this->randomName(); $random_name = $this->randomName();
// randomString() might produce a " " at the end but the DataFieldRow plugin // Use # to produce an invalid character for the validation.
// trims the values. $invalid_random_name = '#' . $this->randomName();
$random_string = trim($this->randomString()); $edit = array('row_options[aliases][name]' => $random_name, 'row_options[aliases][nothing]' => $invalid_random_name);
$edit = array('row_options[aliases][name]' => $random_name, 'row_options[aliases][nothing]' => $random_string);
$this->drupalPost($row_options, $edit, t('Apply')); $this->drupalPost($row_options, $edit, t('Apply'));
$this->assertText(t('The machine-readable name must contain only letters, numbers, dashes and underscores.'));
$random_name_custom = $this->randomName();
$edit = array('row_options[aliases][name]' => $random_name, 'row_options[aliases][nothing]' => $random_name_custom);
$this->drupalPost($row_options, $edit, t('Apply'));
$this->drupalPost(NULL, array(), t('Save')); $this->drupalPost(NULL, array(), t('Save'));
$view = views_get_view('test_serializer_display_field'); $view = views_get_view('test_serializer_display_field');
...@@ -191,7 +198,7 @@ public function testUIFieldAlias() { ...@@ -191,7 +198,7 @@ public function testUIFieldAlias() {
foreach ($view->field as $id => $field) { foreach ($view->field as $id => $field) {
// This will be the custom field. // This will be the custom field.
if ($field->field_alias == 'unknown') { if ($field->field_alias == 'unknown') {
$expected_row[$random_string] = $field->render($row); $expected_row[$random_name_custom] = $field->render($row);
} }
// This will be the name field. // This will be the name field.
else { else {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment