back-porting 18571, 18572. provider fetching updates, autofieldwidget linked class...
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 2 Nov 2010 03:03:17 +0000 (03:03 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 2 Nov 2010 03:03:17 +0000 (03:03 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@18573 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Acq/Provider.pm
Open-ILS/web/js/dojo/openils/widget/AutoFieldWidget.js

index c514d62..c83dc3a 100644 (file)
@@ -93,7 +93,12 @@ sub retrieve_org_providers {
         $U->user_has_work_perm_at($e, $limit_perm, {descendants =>1});
 
     return [] unless @$org_ids;
-    $conn->respond($_) for @{$e->search_acq_provider({owner => $org_ids})};
+    $conn->respond($_) for @{
+        $e->search_acq_provider([
+            {owner => $org_ids, active => 't'},
+            {order_by => {acqpro => 'code'}}
+        ])
+    };
 
     return undef;
 }
index e6ec7c9..3fff2b1 100644 (file)
@@ -413,8 +413,10 @@ if(!dojo._hasResource['openils.widget.AutoFieldWidget']) {
             this.widget = new dijit.form.FilteringSelect(this.dijitArgs, this.parentNode);
             this.widget.searchAttr = this.widget.labelAttr = vfield.selector || vfield.name;
             this.widget.valueAttr = vfield.name;
+            this.widget.attr('disabled', true);
 
             var oncomplete = function(list) {
+                self.widget.attr('disabled', false);
 
                 if(self.labelFormat) 
                     self.widget.labelAttr = '_label';
@@ -477,6 +479,9 @@ if(!dojo._hasResource['openils.widget.AutoFieldWidget']) {
 
             } else {
 
+                if(!this.dataLoader && openils.widget.AutoFieldWidget.defaultLinkedDataLoader[linkClass])
+                    this.dataLoader = openils.widget.AutoFieldWidget.defaultLinkedDataLoader[linkClass];
+
                 if(this.dataLoader) {
 
                     // caller provided an external function for retrieving the data
@@ -651,5 +656,30 @@ if(!dojo._hasResource['openils.widget.AutoFieldWidget']) {
 
     openils.widget.AutoFieldWidget.localeStrings = dojo.i18n.getLocalization("openils.widget", "AutoFieldWidget");
     openils.widget.AutoFieldWidget.cache = {};
+    openils.widget.AutoFieldWidget.defaultLinkedDataLoader = {};
+
+    /* Custom provider-as-link-class fetcher.  Fitler is ignored.  
+     * All viewable providers are retrieved.
+     */
+    openils.widget.AutoFieldWidget.defaultLinkedDataLoader.acqpro = 
+            function(linkClass, fitler, oncomplete) { 
+
+        fieldmapper.standardRequest(
+            ['open-ils.acq', 'open-ils.acq.provider.org.retrieve'],
+            {
+                async : true,
+                params : [openils.User.authtoken],
+                oncomplete : function(r) {
+                    var resp;
+                    var list = [];
+                    while(resp = r.recv()) {
+                        var pro = resp.content();
+                        if(pro) list.push(pro);
+                    }
+                    oncomplete(list);
+                }
+            }
+        );
+    }
 }