[open-ils-commits] [GIT] Evergreen ILS branch master updated. 3dfc7f0005a83e41420b1dc5e36de34f8f263a88

Evergreen Git git at git.evergreen-ils.org
Thu Aug 18 01:25:20 EDT 2011


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".

The branch, master has been updated
       via  3dfc7f0005a83e41420b1dc5e36de34f8f263a88 (commit)
       via  4790c6a0f6896fe2ee77c4040e78eb9567ba4d18 (commit)
       via  f694d684d1683f6545c6dc2e4e801a340ff833d6 (commit)
      from  0e0cbe5bbfd3b8929f817f104c1050a2939b8741 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 3dfc7f0005a83e41420b1dc5e36de34f8f263a88
Author: Dan Scott <dan at coffeecode.net>
Date:   Mon Aug 15 23:52:24 2011 -0400

    Remove CONFIG references from autogen.sh
    
    We're relying on OpenILS::Utils::Cronscript for the location of the
    opensrf_core.xml file, so the vestigial references were unnecessary
    noise.
    
    Signed-off-by: Dan Scott <dscott at laurentian.ca>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/src/extras/autogen.sh b/Open-ILS/src/extras/autogen.sh
index 315d882..0311bbe 100755
--- a/Open-ILS/src/extras/autogen.sh
+++ b/Open-ILS/src/extras/autogen.sh
@@ -28,15 +28,13 @@ set -u
 
 function usage {
 	echo "";
-	echo "usage: $0 [-u] [-c <c_config>]";
+	echo "usage: $0 [-u]";
 	echo "";
 	echo "Updates the Evergreen organization tree and fieldmapper IDL.";
 	echo "Run this every time you change the Evergreen organization tree";
 	echo "or update fm_IDL.xml";
 	echo "";
 	echo "Optional parameters:";
-	echo -e "  -c\t\tfull path to C configuration file (opensrf_core.xml)";
-	echo -e "    \t\t - defaults to SYSCONFDIR/opensrf_core.xml";
 	echo -e "  -u\t\tupdate proximity of library sites in organization tree";
 	echo -e "    \t\t(this is expensive for a large organization tree)";
 	echo "";
@@ -46,7 +44,7 @@ function usage {
 	echo "    $0";
 	echo "";
 	echo "  Update organization tree and refresh proximity:";
-	echo "    $0 -u -c SYSCONFDIR/opensrf_core.xml";
+	echo "    $0 -u";
 	echo "";
 }
 
@@ -55,36 +53,19 @@ function usage {
 cd "BINDIR"
 
 # Initialize our variables
-CONFIG="";
 PROXIMITY="";
 
 # ---------------------------------------------------------------------------
 # Load the command line options and set the global vars
 # ---------------------------------------------------------------------------
-while getopts  "c:u h" flag; do
+while getopts  "u h" flag; do
 	case $flag in	
-		"c")		CONFIG="$OPTARG";;
 		"u")		PROXIMITY="REFRESH";;
 		"h")		usage && exit;;
 	esac;
 done
 shift $((OPTIND - 1))
 
-if [ -z "$CONFIG" ] && [[ ! -z "${1:-}" ]]; then
-	# Support "autogen.sh /path/to/opensrf_core.xml" for legacy invocation
-	CONFIG="$1";
-fi
-if [ -z "$CONFIG" ]; then
-	# Fall back to the configured default
-	CONFIG="SYSCONFDIR/opensrf_core.xml";
-fi
-if [ ! -f "$CONFIG" ]; then
-	echo "ERROR: could not find configuration file '$CONFIG'";
-	echo "";
-	usage;
-	exit 1;
-fi;
-
 JSDIR="LOCALSTATEDIR/web/opac/common/js/";
 FMDOJODIR="LOCALSTATEDIR/web/js/dojo/fieldmapper/";
 SLIMPACDIR="LOCALSTATEDIR/web/opac/extras/slimpac/";
@@ -93,7 +74,7 @@ SKINDIR='LOCALSTATEDIR/web/opac/skin';
 COMPRESSOR="" # TODO: set via ./configure
 #COMPRESSOR="java -jar /opt/yuicompressor-2.4.2/build/yuicompressor-2.4.2.jar"
 
-echo "Updating Evergreen organization tree and IDL using '$CONFIG'"
+echo "Updating Evergreen organization tree and IDL"
 echo ""
 
 OUTFILE="$JSDIR/fmall.js"

commit 4790c6a0f6896fe2ee77c4040e78eb9567ba4d18
Author: Dan Scott <dan at coffeecode.net>
Date:   Mon Aug 15 23:14:01 2011 -0400

    Further autogen.sh cleanup
    
    * Roll cache-generator.sh functionality into autogen.sh
    * No longer install deleted scripts
    * Teach Perl build infrastructure about OpenILS::Utils::Configure
    
    Signed-off-by: Dan Scott <dscott at laurentian.ca>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/src/Makefile.am b/Open-ILS/src/Makefile.am
index e14f4c2..c7c2a62 100644
--- a/Open-ILS/src/Makefile.am
+++ b/Open-ILS/src/Makefile.am
@@ -34,16 +34,8 @@ supportscr = @srcdir@/support-scripts
 
 # Collect files to be used by multiple targets
 
-autojsbinscripts = @srcdir@/extras/fieldmapper.pl \
- 	 @srcdir@/extras/locale_html_options.pl \
- 	 @srcdir@/extras/org_tree_js.pl \
-	 @srcdir@/extras/org_lasso_js.pl \
-	 @srcdir@/extras/facet_types_js.pl \
-	 @srcdir@/extras/org_tree_html_options.pl \
-	 @srcdir@/extras/org_tree_proximity.pl \
-	 @srcdir@/extras/autogen.sh \
-	 @srcdir@/extras/cache-generator.sh \
-	 @srcdir@/support-scripts/offline-blocked-list.pl 
+autojsbinscripts = @srcdir@/extras/autogen.sh \
+	@srcdir@/support-scripts/offline-blocked-list.pl 
 
 # Decide which entities to build
 
diff --git a/Open-ILS/src/extras/autogen.sh b/Open-ILS/src/extras/autogen.sh
index 0e47148..315d882 100755
--- a/Open-ILS/src/extras/autogen.sh
+++ b/Open-ILS/src/extras/autogen.sh
@@ -96,42 +96,56 @@ COMPRESSOR="" # TODO: set via ./configure
 echo "Updating Evergreen organization tree and IDL using '$CONFIG'"
 echo ""
 
