diff --git a/plugins/views_plugin_query_default.inc b/plugins/views_plugin_query_default.inc index e05eba92..45842ee4 100644 --- a/plugins/views_plugin_query_default.inc +++ b/plugins/views_plugin_query_default.inc @@ -306,10 +306,16 @@ class views_plugin_query_default extends views_plugin_query { * Special submit handling. */ public function options_submit(&$form, &$form_state) { + parent::options_submit($form, $form_state); + $element = array('#parents' => array('query', 'options', 'query_tags')); - $value = explode(',', drupal_array_get_nested_value($form_state['values'], $element['#parents'])); - $value = array_filter(array_map('trim', $value)); - form_set_value($element, $value, $form_state); + $query_tags = drupal_array_get_nested_value($form_state['values'], $element['#parents']); + // Check if we need to convert query tags string into an array. + if (!is_array($query_tags)) { + $value = explode(',', $query_tags); + $value = array_filter(array_map('trim', $value)); + form_set_value($element, $value, $form_state); + } } /** diff --git a/tests/views_ui.test b/tests/views_ui.test index 81a662c5..b8bc3738 100644 --- a/tests/views_ui.test +++ b/tests/views_ui.test @@ -1038,3 +1038,41 @@ class ViewsUIWizardOverrideDisplaysTestCase extends ViewsUIWizardHelper { } } + +/** + * Test the ability of the views query settings. + */ +class ViewsUIQuerySettingsTestCase extends ViewsUIWizardHelper { + + public static function getInfo() { + return array( + 'name' => 'Views UI query settings functionality', + 'description' => 'Test the ability of the views query settings', + 'group' => 'Views UI', + ); + } + + /** + * Tests that displays can be overridden via the UI. + */ + function testOverrideQuerySettings() { + // Create a basic view that shows all content, with a page display. + $view['human_name'] = $this->randomName(16); + $view['name'] = strtolower($this->randomName(16)); + $view['page[create]'] = 1; + $view['page[title]'] = $this->randomName(16); + $view['page[path]'] = $this->randomName(16); + $this->drupalPost('admin/structure/views/add', $view, t('Save & exit')); + + // Check override display option in the Query Settings. + $edit = array(); + $edit['override[dropdown]'] = 'page'; + $this->drupalPost("admin/structure/views/nojs/display/{$view['name']}/page/query", $edit, t('Apply')); + $this->assertResponse(200); + + // Save the view. + $this->drupalPost("admin/structure/views/view/{$view['name']}/edit/page", array(), t('Save')); + $this->assertText($view['page[title]']); + } + +}