From: Nick J. <nje...@us...> - 2002-02-13 09:18:29
|
Update of /cvsroot/sandweb/sandweb/bin In directory usw-pr-cvs1:/tmp/cvs-serv12577 Modified Files: sandweb.cgi Log Message: * hundred of debug and data validation loops later, the repository->module->sandbox chain is (initially) complete. No descriptions for modules (which I left out of the data struct) currently... Need to think of how they should be in the data struct. Index: sandweb.cgi =================================================================== RCS file: /cvsroot/sandweb/sandweb/bin/sandweb.cgi,v retrieving revision 1.171 retrieving revision 1.172 diff -U2 -r1.171 -r1.172 --- sandweb.cgi 13 Feb 2002 07:52:05 -0000 1.171 +++ sandweb.cgi 13 Feb 2002 09:18:26 -0000 1.172 @@ -358,15 +358,23 @@ load_config(1); - my @modules = sort keys %{$user->{'module'}}; - if ($#modules < 0) { - $no_modules = 1; - } else { - # build repository list for template - foreach my $module (@modules) { - my %entry; - $entry{'MODULE_NAME'} = $module; - $entry{'MODULE_DESC'} = $user->{'module'}->{$module}->{'description'} || ''; - $entry{'REPOSITORY'} = $user->{'module'}->{$module}->{'repository'} || ''; - push @module_loop, \%entry; + my @repo_list = sort keys %{$user->{'repo'}}; + my @module_list = (); + + foreach my $repo_name (@repo_list) { + $log->debug("module_list ref: " . ref $user->{'repo'}->{$repo_name}->{'module_list'}); + my @module_list = + @{$user->{'repo'}->{$repo_name}->{'module_list'}}; + + if ($#module_list < 0) { + $no_modules = 1; + } else { + # build repository list for template + foreach my $module_name (@module_list) { + my %entry; + $entry{'MODULE_NAME'} = $module_name; + #$entry{'MODULE_DESC'} = $user->{'repo'}->{$repo)->{'module'}->{$module}->{'description'} || ''; + $entry{'REPOSITORY'} = $repo_name; + push @module_loop, \%entry; + } } } @@ -1269,4 +1277,15 @@ } + my $exist = 0; + foreach my $module_entry (@module_list) { + if ($module_name eq $module_entry) { + $exist = 1; + } + } + if (!$exist) { + push @module_list, $module_name; + push @{$user->{'repo'}->{$repo_name}->{'module_list'}}, $module_name; + } + my $username = $auth->get_userinfo('username'); my $template_dir = $config->{'paths'}->{'template_dir'}; @@ -1300,4 +1319,9 @@ $log->debug('dump', \%return); + my $return = write_config(); + if (! $return) { + # uh oh, problem occured + checkout_menu( ck_auth => $ck_auth ); + } my $content = $ui->get_menu( @@ -1403,18 +1427,18 @@ $user->{'repo'}->{$repo_name}->{'type'} = $repo_type; $user->{'repo'}->{$repo_name}->{'root'} = $repo_root; + $user->{'repo'}->{$repo_name}->{'module_list'} = []; - my $username = $auth->get_userinfo('username'); - # write config data into the .$user_cfg file in the users directory - $log->debug("pre-write\n"); - $log->debug('dump', $user->{'repo'}); - my ($return, $msg) = $user->write_preferences_config( - 'config_dir' => $config->{'paths'}->{'users_dir'} . "/$username", - 'config_file' => ".$user_cfg", - ); +# my $username = $auth->get_userinfo('username'); +# # write config data into the .$user_cfg file in the users directory +# $log->debug("pre-write\n"); +# $log->debug('dump', $user); +# my ($return, $msg) = $user->write_preferences_config( +# 'config_dir' => $config->{'paths'}->{'users_dir'} . "/$username", +# 'config_file' => ".$user_cfg", +# ); + my $return = write_config(); if (! $return) { # uh oh, problem occured - $log->error("$msg"); - set_error("$msg"); repository_menu( ck_auth => $ck_auth ); } @@ -1456,5 +1480,4 @@ $user->{'repo'} = {}; - $user->{'module'} = {}; # if $no_error is true, ignore this error msgs @@ -1481,16 +1504,48 @@ %{$user->{'repo'}->{$temp{'name'}}} = %temp; } + $log->debug('dump', $user->{'repo'}); - $log->debug("verifying modules data structure"); - # make sure data structure containing repositories is consistent - if ( ($user->{'module'}->{'name'}) && - (ref(\$user->{'module'}->{'name'}) eq 'SCALAR')) { + foreach my $repo_name (sort keys %{$user->{'repo'}}) { + $log->debug("checking repo: $repo_name " . ref($user->{'repo'}->{$repo_name}->{'module_list'}) . "-"); + if (ref(\$user->{'repo'}->{$repo_name}->{'module_list'}) ne 'ARRAY') { + my $temp_module = $user->{'repo'}->{$repo_name}->{'module_list'}; + $log->debug("CREATING EMPTY ARRAY: $repo_name"); + $user->{'repo'}->{$repo_name}->{'module_list'} = []; + push @{$user->{'repo'}->{$repo_name}->{'module_list'}}, $temp_module; + + } + $log->debug("checking repo: $repo_name " . ref($user->{'repo'}->{$repo_name}->{'module_list'}) . "-"); + } + + $log->debug('dump', $user->{'repo'}); - my %temp = %{$user->{'module'}}; - %{$user->{'module'}} = (); - %{$user->{'module'}->{$temp{'name'}}} = %temp; + return 1; +} + + +############################################################################### +# write config data +# +# writes user data to file. +# +############################################################################### +sub write_config { + $log->debug("write_config()"); + my $username = $auth->get_userinfo('username'); + # write config data into the .$user_cfg file in the users directory + $log->debug('dump', $user); + my ($return, $msg) = $user->write_preferences_config( + 'config_dir' => $config->{'paths'}->{'users_dir'} . "/$username", + 'config_file' => ".$user_cfg", + ); + + if (! $return) { + # uh oh, problem occured + $log->debug("ERROR: $msg"); + $log->error("$msg"); + set_error("$msg"); + return 0; } - return 1; } @@ -1572,4 +1627,6 @@ return 1; } + + ############################################################################### |