+OUTFILE="$JSDIR/fmall.js"
 echo "Updating fieldmapper";
-perl -MOpenILS::Utils::Configure -e 'print OpenILS::Utils::Configure::fieldmapper();' > "$JSDIR/fmall.js";
-cp "$JSDIR/fmall.js" "$FMDOJODIR/"
-echo " -> $JSDIR/fmall.js";
+perl -MOpenILS::Utils::Configure -e 'print OpenILS::Utils::Configure::fieldmapper();' > "$OUTFILE"
+cp "$OUTFILE" "$FMDOJODIR/"
+echo " -> $OUTFILE"
+OUTFILES="$OUTFILE"
 
+OUTFILE="$JSDIR/fmcore.js"
 echo "Updating web_fieldmapper";
-perl -MOpenILS::Utils::Configure -e 'print OpenILS::Utils::Configure::fieldmapper("web_core");' > "$JSDIR/fmcore.js";
-echo " -> $JSDIR/fmcore.js";
+perl -MOpenILS::Utils::Configure -e 'print OpenILS::Utils::Configure::fieldmapper("web_core");' > "$OUTFILE"
+echo " -> $OUTFILE"
+OUTFILES="$OUTFILES $OUTFILE"
 
+OUTFILE="$JSDIR/*/OrgTree.js"
 echo "Updating OrgTree";
-perl -MOpenILS::Utils::Configure -e "OpenILS::Utils::Configure::org_tree_js('$JSDIR', 'OrgTree.js');'
+perl -MOpenILS::Utils::Configure -e "OpenILS::Utils::Configure::org_tree_js('$JSDIR', 'OrgTree.js');"
 cp "$JSDIR/en-US/OrgTree.js" "$FMDOJODIR/"
-echo " -> $JSDIR/*/OrgTree.js";
+echo " -> $OUTFILE"
+OUTFILES="$OUTFILES $OUTFILE"
 
+OUTFILE="$SLIMPACDIR/*/lib_list.inc"
 echo "Updating OrgTree HTML";
 perl -MOpenILS::Utils::Configure -e "OpenILS::Utils::Configure::org_tree_html_options('$SLIMPACDIR', 'lib_list.inc');"
-echo " -> $SLIMPACDIR/*/lib_list.inc";
+echo " -> $OUTFILE"
+OUTFILES="$OUTFILES $OUTFILE"
 
+OUTFILE="$SLIMPACDIR/locales.inc"
 echo "Updating locales selection HTML";
-perl -MOpenILS::Utils::Configure -e "print OpenILS::Utils::Configure::locale_html_options();" > "$SLIMPACDIR/locales.inc"
-echo " -> $SLIMPACDIR/*/locales.inc";
+perl -MOpenILS::Utils::Configure -e "print OpenILS::Utils::Configure::locale_html_options();" > "$OUTFILE"
+echo " -> $OUTFILE"
+OUTFILES="$OUTFILES $OUTFILE"
 
+OUTFILE="$JSDIR/OrgLasso.js"
 echo "Updating Search Groups";
-perl -MOpenILS::Utils::Configure -e "print OpenILS::Utils::Configure::org_lasso();" > "$JSDIR/OrgLasso.js";
-cp "$JSDIR/OrgLasso.js" "$FMDOJODIR/"
-echo " -> $JSDIR/OrgLasso.js";
+perl -MOpenILS::Utils::Configure -e "print OpenILS::Utils::Configure::org_lasso();" > "$OUTFILE";
+cp "$OUTFILE" "$FMDOJODIR/"
+echo " -> $OUTFILE"
+OUTFILES="$OUTFILES $OUTFILE"
 
+OUTFILE="$JSDIR/*/FacetDefs.js"
 echo "Updating Facet Definitions";
 perl -MOpenILS::Utils::Configure -e "OpenILS::Utils::Configure::facet_types('$JSDIR', 'FacetDefs.js');"
 cp "$JSDIR/en-US/FacetDefs.js" "$FMDOJODIR/"
-echo " -> $JSDIR/*/FacetDefs.js";
+echo " -> $OUTFILE"
+OUTFILES="$OUTFILES $OUTFILE"
 
 if [ ! -z "$PROXIMITY" ]
 then
 	echo "Refreshing proximity of org units";
-    perl -MOpenILS::Utils::Configure -e "OpenILS::Utils::Configure::org_tree_proximity();"
+	perl -MOpenILS::Utils::Configure -e "OpenILS::Utils::Configure::org_tree_proximity();"
 fi
 
 echo "Creating combined JS..."
@@ -163,7 +177,21 @@ for skin in $(ls $SKINDIR); do
     fi;
 done;
 
+# Generate a hash of the generated files
+(
+	date +%Y%m%d
+	for file in `ls -1 $OUTFILES`; do
+		if [[ -n $file && -f $file ]]
+		then
+			md5sum $file
+		fi
+	done
+) | md5sum | cut -f1 -d' ' | colrm 1 26 > LOCALSTATEDIR/web/eg_cache_hash
+
+echo
+echo -n "Current Evergreen cache key: "
+cat LOCALSTATEDIR/web/eg_cache_hash
+
 echo "Done";
 
 )
-
diff --git a/Open-ILS/src/extras/cache-generator.sh b/Open-ILS/src/extras/cache-generator.sh
deleted file mode 100644
index a9dd834..0000000
--- a/Open-ILS/src/extras/cache-generator.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-PID=$$
-
-BINDIR/autogen.sh $@ |tee /tmp/.eg-cache-generator.$PID
-
-(
-  date +%Y%m%d
-  for i in `grep -- '->' /tmp/.eg-cache-generator.$PID| awk '{print $2}'`; do
-    ls $i >/dev/null 2>/dev/null && md5sum $i
-  done
-) | md5sum | cut -f1 -d' ' | colrm 1 26 > LOCALSTATEDIR/web/eg_cache_hash
-
-echo
-echo -n "Current Evergreen cache key: "
-cat LOCALSTATEDIR/web/eg_cache_hash
-
-rm /tmp/.eg-cache-generator.$PID
-
diff --git a/Open-ILS/src/perlmods/MANIFEST b/Open-ILS/src/perlmods/MANIFEST
index 3641b6f..c581a01 100644
--- a/Open-ILS/src/perlmods/MANIFEST
+++ b/Open-ILS/src/perlmods/MANIFEST
@@ -129,6 +129,7 @@ lib/OpenILS/SIP/Transaction/Renew.pm
 lib/OpenILS/Template/Plugin/Unicode.pm
 lib/OpenILS/Template/Plugin/WebSession.pm
 lib/OpenILS/Template/Plugin/WebUtils.pm
