got the lib settings editor working and added to the admin menu
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 30 Jul 2006 19:42:35 +0000 (19:42 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 30 Jul 2006 19:42:35 +0000 (19:42 +0000)
fixed some server code param formatting

git-svn-id: svn://svn.open-ils.org/ILS/trunk@5175 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Actor.pm
Open-ILS/web/opac/common/js/opac_utils.js
Open-ILS/xul/staff_client/server/admin/index.xhtml
Open-ILS/xul/staff_client/server/admin/org_settings.js
Open-ILS/xul/staff_client/server/admin/org_settings.xhtml

index b3394c0..7098442 100644 (file)
@@ -66,10 +66,12 @@ sub set_user_settings {
 
        $logger->activity("User " . $staff->id . " updating user $uid settings with: " . Dumper(\@params));
 
-       return $apputils->simplereq(
-               'open-ils.storage',
-               'open-ils.storage.direct.actor.user_setting.batch.merge', @params );
-               
+       my $ses = $U->start_db_session();
+       my $stat = $ses->request(
+               'open-ils.storage.direct.actor.user_setting.batch.merge', @params )->gather(1);
+       $U->commit_db_session($ses);
+
+       return $stat;
 }
 
 
@@ -83,20 +85,26 @@ sub set_ou_settings {
        
        my( $staff, $evt ) = $apputils->checkses( $user_session );
        return $evt if $evt;
-       $evt = $apputils->check_perms( $staff->id, $ouid, 'UPDATE_ORG_UNIT' );
+       $evt = $apputils->check_perms( $staff->id, $ouid, 'UPDATE_ORG_SETTING' );
        return $evt if $evt;
 
+       my @params;
+       for my $set (keys %$settings) {
 
-       my @params = 
-               map { [{ org_unit => $ouid, name => $_}, {value => $$settings{$_}}] } keys %$settings;
+               my $json = JSON->perl2JSON($$settings{$set});
+               $logger->activity("updating org_unit.setting: $ouid : $set : $json");
 
-       $_->[1]->{value} = JSON->perl2JSON($_->[1]->{value}) for @params;
+               push( @params, 
+                       { org_unit => $ouid, name => $set }, 
+                       { value => $json } );
+       }
 
-       $logger->activity("Updating org unit [$ouid] settings with: " . Dumper(\@params));
+       my $ses = $U->start_db_session();
+       my $stat = $ses->request(
+               'open-ils.storage.direct.actor.org_unit_setting.merge', @params )->gather(1);
+       $U->commit_db_session($ses);
 
-       return $apputils->simplereq(
-               'open-ils.storage',
-               'open-ils.storage.direct.actor.org_unit_setting.merge', @params );
+       return $stat;
 }
 
 
index f1fbcfa..d378105 100644 (file)
@@ -815,16 +815,13 @@ function checkILSEvent(obj) {
        return null;
 }
 
-/*
-function alertILSEvent(code, msg) {
-   if(!msg) msg = "";
-       alert( msg + '\n' + $('ilsevent.' + code).innerHTML );
-}
-*/
 
 function alertILSEvent(evt, msg) {
    if(!msg) msg = "";
-       alert(evt.textcode + '\n' + evt.desc );
+       if(msg)
+               alert(msg +'\n' + evt.textcode + '\n' + evt.desc );
+       else 
+               alert(evt.textcode + '\n' + evt.desc );
 }
 
 
index 98bf08b..70e1c4d 100644 (file)
                                Local System Administration
                        </div>
                        <img src='../skin/media/images/tools.png'/>
-                       <div style='padding: 5px;'>
+                       <div style='padding: 8px;'>
                                <a href='javascript:_l("copy_locations.xhtml");'>Copy Locations Editor</a>
                        </div>
-                       <div style='padding: 5px;'>
+                       <div style='padding: 8px;'>
                                <a href='javascript:_l("non_cat_types.xhtml");'>Non Cataloged Types Editor</a>
                        </div>
-                       <div style='padding: 5px;'>
+                       <div style='padding: 8px;'>
                                <a href='javascript:_l("stat_cat_editor.xhtml");'>Statistical Categories Editor</a>
                        </div>
-                       <div style='padding: 5px;'>
+                       <div style='padding: 8px;'>
                                <a href='javascript:_l("closed_dates.xhtml");'>Closed Dates Editor</a>
                        </div>
+                       <div style='padding: 8px;'>
+                               <a href='javascript:_l("org_settings.xhtml");'>Library Settings Editor</a>
+                       </div>
                </center>
        </body>
 </html>
index bd12425..5b79291 100644 (file)
@@ -112,9 +112,26 @@ function osUpdate( setting, allOrgs ) {
        var org = osCurrentOrg();
 
        if(allOrgs) {
+               if(!confirmId('os_confirm_all')) return;
+               var sel = $('os_orgs');
+               var stop = false;
+               iterate( sel.options, 
+                       function(item) {
+                               if(stop) return;
+                               var o_unit = findOrgUnit(item.value);
+                               var type = findOrgType(o_unit.ou_type()) ;
+                               if( type.can_have_users() ) { 
+                                       if(!osUpdateOrg(setting, val, o_unit.id()))
+                                               stop = true;
+                               }
+                       }
+               );
+               if(!stop) alertId('os_success');
 
        } else {
-               osUpdateOrg(setting, val, org);
+
+               if(osUpdateOrg(setting, val, org)) 
+                       alertId('os_success');
        }
 
        osDrawRange();
@@ -124,13 +141,12 @@ function osUpdateOrg( setting, value, org ) {
        var s = {};
        s[setting] = value;
        var req = new Request(ORG_SETTING_UPDATE, SESSION, org, s);
+       req.request.alertEvent = false;
        req.send(true);
        var resp = req.result();
 
-       alert(js2JSON(resp));
-
        if( checkILSEvent(resp) ) {
-               alertILSEvent(resp);
+               alertILSEvent(resp, "Error updating " + findOrgUnit(org).name() );
                return false;
        }
 
index 6ee9427..f8ca9be 100644 (file)
                                </div>
                        </div>
                </center>
+               <span id='os_success' class='hide_me'>
+                       Update succeeded.
+               </span>
+               <span id='os_confirm_all' class='hide_me'>
+                       This will update the setting for all of the locations listed in the dropdown menu.
+                       Are you sure you wish to continue?
+               </span>
        </body>
 </html>