<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,4 +1,5 @@
-/*globals SWorks, Ext */
+/*globals Ext, SWorks */
+/*jslint glovar: true, undef: true, nomen: true */
 
 SWorks.CurrentUser = function() {
   this.permissions = {};</diff>
      <filename>account_menu.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 /*globals Ext */
+/*jslint glovar: true, undef: true, nomen: true */
 
 Ext.ux.JsonTreeNode = function(config) {
   config = config || {};</diff>
      <filename>bulk_multi_select.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 /*globals Ext */
+/*jslint glovar: true, undef: true, nomen: true */
 
 Ext.namespace('Ext.ux.data');
 </diff>
      <filename>collection_index.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
-/*globals SWorks, Ext */
+/*globals Ext, SWorks */
+/*jslint glovar: true, undef: true, nomen: true */
 
 // To be included into classes and used there, not to be used
 // directly.</diff>
      <filename>crud_components.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 /*globals Ext, SWorks */
+/*jslint glovar: true, undef: true, nomen: true */
 
 Ext.namespace('SWorks');
 </diff>
      <filename>crud_editor.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 /*globals Ext, CSRFKiller */
+/*jslint glovar: true, undef: true, nomen: true */
 
 /*
  *   var CSRFKiller = {</diff>
      <filename>csrf_killer.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
-/*globals SWorks, Ext */
+/*globals Ext, SWorks */
+/*jslint glovar: true, undef: true, nomen: true */
 
 Ext.override(Ext.form.ComboBox, {
   getSelected: function() {</diff>
      <filename>custom_combo.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
-/*globals SWorks, Ext */
+/*globals Ext, SWorks */
+/*jslint glovar: true, undef: true, nomen: true */
 
 Ext.override(Ext.grid.GridView, {
   // By default it scrolls to the top</diff>
      <filename>custom_grids.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 /*globals Ext */
+/*jslint glovar: true, undef: true, nomen: true */
 
 Ext.namespace('Ext.ux.tree');
 </diff>
      <filename>data_store_tree.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
-/*globals Ext, SWorks, ds */
+/*globals Ext, SWorks */
+/*jslint glovar: true, undef: true, nomen: true */
 
 Ext.namespace('Ext.ux.data', 'SWorks');
 
@@ -424,8 +425,6 @@ Ext.ux.data.PersistentFilters.overrides = {
   }
 };
 
-ds = Ext.StoreMgr;
-
 SWorks.CustomGroupingStore = function(config, custom) {
   // Because we need to hack the constructor a little
   if (typeof config == 'string') {</diff>
      <filename>data_stores.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 /*globals Ext, SWorks */
+/*jslint glovar: true, undef: true, nomen: true */
 
 Ext.namespace('Ext.ux.grid');
 </diff>
      <filename>dd.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,6 @@
+/*globals Ext, SWorks, console */
+/*jslint glovar: true, undef: true, nomen: true */
+
 Ext.namespace('SWorks');
 
 SWorks.ErrorHandling = {</diff>
      <filename>error_handling.js</filename>
    </modified>
    <modified>
      <diff>@@ -258,7 +258,6 @@ Ext.extend(SWorks.DataModel, Ext.util.Observable, {
 
     form.items.each(function(f) {
       var key = (f.dataIndex || f.name);
-      form.fields[key];
 
       if (typeof r.data[key] != 'undefined' &amp;&amp;
             r.data[key] != d[key]) {
@@ -301,13 +300,27 @@ Ext.extend(SWorks.DataModel, Ext.util.Observable, {
     form.submitLock = false;
   },
   formFailure: function(form, action) {
-    if (action.failureType != 'server' &amp;&amp; action.failureType != 'client') {
-      SWorks.ErrorHandling.serverError(action.result);
-    } else if (action.failureType == 'server' &amp;&amp; action.result.errors.base) {
-      Ext.MessageBox.alert('Save failed', action.result.errors.base);
-    } else if (action.options.waitMsg !== false) {
-      Ext.MessageBox.alert('Save failed',
-        'Please fix all the boxes highlighted in red.');
+    var res = action.result;
+
+    if (action.failureType != 'server' &amp;&amp;
+        action.failureType != 'client'     ) {
+      SWorks.ErrorHandling.serverError(res);
+    } else {
+      var displayed = false;
+
+      if (action.failureType == 'server') {
+        if (res.errors.base) {
+          Ext.MessageBox.alert('Save failed', res.errors.base);
+          displayed = true;
+        } else if (action.form.displayHiddenErrors(res.errors)) {
+          displayed = true;
+        }
+      }
+
+      if (!displayed &amp;&amp; action.options.waitMsg !== false) {
+        Ext.MessageBox.alert('Save failed',
+          'Please fix all the boxes highlighted in red.');
+      }
     }
 
     // Ext will display our validation errors from JsonController.
@@ -638,9 +651,9 @@ Ext.extend(SWorks.URLLoadingDataModel, SWorks.StoreDataModel, {
   },
 
   loadSearchStoreFromRecord: function(record) {
-    this.store.addFilter('data_model_fk', this.foreignKey+':'+record.data[this.parentKey])
+    this.store.addFilter('data_model_fk', this.foreignKey+':'+record.data[this.parentKey]);
     if (this.foreignTypeKey) {
-      this.store.addFilter('data_model_polymorphic', this.foreignTypeKey+':'+record.getKlass())
+      this.store.addFilter('data_model_polymorphic', this.foreignTypeKey+':'+record.getKlass());
     }
   }
 });
@@ -650,7 +663,7 @@ SWorks.FerretSearchDataModel = function(overrides) {
 
   this.store.baseParams = this.store.baseParams || {};
   this.store.baseParams.limit = this.pageSize;
-}
+};
 Ext.extend(SWorks.FerretSearchDataModel, SWorks.StoreDataModel, {
   updateRecord: function(record, result) {
     // We don't want the normal StoreDataModel behavior, which is to add the</diff>
      <filename>mvc_data_models.js</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>a4d11ff795a7ea70f1daab7e57e6fe6ae13026a0</id>
    </parent>
  </parents>
  <author>
    <name>unknown</name>
    <email>Jordan@.(none)</email>
  </author>
  <url>http://github.com/curzonj/ext-extensions/commit/61dc6d54b90b0eee323dca240ca56ea88bfe330d</url>
  <id>61dc6d54b90b0eee323dca240ca56ea88bfe330d</id>
  <committed-date>2008-07-02T07:42:47-07:00</committed-date>
  <authored-date>2008-07-02T07:42:47-07:00</authored-date>
  <message>'wip'</message>
  <tree>a7fed4b43fb9875f8ef74cb199b1cf36328bda4e</tree>
  <committer>
    <name>unknown</name>
    <email>Jordan@.(none)</email>
  </committer>
</commit>