+lib/OpenILS/Utils/Configure.pm
 lib/OpenILS/Utils/Cronscript.pm
 lib/OpenILS/Utils/Cronscript.pm.in
 lib/OpenILS/Utils/CStoreEditor.pm
diff --git a/Open-ILS/src/perlmods/t/14-OpenILS-Utils.t b/Open-ILS/src/perlmods/t/14-OpenILS-Utils.t
index f24e980..28a7267 100644
--- a/Open-ILS/src/perlmods/t/14-OpenILS-Utils.t
+++ b/Open-ILS/src/perlmods/t/14-OpenILS-Utils.t
@@ -1,7 +1,8 @@
 #!perl -T
 
-use Test::More tests => 19;
+use Test::More tests => 20;
 
+use_ok( 'OpenILS::Utils::Configure' );
 use_ok( 'OpenILS::Utils::Cronscript' );
 use_ok( 'OpenILS::Utils::CStoreEditor' );
 use_ok( 'OpenILS::Utils::Editor' );

commit f694d684d1683f6545c6dc2e4e801a340ff833d6
Author: Dan Scott <dan at coffeecode.net>
Date:   Mon Aug 15 18:03:37 2011 -0400

    Revamp autogen.sh to call functions from a Perl module
    
    This cut moves all of the logic from the individual scripts that
    autogen.sh used to call into a self-contained Perl module. We use
    OpenILS::Utils::Cronscript to avoid much of the init dupe code.
    
    Note that calling Perl functions from a bash script is not crazy pretty,
    but perhaps in the long run autogen.sh becomes something else. This is
    just a step towards consolidating those functions in a single module
    while maintaining the same interface as before.
    
    Signed-off-by: Dan Scott <dscott at laurentian.ca>
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>

