From be29102142ee43a6bbe7845daaf6d09d78afe983 Mon Sep 17 00:00:00 2001 From: erickson Date: Tue, 2 Nov 2010 03:03:17 +0000 Subject: [PATCH] back-porting 18571, 18572. provider fetching updates, autofieldwidget linked class loader git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@18573 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../perlmods/OpenILS/Application/Acq/Provider.pm | 7 ++++- .../web/js/dojo/openils/widget/AutoFieldWidget.js | 30 ++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Provider.pm b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Provider.pm index c514d62f25..c83dc3a54a 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Provider.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Provider.pm @@ -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; } diff --git a/Open-ILS/web/js/dojo/openils/widget/AutoFieldWidget.js b/Open-ILS/web/js/dojo/openils/widget/AutoFieldWidget.js index e6ec7c9173..3fff2b14d0 100644 --- a/Open-ILS/web/js/dojo/openils/widget/AutoFieldWidget.js +++ b/Open-ILS/web/js/dojo/openils/widget/AutoFieldWidget.js @@ -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); + } + } + ); + } } -- 2.11.0