? 0-views-file_managed_extras.patch
? 563020_views_object_cache_0.patch
? 667950-javascript-states-revert_1.patch
? 667950-javascript-states-revert_1_0.patch
? 667950-javascript-states-revert_1_0_2_0.patch
? 694094-drupal_static.patch
? 741234_views_empty_arg_check_null.patch
? 863478-distinct-support-broken.patch
? 870792-validation.patch
? 870792_1.patch
? 881060.patch
? 884730.patch
? 894618-filter_date-between.patch
? 895046-field_multiple.patch
? 930582-fix.patch
? 931552-fix.patch
? 931886.patch
? 931886_0.patch
? 949526-external-db.patch
? 952636-filter.7.patch
? 960528-tablesort.patch
? 960596-quote.patch
? 963454.patch
? 971326-join_deleted.patch
? 974542-notice-pre_render.patch
? 975400-refactor-field_render.patch
? 975400-refactor-field_render.ptach
? 976098-field-drupal_render-notice.patch
? FALSE,
? b
? d7_views_taxonomy_handlers.patch
? filter_format_4.patch
? foo.patch
? notices.patch
? revert.patch
? sites
? views-field-comment-node-link-call-time-pass-by-reference.patch
? views-filter_numeric_test_0.patch
? views-or.patch
? views-term_fields_contain_tid_only.patch
? views-term_fields_contain_tid_only.patch.1
? views-test-user_argument_default.patch
? views.aggregator_feed_item_id.patch
? views_aggregator_fid_filter.patch
? views_formatter_settings-884730-
? views_formatter_settings-884730-43.patch
? views_formatter_settings-884730-61.patch
? views_formatter_settings-884730-63.patch
? views_formatter_settings.patch
? tests/taxonomy
Index: handlers/views_handler_filter.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/views/handlers/views_handler_filter.inc,v
retrieving revision 1.10.4.12
diff -u -p -r1.10.4.12 views_handler_filter.inc
--- handlers/views_handler_filter.inc	18 Nov 2010 01:05:04 -0000	1.10.4.12
+++ handlers/views_handler_filter.inc	25 Nov 2010 19:52:45 -0000
@@ -268,10 +268,8 @@ class views_handler_filter extends views
    * Validate the options form.
    */
   function expose_validate($form, &$form_state) {
-    if (empty($this->options['expose']['identifier'])) {
-      if (empty($form_state['values']['options']['expose']['identifier'])) {
-        form_error($form['expose']['identifier'], t('The identifier is required if the filter is exposed.'));
-      }
+    if (empty($form_state['values']['options']['expose']['identifier'])) {
+      form_error($form['expose']['identifier'], t('The identifier is required if the filter is exposed.'));
     }
 
     if (!empty($form_state['values']['options']['expose']['identifier']) && $form_state['values']['options']['expose']['identifier'] == 'value') {
Index: includes/admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/views/includes/admin.inc,v
retrieving revision 1.161.4.63
diff -u -p -r1.161.4.63 admin.inc
--- includes/admin.inc	21 Nov 2010 00:27:59 -0000	1.161.4.63
+++ includes/admin.inc	25 Nov 2010 19:52:45 -0000
@@ -2205,15 +2205,15 @@ function theme_views_ui_reorder_displays
       $form[$key]['weight']['#attributes']['class'] = array('weight');
       $row[] = drupal_render($form[$key]['weight']);
       if (isset($display['removed'])) {
-        $row[] = drupal_render($form[$key]['removed']) . 
-          l('<span>' . t('Remove') . '</span>', 
-            'javascript:void()', 
+        $row[] = drupal_render($form[$key]['removed']) .
+          l('<span>' . t('Remove') . '</span>',
+            'javascript:void()',
             array(
               'attributes' => array(
-                'id' => 'display-remove-link-' . $key, 
+                'id' => 'display-remove-link-' . $key,
                 'class' => array('views-button-remove display-remove-link'),
-                'alt' => t('Remove this display'), 
-                'title' => t('Remove this display')), 
+                'alt' => t('Remove this display'),
+                'title' => t('Remove this display')),
               'html' => TRUE));
       }
       else {
@@ -2358,6 +2358,10 @@ function views_ui_edit_display_form($for
 function views_ui_edit_display_form_validate($form, &$form_state) {
   $display = &$form_state['view']->display[$form_state['display_id']];
   $display->handler->options_validate($form, $form_state);
+
+  if (form_get_errors()) {
+    $form_state['rerender'] = TRUE;
+  }
 }
 
 /**
@@ -2819,6 +2823,10 @@ function views_ui_config_item_form($form
  */
 function views_ui_config_item_form_validate($form, &$form_state) {
   $form_state['handler']->options_validate($form['options'], $form_state);
+
+  if (form_get_errors()) {
+    $form_state['rerender'] = TRUE;
+  }
 }
 
 /**
Index: tests/views_exposed_form.test
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/views/tests/Attic/views_exposed_form.test,v
retrieving revision 1.1.2.5
diff -u -p -r1.1.2.5 views_exposed_form.test
--- tests/views_exposed_form.test	6 Nov 2010 21:25:06 -0000	1.1.2.5
+++ tests/views_exposed_form.test	25 Nov 2010 19:52:45 -0000
@@ -70,12 +70,24 @@ class ViewsExposedFormTest extends Views
     // Check the label of the expose button
     $this->helperButtonHasLabel('edit-options-expose-button-button', t('Hide'));
 
+    // Check the validations of the filter handler.
+    $edit = array();
+    $edit['options[expose][identifier]'] = '';
+    $this->drupalPost(NULL, $edit, t('Update'));
+    $this->assertText(t('The identifier is required if the filter is exposed.'));
+    
+    $edit = array();
+    $edit['options[expose][identifier]'] = 'value';
+    $this->drupalPost(NULL, $edit, t('Update'));
+    $this->assertText(t('This identifier is not allowed.'));
+
     // Now check the sort criteria.
     $this->drupalGet('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/sort/created');
     $this->helperButtonHasLabel('edit-options-expose-button-button', t('Expose'));
     $this->assertNoFieldById('edit-options-expose-label', '', t('Take sure no label field is shown'));
 
     // Click the Expose button.
+    $edit = array();
     $this->drupalPost('admin/structure/views/nojs/config-item/test_exposed_admin_ui/default/sort/created', $edit, t('Expose'));
     // Check the label of the expose button
     $this->helperButtonHasLabel('edit-options-expose-button-button', t('Hide'));
Index: tests/views_query.test
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/views/tests/Attic/views_query.test,v
retrieving revision 1.1.2.13
diff -u -p -r1.1.2.13 views_query.test
--- tests/views_query.test	5 Oct 2010 12:29:56 -0000	1.1.2.13
+++ tests/views_query.test	25 Nov 2010 19:52:45 -0000
@@ -145,6 +145,20 @@ abstract class ViewsSqlTest extends View
   }
 
   /**
+   * This function allows to enable views ui from a higher class which can't change the setup function anymore.
+   * 
+   * @TODO
+   *   Convert existing setUp functions.
+   */
+  function enableViewsUi() {
+    module_enable(array('views_ui'));
+    // @TODO Figure out why it's required to clear the cache here.
+    views_module_include('views_default.inc', TRUE);
+    views_get_all_views(TRUE);
+    menu_rebuild();
+  }
+
+  /**
    * The schema definition.
    */
   protected function schemaDefinition() {
Index: tests/handlers/views_handler_filter_date.test
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/views/tests/handlers/Attic/views_handler_filter_date.test,v
retrieving revision 1.1.4.2
diff -u -p -r1.1.4.2 views_handler_filter_date.test
--- tests/handlers/views_handler_filter_date.test	16 Oct 2010 07:31:34 -0000	1.1.4.2
+++ tests/handlers/views_handler_filter_date.test	25 Nov 2010 19:52:45 -0000
@@ -28,6 +28,7 @@ class ViewsHandlerFilterDateTest extends
     $this->map = array(
       'nid' => 'nid',
     );
+    $this->enableViewsUi();
   }
 
   /**
@@ -128,6 +129,26 @@ class ViewsHandlerFilterDateTest extends
     $view->delete();
   }
 
+  /**
+   * Take sure the validation callbacks works.
+   */
+  function testUiValidation() {
+    $view = $this->views_test_between();
+    $view->save();
+
+    $admin_user =   $this->drupalCreateUser(array('administer views', 'administer site configuration'));
+    $this->drupalLogin($admin_user);
+    menu_rebuild();
+    $this->drupalGet('admin/structure/views/edit/test_filter_date_between');
+    $this->drupalGet('admin/structure/views/nojs/config-item/test_filter_date_between/default/filter/created');
+
+    $edit = array();
+    // Generate a definitive wrong value, which should be checked by validation.
+    $edit['options[value][value]'] = $this->randomString() . '-------';
+    $this->drupalPost(NULL, $edit, t('Update'));
+    $this->assertText(t('Invalid date format.'), 'Take sure that validation is runned and the invalidate date format is identified.');
+  }
+
   function views_test_between() {
     $view = new view;
     $view->name = 'test_filter_date_between';
