From 81c4d6250b8b748ec44b572574d5b1239e72ced1 Mon Sep 17 00:00:00 2001 From: miker Date: Tue, 18 Jul 2006 00:27:01 +0000 Subject: [PATCH] attempting to remove a big leak git-svn-id: svn://svn.open-ils.org/ILS/trunk@5053 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/src/javascript/backend/circ/circ_lib.js | 22 +++++++++++++++++++++- .../OpenILS/Application/Circ/ScriptBuilder.pm | 19 +++++++++++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/Open-ILS/src/javascript/backend/circ/circ_lib.js b/Open-ILS/src/javascript/backend/circ/circ_lib.js index 72ad052ae3..3501f813ff 100644 --- a/Open-ILS/src/javascript/backend/circ/circ_lib.js +++ b/Open-ILS/src/javascript/backend/circ/circ_lib.js @@ -48,7 +48,8 @@ var groupList = {}; var groupIDList = {}; flattenGroupTree(groupTree); - +/* copy the org list into some other useful data structures */ +var orgList = environment.orgList; @@ -157,8 +158,27 @@ function getMARCItemType() { return (marcXMLDoc) ? extractFixedField(marcXMLDoc, 'Type') : ""; } +function __is_org_descendant( parent, child ) { + while( child = grep( function(x){ x.id() == child.parent_ou() }, orgList ) ) { + if (child[0].id() == parent.id()) return true; + } + return false; +} function isOrgDescendent( parentName, childId ) { + var parent = grep( function(x){ x.shortname() == parentName }, orgList ); + var child = grep( function(x){ x.id() == childId }, orgList ); + + if (parent) parent = parent[0]; + if (child) child = child[0]; + + if (!child || !parent) return false; + if (child.id() == parent.id()) return true; + + return __is_org_descendant( parent, child ); +} + +function old_isOrgDescendent( parentName, childId ) { var key = scratchKey(); __OILS_FUNC_isOrgDescendent(scratchPad(key), parentName, childId); var val = getScratch(key); diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Circ/ScriptBuilder.pm b/Open-ILS/src/perlmods/OpenILS/Application/Circ/ScriptBuilder.pm index 30196573bc..28b0d9ed5d 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Circ/ScriptBuilder.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Circ/ScriptBuilder.pm @@ -85,9 +85,24 @@ sub build_runner { $runner->insert("$evt.$_", $ctx->{_direct}->{$_}) for keys %{$ctx->{_direct}}; - $ctx->{runner} = $runner; + if(!$ORG_TREE) { + $ORG_TREE = $editor->search_actor_org_unit( + [ + {"parent_ou" => undef }, + { + flesh => 2, + flesh_fields => { aou => ['children'] }, + order_by => { aou => 'name'} + } + ] + )->[0]; + flatten_org_tree($ORG_TREE); + } + #insert_org_methods( $editor, $ctx ); - insert_org_methods( $editor, $ctx ); + $runner->insert( "$evt.orgList", $ORG_TREE, 1 ); + + $ctx->{runner} = $runner; return $runner; } -- 2.11.0