diff --git a/Open-ILS/src/extras/autogen.sh b/Open-ILS/src/extras/autogen.sh
index 0c36edb..0e47148 100755
--- a/Open-ILS/src/extras/autogen.sh
+++ b/Open-ILS/src/extras/autogen.sh
@@ -43,7 +43,7 @@ function usage {
 	echo "Examples:";
 	echo "";
 	echo "  Update organization tree and fieldmapper IDL:";
-	echo "    $0 -c SYSCONFDIR/opensrf_core.xml";
+	echo "    $0";
 	echo "";
 	echo "  Update organization tree and refresh proximity:";
 	echo "    $0 -u -c SYSCONFDIR/opensrf_core.xml";
@@ -97,41 +97,41 @@ echo "Updating Evergreen organization tree and IDL using '$CONFIG'"
 echo ""
 
 echo "Updating fieldmapper";
-perl fieldmapper.pl "$CONFIG"	> "$JSDIR/fmall.js";
+perl -MOpenILS::Utils::Configure -e 'print OpenILS::Utils::Configure::fieldmapper();' > "$JSDIR/fmall.js";
 cp "$JSDIR/fmall.js" "$FMDOJODIR/"
 echo " -> $JSDIR/fmall.js";
 
 echo "Updating web_fieldmapper";
-perl fieldmapper.pl "$CONFIG" "web_core"	> "$JSDIR/fmcore.js";
+perl -MOpenILS::Utils::Configure -e 'print OpenILS::Utils::Configure::fieldmapper("web_core");' > "$JSDIR/fmcore.js";
 echo " -> $JSDIR/fmcore.js";
 
 echo "Updating OrgTree";
-perl org_tree_js.pl "$CONFIG" "$JSDIR" "OrgTree.js";
+perl -MOpenILS::Utils::Configure -e "OpenILS::Utils::Configure::org_tree_js('$JSDIR', 'OrgTree.js');'
 cp "$JSDIR/en-US/OrgTree.js" "$FMDOJODIR/"
 echo " -> $JSDIR/*/OrgTree.js";
 
 echo "Updating OrgTree HTML";
-perl org_tree_html_options.pl "$CONFIG" "$SLIMPACDIR" "lib_list.inc";
+perl -MOpenILS::Utils::Configure -e "OpenILS::Utils::Configure::org_tree_html_options('$SLIMPACDIR', 'lib_list.inc');"
 echo " -> $SLIMPACDIR/*/lib_list.inc";
 
 echo "Updating locales selection HTML";
-perl locale_html_options.pl "$CONFIG" "$SLIMPACDIR/locales.inc";
+perl -MOpenILS::Utils::Configure -e "print OpenILS::Utils::Configure::locale_html_options();" > "$SLIMPACDIR/locales.inc"
 echo " -> $SLIMPACDIR/*/locales.inc";
 
 echo "Updating Search Groups";
-perl org_lasso_js.pl "$CONFIG" > "$JSDIR/OrgLasso.js";
+perl -MOpenILS::Utils::Configure -e "print OpenILS::Utils::Configure::org_lasso();" > "$JSDIR/OrgLasso.js";
 cp "$JSDIR/OrgLasso.js" "$FMDOJODIR/"
 echo " -> $JSDIR/OrgLasso.js";
 
 echo "Updating Facet Definitions";
-perl facet_types_js.pl "$CONFIG" "$JSDIR" "FacetDefs.js";
+perl -MOpenILS::Utils::Configure -e "OpenILS::Utils::Configure::facet_types('$JSDIR', 'FacetDefs.js');"
 cp "$JSDIR/en-US/FacetDefs.js" "$FMDOJODIR/"
 echo " -> $JSDIR/*/FacetDefs.js";
 
 if [ ! -z "$PROXIMITY" ]
 then
 	echo "Refreshing proximity of org units";
-	perl org_tree_proximity.pl "$CONFIG";
+    perl -MOpenILS::Utils::Configure -e "OpenILS::Utils::Configure::org_tree_proximity();"
 fi
 
 echo "Creating combined JS..."
diff --git a/Open-ILS/src/extras/facet_types_js.pl b/Open-ILS/src/extras/facet_types_js.pl
deleted file mode 100755
index 3bae8ea..0000000
--- a/Open-ILS/src/extras/facet_types_js.pl
+++ /dev/null
@@ -1,97 +0,0 @@
-#!/usr/bin/perl
-use strict; use warnings;
-
-# ------------------------------------------------------------
-# turns the facet fields defined on config.metabib_field into JS
-# ------------------------------------------------------------
-
-use OpenSRF::System;
-use OpenILS::Utils::Fieldmapper;
-use OpenSRF::Utils::SettingsClient;
-use OpenSRF::Utils::Cache;
-use File::Spec;
-
-die "usage: $0 <bootstrap_config> <path> <filename>" unless $ARGV[2];
-OpenSRF::System->bootstrap_client(config_file => $ARGV[0]);
-
-my $path = $ARGV[1];
-my $filename = $ARGV[2];
-
-Fieldmapper->import(IDL => OpenSRF::Utils::SettingsClient->new->config_value("IDL"));
-
-# must be loaded after the IDL is parsed
-require OpenILS::Utils::CStoreEditor;
-
-# Get our list of locales
-my $session = OpenSRF::AppSession->create("open-ils.cstore");
-my $locales = $session->request("open-ils.cstore.direct.config.i18n_locale.search.atomic", {"code" => {"!=" => undef}}, {"order_by" => {"i18n_l" => "name"}})->gather();
-$session->disconnect();
-
-foreach my $locale (@$locales) {
-    warn "removing facet list from the cache for locale " . $locale->code . "...\n";
-    my $cache = OpenSRF::Utils::Cache->new;
-    $cache->delete_cache("facet_definition.".$locale->code);
-
-    # fetch the org_unit's and org_unit_type's
-    my $e = OpenILS::Utils::CStoreEditor->new;
-    $e->session->session_locale($locale->code) if ($locale->code);
-
-    my $types = $e->retrieve_all_actor_org_unit_type;
-    my $tree = $e->request(
-        'open-ils.cstore.direct.config.metabib_field.search.atomic',
-        {   facet_field     => 't' },
-        {   no_i18n         => $locale->code ? 0 : 1,
-            flesh           => 1,
-            flesh_fields    => { cmf => [ 'field_class' ] }
-        }
-    );
-    my $dir = File::Spec->catdir($path, $locale->code);
-    if (!-d $dir) {
-        mkdir($dir);
-    }
-    build_tree_js($tree, File::Spec->catfile($dir, $filename));
-}
-
-
-sub val {
-    my $v = shift;
-    return 'null' unless defined $v;
-
-    # required for JS code this is checking truthness 
-    # without using isTrue() (1/0 vs. t/f)
-    return 1 if $v eq 't';
-    return 0 if $v eq 'f';
-
-    $v =~ s/([\x{0080}-\x{fffd}])/sprintf('\u%04x',ord($1))/sgoe;
-
-    return "\"$v\"";
-}
-
-sub build_tree_js {
-    my $tree = shift;
-    my $outfile = shift;
-
-    my $pile = "var globalFacets = {";
-    my @array;
-    for my $o (@$tree) {
-        my %hash = (
-            id          => $o->id,
-            name        => val($o->name),
-            label       => val($o->label),
-            classname   => val($o->field_class->name),
-            classlabel  => val($o->field_class->label)
-        );
-
-        $pile .= $hash{id}.':{'.join(',', map { "$_:$hash{$_}" } keys %hash).'},';
-    }
-
-    $pile =~ s/,$//; # remove trailing comma
-    $pile .= "}; /* Facets */";
-
-    open(OUTFH, '>', $outfile) or die "Could not open $outfile : $!";
-    print OUTFH "$pile\n";
-    close(OUTFH);
-}
-
-
-
diff --git a/Open-ILS/src/extras/fieldmapper.pl b/Open-ILS/src/extras/fieldmapper.pl
deleted file mode 100755
index d365bad..0000000
--- a/Open-ILS/src/extras/fieldmapper.pl
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/perl
-use strict; use warnings;
-use Data::Dumper; 
-use OpenILS::Utils::Fieldmapper;  
-use OpenSRF::Utils::SettingsClient;
-
-OpenSRF::System->bootstrap_client(config_file => $ARGV[0]);
-Fieldmapper->import(IDL => OpenSRF::Utils::SettingsClient->new->config_value("IDL"));
-
-my $map = $Fieldmapper::fieldmap;
-
-# if a true value is provided, we generate the web (light) version of the fieldmapper
-my $web = $ARGV[0];
-if(!$web) { $web = ""; }
-
-
-my @web_core = qw/ 
-	aou au perm_ex ex aout 
-	mvr ccs ahr aua ac actscecm cbreb acpl 
-	cbrebi acpn acp acnn acn bren asc asce 
-	clfm cifm citm cam ahtc
-	asv asva asvr asvq 
-	circ ccs ahn bre mrd
-	crcd crmf crrf mbts aoc aus 
-	mous mobts mb ancc cnct cnal
-	/;
-
-my @reports = qw/ perm_ex ex ao aou aout /;
-
-
-print "var _c = {};\n";
-
-for my $object (keys %$map) {
-
-	my $hint = $map->{$object}->{hint};
-
-	if($web eq "web_core") {
-		next unless (grep { $_ eq $hint } @web_core );
-	}
-
-	if($web eq "reports") {
-		next unless (grep { $_ eq $hint } @web_core );
-	}
-
-
-	my $short_name = $map->{$object}->{hint};
-
-	my @fields;
-	for my $field (keys %{$map->{$object}->{fields}}) {
-		my $position = $map->{$object}->{fields}->{$field}->{position};
-		$fields[$position] = $field;
-	}
-
-	print "_c[\"$short_name\"] = [";
-	for my $f (@fields) { 
-		next unless $f;
-		if( $f ne "isnew" and $f ne "ischanged" and $f ne "isdeleted" ) {
-			print "\"$f\","; 
-		}
-	}
-	print "];\n";
-
-
-}
-
-print "var fmclasses = _c;\n";
-
diff --git a/Open-ILS/src/extras/locale_html_options.pl b/Open-ILS/src/extras/locale_html_options.pl
deleted file mode 100755
index 3675e23..0000000
--- a/Open-ILS/src/extras/locale_html_options.pl
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/perl
-use strict;
-use warnings;
-# Turns supported locales into a static HTML option list
-
-use OpenSRF::AppSession;
-use OpenSRF::System;
-use OpenILS::Utils::Fieldmapper;
-use OpenSRF::Utils::SettingsClient;
-use OpenILS::Application::AppUtils;
-
-die "usage: perl locale_html_options.pl <bootstrap_config> <output_file>" unless $ARGV[1];
-OpenSRF::System->bootstrap_client(config_file => $ARGV[0]);
-
-open FILE, ">$ARGV[1]";
-
-Fieldmapper->import(IDL => OpenSRF::Utils::SettingsClient->new->config_value("IDL"));
-
-my $ses = OpenSRF::AppSession->create("open-ils.cstore");
-my $locales = $ses->request("open-ils.cstore.direct.config.i18n_locale.search.atomic", {"code" => {"!=" => undef}}, {"order_by" => {"i18n_l" => "name"}})->gather();
-
-print_option($locales);
-
-$ses->disconnect();
-close FILE;
-
-
-sub print_option {
-	my $locales = shift;
-	print FILE "<select name='locale'>\n";
-	foreach my $locale (@$locales) {
-		my $code = OpenILS::Application::AppUtils->entityize($locale->code);
-		my $name = OpenILS::Application::AppUtils->entityize($locale->name);
-		print FILE "  <option value='$code'>$name</option>\n";
-	}
-	print FILE "</select>\n";
-}
-
diff --git a/Open-ILS/src/extras/org_lasso_js.pl b/Open-ILS/src/extras/org_lasso_js.pl
deleted file mode 100755
index c7cd693..0000000
--- a/Open-ILS/src/extras/org_lasso_js.pl
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/perl
-use strict; use warnings;
-
-# ------------------------------------------------------------
-# turns the actor.org_lasso table into a js file
-# ------------------------------------------------------------
-
-use OpenSRF::System;
-use OpenILS::Utils::Fieldmapper;
-use OpenSRF::Utils::SettingsClient;
-use OpenSRF::Utils::JSON;
-
-die "usage: perl org_tree_js.pl <bootstrap_config>" unless $ARGV[0];
-OpenSRF::System->bootstrap_client(config_file => $ARGV[0]);
-
-Fieldmapper->import(IDL => OpenSRF::Utils::SettingsClient->new->config_value("IDL"));
-
-# must be loaded after the IDL is parsed
-require OpenILS::Utils::CStoreEditor;
-
-# fetch the org_unit's and org_unit_type's
-my $e = OpenILS::Utils::CStoreEditor->new;
-my $lassos = $e->request(
-    'open-ils.cstore.direct.actor.org_lasso.search.atomic',
-    {id => {"!=" => undef}},
-    {order_by => {lasso => 'name'}}
-);
-
-# We need at least one defined search group; otherwise, just generate an empty array
-if (scalar(@$lassos) > 0) {
-    print
-        "var _lasso = [\n  new lasso(" .
-        join( "),\n  new lasso(", map { OpenSRF::Utils::JSON->perl2JSON( bless($_, 'ARRAY') ) } @$lassos ) .
-        ")\n]; /* Org Search Groups (Lassos) */ \n";
-} else {
-    print <<HERE;
-var _lasso = [
-]; /* Org Search Groups (Lassos) */
-HERE
-}
-
diff --git a/Open-ILS/src/extras/org_tree_html_options.pl b/Open-ILS/src/extras/org_tree_html_options.pl
deleted file mode 100755
index e461d03..0000000
--- a/Open-ILS/src/extras/org_tree_html_options.pl
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/perl
-# for each supported locale, turn the orgTree and orgTypes into a static HTML option list
-
-use OpenSRF::AppSession;
-use OpenSRF::System;
-use OpenILS::Utils::Fieldmapper;
-use OpenSRF::Utils::SettingsClient;
-use OpenILS::Application::AppUtils;
-use Unicode::Normalize;
-use Data::Dumper;
-use File::Spec;
-
-die "usage: perl org_tree_html_options.pl <bootstrap_config> <output_path> <output_file>" unless $ARGV[2];
-OpenSRF::System->bootstrap_client(config_file => $ARGV[0]);
-
-my $path = $ARGV[1];
-my $filename = $ARGV[2];
-
-my @types;
-
-Fieldmapper->import(IDL => OpenSRF::Utils::SettingsClient->new->config_value("IDL"));
-
-#Get our list of locales
-my $session = OpenSRF::AppSession->create("open-ils.cstore");
-my $locales = $session->request("open-ils.cstore.direct.config.i18n_locale.search.atomic", {"code" => {"!=" => undef}}, {"order_by" => {"i18n_l" => "name"}})->gather();
-$session->disconnect();
-
-foreach my $locale (@$locales) {
-	my $ses = OpenSRF::AppSession->create("open-ils.actor");
-	$ses->session_locale($locale->code);
-	my $tree = $ses->request("open-ils.actor.org_tree.retrieve")->gather(1);
-
-	my $aout = $ses->request("open-ils.actor.org_types.retrieve")->gather(1);
-	foreach my $type (@$aout) {
-		$types[int($type->id)] = $type;
-	}
-	my $dir = File::Spec->catdir($path, $locale->code);
-	if (!-d $dir) {
-		mkdir($dir) or die "Could not create output directory: $dir $!\n";
-	}
-
-	my @org_tree_html;
-	print_option($tree, \@org_tree_html);
-	$ses->disconnect();
-	open(FILE, '>', File::Spec->catfile($dir, $filename)) or die $!;
-	print FILE @org_tree_html;
-	close FILE;
-}
-
-sub print_option {
-	my $node = shift;
-	my $org_tree_html = shift;
-
-	return unless ($node->opac_visible =~ /^[y1t]+/i);
-
-	my $depth = $types[$node->ou_type]->depth;
-	my $sname = OpenILS::Application::AppUtils->entityize($node->shortname);
-	my $name = OpenILS::Application::AppUtils->entityize($node->name);
-	my $kids = $node->children;
-
-	push @$org_tree_html, "<option value='$sname'>" . '&#160;&#160;&#160;'x$depth . "$name</option>\n";
-	print_option($_, $org_tree_html) for (@$kids);
-}
-
diff --git a/Open-ILS/src/extras/org_tree_js.pl b/Open-ILS/src/extras/org_tree_js.pl
deleted file mode 100755
index 50f34cb..0000000
--- a/Open-ILS/src/extras/org_tree_js.pl
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/perl
-use strict; use warnings;
-
-# ------------------------------------------------------------
-# turns the orgTree and orgTypes into js files
-# ------------------------------------------------------------
-
-use OpenSRF::System;
-use OpenILS::Utils::Fieldmapper;
-use OpenSRF::Utils::SettingsClient;
-use OpenSRF::Utils::Cache;
-use File::Spec;
-
-die "usage: perl org_tree_js.pl <bootstrap_config> <path> <filename>" unless $ARGV[2];
-OpenSRF::System->bootstrap_client(config_file => $ARGV[0]);
-
-my $path = $ARGV[1];
-my $filename = $ARGV[2];
-
-Fieldmapper->import(IDL => OpenSRF::Utils::SettingsClient->new->config_value("IDL"));
-
-# must be loaded after the IDL is parsed
-require OpenILS::Utils::CStoreEditor;
-
-# Get our list of locales
-my $session = OpenSRF::AppSession->create("open-ils.cstore");
-my $locales = $session->request("open-ils.cstore.direct.config.i18n_locale.search.atomic", {"code" => {"!=" => undef}}, {"order_by" => {"i18n_l" => "name"}})->gather();
-$session->disconnect();
-
-foreach my $locale (@$locales) {
-	warn "removing OrgTree from the cache for locale " . $locale->code . "...\n";
-	my $cache = OpenSRF::Utils::Cache->new;
-	$cache->delete_cache("orgtree.$locale->code");
-
-	# fetch the org_unit's and org_unit_type's
-	my $e = OpenILS::Utils::CStoreEditor->new;
-	$e->session->session_locale($locale->code) if ($locale->code);
-
-	my $types = $e->retrieve_all_actor_org_unit_type;
-	my $tree = $e->request(
-		'open-ils.cstore.direct.actor.org_unit.search.atomic',
-		{id => {"!=" => undef}},
-		{order_by => {aou => 'name'}, no_i18n => $locale->code ? 0 : 1 }
-	);
-	my $dir = File::Spec->catdir($path, $locale->code);
-	if (!-d $dir) {
-		mkdir($dir);
-	}
-	build_tree_js($types, $tree, File::Spec->catfile($dir, $filename));
-}
-
-
-sub val {
-    my $v = shift;
-    return 'null' unless defined $v;
-
-    # required for JS code this is checking truthness 
-    # without using isTrue() (1/0 vs. t/f)
-    return 1 if $v eq 't';
-    return 0 if $v eq 'f';
-
-    $v =~ s/([\x{0080}-\x{fffd}])/sprintf('\u%04x',ord($1))/sgoe;
-
-    return "\"$v\"";
-}
-
-sub build_tree_js {
-	my $types = shift;
-	my $tree = shift;
-	my $outfile = shift;
-
-	my $pile = "var _l = [";
-
-	my @array;
-	for my $o (@$tree) {
-		my ($i,$t,$p,$n,$v,$s) = ($o->id,$o->ou_type,$o->parent_ou,val($o->name),val($o->opac_visible),val($o->shortname));
-		$p ||= 'null';
-		push @array, "[$i,$t,$p,$n,$v,$s]";
-	}
-
-	$pile .= join ',', @array;
-	$pile .= "]; /* Org Units */ \n";
-
-
-	$pile .= 'var globalOrgTypes = [';
-	for my $t (@$types) {
-		my ($u,$v,$d,$i,$n,$o,$p) = (val($t->can_have_users),val($t->can_have_vols),$t->depth,$t->id,val($t->name),val($t->opac_label),$t->parent);
-		$p ||= 'null';
-		$pile .= "new aout([null,$u,$v,$d,$i,$n,$o,$p]), ";
-	}
-	$pile =~ s/, $//; # remove trailing comma
-		$pile .= ']; /* OU Types */';
-	open(OUTFH, '>', $outfile) or die "Could not open $outfile : $!";
-	print OUTFH "$pile\n";
-	close(OUTFH);
-}
-
-
-
diff --git a/Open-ILS/src/extras/org_tree_proximity.pl b/Open-ILS/src/extras/org_tree_proximity.pl
deleted file mode 100755
index 4cfbaae..0000000
--- a/Open-ILS/src/extras/org_tree_proximity.pl
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/perl
-# vim:et:ts=4:sw=4
-# -----------------------------------------------------------------------
-# Copyright (C) 2008  Laurentian University
-# Dan Scott <dscott at laurentian.ca>
-# 
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# -----------------------------------------------------------------------
-
-# calculate the proximity of organizations in the organization tree
-
-use OpenSRF::AppSession;
-use OpenSRF::System;
-use OpenILS::Utils::Fieldmapper;
-use OpenSRF::Utils::SettingsClient;
-
-die "usage: perl org_tree_proximity.pl <bootstrap_config>" unless $ARGV[0];
-OpenSRF::System->bootstrap_client(config_file => $ARGV[0]);
-
-Fieldmapper->import(IDL => OpenSRF::Utils::SettingsClient->new->config_value("IDL"));
-
-my $ses = OpenSRF::AppSession->create("open-ils.storage");
-my $result = $ses->request("open-ils.storage.actor.org_unit.refresh_proximity");
-
-if ($result) {
-    print "Successfully updated the organization proximity\n";
-} else {
-    print "Failed to update the organization proximity\n";
-}
-
-$ses->disconnect();
diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Utils/Configure.pm b/Open-ILS/src/perlmods/lib/OpenILS/Utils/Configure.pm
new file mode 100644
index 0000000..b324ac2
--- /dev/null
+++ b/Open-ILS/src/perlmods/lib/OpenILS/Utils/Configure.pm
@@ -0,0 +1,358 @@
+package OpenILS::Utils::Configure;
+
+use strict;
+use warnings;
+use File::Spec;
+use OpenILS::Utils::Cronscript;
+
+sub fieldmapper {
+    my $web = shift;
+
+    my $core = OpenILS::Utils::Cronscript->new({nolockfile => 1});
+    $core->bootstrap;
+
+    my $output;
+    my $map = $Fieldmapper::fieldmap;
+
+    # if a true value is provided, we generate the web (light) version of the fieldmapper
+    if(!$web) { $web = ""; }
+
+    my @web_core = qw/ 
+        aou au perm_ex ex aout 
+        mvr ccs ahr aua ac actscecm cbreb acpl 
+        cbrebi acpn acp acnn acn bren asc asce 
+        clfm cifm citm cam ahtc
+        asv asva asvr asvq 
+        circ ccs ahn bre mrd
+        crcd crmf crrf mbts aoc aus 
+        mous mobts mb ancc cnct cnal
+        /;
+
+    my @reports = qw/ perm_ex ex ao aou aout /;
+
+
+    $output = "var _c = {};\n";
+
+    for my $object (keys %$map) {
+
+        my $hint = $map->{$object}->{hint};
+
+        if($web eq "web_core") {
+            next unless (grep { $_ eq $hint } @web_core );
+        }
+
+        if($web eq "reports") {
+            next unless (grep { $_ eq $hint } @web_core );
+        }
+
+
+        my $short_name = $map->{$object}->{hint};
+
+        my @fields;
+        for my $field (keys %{$map->{$object}->{fields}}) {
+            my $position = $map->{$object}->{fields}->{$field}->{position};
+            $fields[$position] = $field;
+        }
+
+        $output .= "_c[\"$short_name\"] = [";
+        for my $f (@fields) { 
+            next unless $f;
+            if( $f ne "isnew" and $f ne "ischanged" and $f ne "isdeleted" ) {
+                $output .= "\"$f\","; 
+            }
+        }
+        $output .= "];\n";
+
+
+    }
+
+    $output .= "var fmclasses = _c;\n";
+    return $output;
+}
+
+sub org_tree_js {
+    # ------------------------------------------------------------
+    # turns the orgTree and orgTypes into js files
+    # ------------------------------------------------------------
+    use OpenSRF::Utils::Cache;
+
+    my $path = shift;
+    my $filename = shift;
+
+    my $core = OpenILS::Utils::Cronscript->new({nolockfile => 1});
+    $core->bootstrap;
+
+    # must be loaded after the IDL is parsed
+    require OpenILS::Utils::CStoreEditor;
+
+    # Get our list of locales
+    my $locales = get_locales();
+
+    foreach my $locale (@$locales) {
+        warn "removing OrgTree from the cache for locale " . $locale->code . "...\n";
+        my $cache = OpenSRF::Utils::Cache->new;
+        $cache->delete_cache("orgtree.$locale->code");
+
+        # fetch the org_unit's and org_unit_type's
+        my $e = OpenILS::Utils::CStoreEditor->new;
+        $e->init();
+        $e->session->session_locale($locale->code) if ($locale->code);
+
+        my $types = $e->retrieve_all_actor_org_unit_type;
+        my $tree = $e->request(
+            'open-ils.cstore.direct.actor.org_unit.search.atomic',
+            {id => {"!=" => undef}},
+            {order_by => {aou => 'name'}, no_i18n => $locale->code ? 0 : 1 }
+        );
+        my $dir = File::Spec->catdir($path, $locale->code);
+        if (!-d $dir) {
+            mkdir($dir);
+        }
+        build_tree_js($types, $tree, File::Spec->catfile($dir, $filename));
+    }
+}
+
+sub val {
+    my $v = shift;
+    return 'null' unless defined $v;
+
+    # required for JS code this is checking truthness 
+    # without using isTrue() (1/0 vs. t/f)
+    return 1 if $v eq 't';
+    return 0 if $v eq 'f';
+
+    $v =~ s/([\x{0080}-\x{fffd}])/sprintf('\u%04x',ord($1))/sgoe;
+
+    return "\"$v\"";
+}
+
+sub build_tree_js {
+    my $types = shift;
+    my $tree = shift;
+    my $outfile = shift;
+
+    my $pile = "var _l = [";
+
+    my @array;
+    for my $o (@$tree) {
+        my ($i,$t,$p,$n,$v,$s) = ($o->id,$o->ou_type,$o->parent_ou,val($o->name),val($o->opac_visible),val($o->shortname));
+        $p ||= 'null';
+        push @array, "[$i,$t,$p,$n,$v,$s]";
+    }
+
+    $pile .= join ',', @array;
+    $pile .= "]; /* Org Units */ \n";
+
+    $pile .= 'var globalOrgTypes = [';
+    for my $t (@$types) {
+        my ($u,$v,$d,$i,$n,$o,$p) = (val($t->can_have_users),val($t->can_have_vols),$t->depth,$t->id,val($t->name),val($t->opac_label),$t->parent);
+        $p ||= 'null';
+        $pile .= "new aout([null,$u,$v,$d,$i,$n,$o,$p]), ";
+    }
+    $pile =~ s/, $//; # remove trailing comma
+    $pile .= ']; /* OU Types */';
+
+    open(OUTFH, '>', $outfile) or die "Could not open $outfile : $!";
+    print OUTFH "$pile\n";
+    close(OUTFH);
+}
+
+sub org_tree_html_options {
+    # for each supported locale, turn the orgTree and orgTypes into a static HTML option list
+
+    use Unicode::Normalize;
+    use Data::Dumper;
+
+    my $path = shift;
+    my $filename = shift; 
+
+    my @types;
+
+    my $core = OpenILS::Utils::Cronscript->new({nolockfile => 1});
+    $core->bootstrap;
+
+    my $locales = get_locales();
+
+    foreach my $locale (@$locales) {
+        my $ses = OpenSRF::AppSession->create("open-ils.actor");
+        $ses->session_locale($locale->code);
+        my $tree = $ses->request("open-ils.actor.org_tree.retrieve")->gather(1);
+
+        my $aout = $ses->request("open-ils.actor.org_types.retrieve")->gather(1);
+        foreach my $type (@$aout) {
+            $types[int($type->id)] = $type;
+        }
+        my $dir = File::Spec->catdir($path, $locale->code);
+        if (!-d $dir) {
+            mkdir($dir) or die "Could not create output directory: $dir $!\n";
+        }
+
+        my @org_tree_html;
+        print_org_tree_html($tree, \@org_tree_html, \@types);
+        $ses->disconnect();
+
+        open(OUTFH, '>', File::Spec->catfile($dir, $filename)) or die $!;
+        print OUTFH @org_tree_html;
+        close OUTFH;
+    }
+
+}
+
+sub print_org_tree_html {
+	my $node = shift;
+	my $org_tree_html = shift;
+    my $types = shift;
+
+	return unless ($node->opac_visible =~ /^[y1t]+/i);
+
+	my $depth = $types->[$node->ou_type]->depth;
+	my $sname = OpenILS::Application::AppUtils->entityize($node->shortname);
+	my $name = OpenILS::Application::AppUtils->entityize($node->name);
+	my $kids = $node->children;
+
+	push @$org_tree_html, "<option value='$sname'>" . '&#160;&#160;&#160;'x$depth . "$name</option>\n";
+	print_org_tree_html($_, $org_tree_html, $types) for (@$kids);
+}
+
+sub org_lasso {
+    # Renders a JavaScript version of the org unit search groups
+    
+    my $core = OpenILS::Utils::Cronscript->new({nolockfile => 1});
+    $core->bootstrap;
+
+    # must be loaded after the IDL is parsed
+    require OpenILS::Utils::CStoreEditor;
+
+    my $output;
+
+    # fetch the org_unit's and org_unit_type's
+    my $e = OpenILS::Utils::CStoreEditor->new;
+    $e->init();
+    my $lassos = $e->request(
+        'open-ils.cstore.direct.actor.org_lasso.search.atomic',
+        {id => {"!=" => undef}},
+        {order_by => {lasso => 'name'}}
+    );
+
+    # We need at least one defined search group; otherwise, just generate an empty array
+    if (scalar(@$lassos) > 0) {
+       $output =  
+            "var _lasso = [\n  new lasso(" .
+            join( "),\n  new lasso(", map { OpenSRF::Utils::JSON->perl2JSON( bless($_, 'ARRAY') ) } @$lassos ) .
+            ")\n]; /* Org Search Groups (Lassos) */ \n";
+    } else {
+        $output = <<HERE;
+var _lasso = [
+]; /* Org Search Groups (Lassos) */
+HERE
+    }
+
+    return $output;
+}
+
+sub locale_html_options {
+    # Turns supported locales into a static HTML option list
+    my $locales = get_locales();
+
+	my $output = "<select name='locale'>\n";
+	foreach my $locale (@$locales) {
+		my $code = OpenILS::Application::AppUtils->entityize($locale->code);
+		my $name = OpenILS::Application::AppUtils->entityize($locale->name);
+		$output .= "  <option value='$code'>$name</option>\n";
+	}
+	$output .= "</select>\n";
+
+    return $output;
+}
+
+sub facet_types {
+    # ------------------------------------------------------------
+    # turns the facet fields defined on config.metabib_field into JS
+    # ------------------------------------------------------------
+
+    my $path = shift;
+    my $filename = shift;
+    # Get our list of locales
+    my $locales = get_locales();
+
+    foreach my $locale (@$locales) {
+        warn "removing facet list from the cache for locale " . $locale->code . "...\n";
+        my $cache = OpenSRF::Utils::Cache->new;
+        $cache->delete_cache("facet_definition.".$locale->code);
+
+        # fetch the org_unit's and org_unit_type's
+        my $e = OpenILS::Utils::CStoreEditor->new;
+        $e->init();
+        $e->session->session_locale($locale->code) if ($locale->code);
+
+        my $types = $e->retrieve_all_actor_org_unit_type;
+        my $tree = $e->request(
+            'open-ils.cstore.direct.config.metabib_field.search.atomic',
+            {   facet_field     => 't' },
+            {   no_i18n         => $locale->code ? 0 : 1,
+                flesh           => 1,
+                flesh_fields    => { cmf => [ 'field_class' ] }
+            }
+        );
+        my $dir = File::Spec->catdir($path, $locale->code);
+        if (!-d $dir) {
+            mkdir($dir);
+        }
+        build_facet_type_js($tree, File::Spec->catfile($dir, $filename));
+    }
+}
+
+sub build_facet_type_js {
+    my $tree = shift;
+    my $outfile = shift;
+
+    my $pile = "var globalFacets = {";
+    my @array;
+    for my $o (@$tree) {
+        my %hash = (
+            id          => $o->id,
+            name        => val($o->name),
+            label       => val($o->label),
+            classname   => val($o->field_class->name),
+            classlabel  => val($o->field_class->label)
+        );
+
+        $pile .= $hash{id}.':{'.join(',', map { "$_:$hash{$_}" } keys %hash).'},';
+    }
+
+    $pile =~ s/,$//; # remove trailing comma
+    $pile .= "}; /* Facets */";
+
+    open(OUTFH, '>', $outfile) or die "Could not open $outfile : $!";
+    print OUTFH "$pile\n";
+    close(OUTFH);
+}
+
+sub org_tree_proximity {
+    # calculate the proximity of organizations in the organization tree
+
+    my $session = OpenILS::Utils::Cronscript->new({nolockfile => 1})->session('open-ils.storage');
+    my $result = $session->request("open-ils.storage.actor.org_unit.refresh_proximity");
+
+    if ($result) {
+        print "Successfully updated the organization proximity\n";
+    } else {
+        print "Failed to update the organization proximity\n";
+    }
+    $session->disconnect();
+}
+
+sub get_locales {
+    # Get our list of locales
+    my $session = OpenILS::Utils::Cronscript->new({nolockfile => 1})->session("open-ils.cstore");
+    my $locales = $session->request(
+        "open-ils.cstore.direct.config.i18n_locale.search.atomic",
+        {"code" => {"!=" => undef}},
+        {"order_by" => {"i18n_l" => "name"}}
+    )->gather();
+    $session->disconnect();
+
+    return $locales;
+}
+
+1;

-----------------------------------------------------------------------

Summary of changes:
 Open-ILS/src/Makefile.am                           |   12 +-
 Open-ILS/src/extras/autogen.sh                     |   93 +++---
 Open-ILS/src/extras/cache-generator.sh             |   19 -
 Open-ILS/src/extras/facet_types_js.pl              |   97 ------
 Open-ILS/src/extras/fieldmapper.pl                 |   67 ----
 Open-ILS/src/extras/locale_html_options.pl         |   38 --
 Open-ILS/src/extras/org_lasso_js.pl                |   41 ---
 Open-ILS/src/extras/org_tree_html_options.pl       |   64 ----
 Open-ILS/src/extras/org_tree_js.pl                 |   99 ------
 Open-ILS/src/extras/org_tree_proximity.pl          |   39 ---
 Open-ILS/src/perlmods/MANIFEST                     |    1 +
 .../src/perlmods/lib/OpenILS/Utils/Configure.pm    |  358 ++++++++++++++++++++
 Open-ILS/src/perlmods/t/14-OpenILS-Utils.t         |    3 +-
 13 files changed, 414 insertions(+), 517 deletions(-)
 delete mode 100644 Open-ILS/src/extras/cache-generator.sh
 delete mode 100755 Open-ILS/src/extras/facet_types_js.pl
 delete mode 100755 Open-ILS/src/extras/fieldmapper.pl
 delete mode 100755 Open-ILS/src/extras/locale_html_options.pl
 delete mode 100755 Open-ILS/src/extras/org_lasso_js.pl
 delete mode 100755 Open-ILS/src/extras/org_tree_html_options.pl
 delete mode 100755 Open-ILS/src/extras/org_tree_js.pl
 delete mode 100755 Open-ILS/src/extras/org_tree_proximity.pl
 create mode 100644 Open-ILS/src/perlmods/lib/OpenILS/Utils/Configure.pm


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list