From: Nick J. <nje...@us...> - 2002-02-05 06:17:22
|
Update of /cvsroot/sandweb/sandweb/bin In directory usw-pr-cvs1:/tmp/cvs-serv11983 Modified Files: sandweb.cgi Log Message: * heavily modified the load_*_settings whole dealy. Revamping whole data management process. Not quite working state and/or untested really. Index: sandweb.cgi =================================================================== RCS file: /cvsroot/sandweb/sandweb/bin/sandweb.cgi,v retrieving revision 1.150 retrieving revision 1.151 diff -U2 -r1.150 -r1.151 --- sandweb.cgi 2002/02/03 03:54:52 1.150 +++ sandweb.cgi 2002/02/05 06:17:19 1.151 @@ -55,4 +55,6 @@ # my $prefs_config = 'prefs.cfg'; +my $repository_config = 'repository.cfg'; +my $module_config = 'module.cfg'; ############################################################################### @@ -98,6 +100,14 @@ } # has valid auth cookie + my $repository_selected = CGI::param('repository_selected'); + my $repo_name = CGI::param('repo_name'); + my $repo_server = CGI::param('repo_server'); + my $repo_username = CGI::param('repo_username'); + my $repo_type = CGI::param('repo_type'); + my $repo_connection = CGI::param('repo_connection'); + my $repo_root = CGI::param('repo_root'); + my $new_repository = CGI::param('new_repository'); + my $submit = CGI::param('Submit'); - ####################################################### # Process Action parameter to specified menu @@ -110,5 +120,5 @@ else { # User is logged in; load prefs - load_prefs(1); + load_settings(1); $log->debug("loading prefs"); @@ -219,25 +229,29 @@ } elsif ( $action eq 'repository_menu' ) { - my $rs = CGI::param('repository_selected'); - my $rn = CGI::param('repo_name'); - my $s = CGI::param('server'); - my $un = CGI::param('usr_name'); - my $rt = CGI::param('repo_type'); - my $c = CGI::param('connection'); - my $r = CGI::param('root'); - my $nr = CGI::param('new_repository'); - my $s2 = CGI::param('Submit'); - repository_menu( - ck_auth => $ck_auth, - repository_selected => $rs, - repo_name => $rn, - server => $s, - usr_name => $un, - repo_type => $rt, - connection => $c, - root => $r, - new_repository => $nr, - submit => $s2, - ); + if ($submit) { + repository_commit( + ck_auth => $ck_auth, + repository_selected => $repository_selected, + repo_name => $repo_name, + repo_server => $repo_server, + repo_username => $repo_username, + repo_type => $repo_type, + repo_connection => $repo_connection, + repo_root => $repo_root, + new_repository => $new_repository, + ); + } else { + repository_menu( + ck_auth => $ck_auth, + repository_selected => $repository_selected, + repo_name => $repo_name, + repo_server => $repo_server, + repo_username => $repo_username, + repo_type => $repo_type, + repo_connection => $repo_connection, + repo_root => $repo_root, + new_repository => $new_repository, + ); + } } else { @@ -265,7 +279,10 @@ ############################################################################### +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# ############################################################################### ## Menus -## +############################################################################### +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# +############################################################################### ############################################################################### @@ -358,5 +375,5 @@ exit 0; } - load_prefs(1); + load_settings(1); my $content = Dumper($config, $auth, $ui, $log, $userprefs); @@ -398,5 +415,5 @@ exit 0; } - load_prefs(1); + load_settings(1); my @modules = sort keys %{$module_settings}; @@ -455,5 +472,5 @@ exit 0; } - if (! load_prefs()) { + if (! load_settings()) { # no existing user config, forward to prefs menu preferences_menu( ck_auth => $ck_auth ); @@ -552,5 +569,5 @@ exit 0; } - if (! load_prefs()) { + if (! load_settings()) { # no existing user config, forward to prefs menu preferences_menu( ck_auth => $ck_auth ); @@ -880,5 +897,5 @@ exit 0; } - if (! load_prefs()) { + if (! load_settings()) { # no existing user config, forward to prefs menu preferences_menu( ck_auth => $ck_auth ); @@ -1035,5 +1052,5 @@ } - load_prefs(1); # load prefs and do not log error msg + load_settings(1); # load prefs and do not log error msg my $username = $auth->get_userinfo('username'); my $full_name = $userprefs->{'personal'}->{'full_name'}; @@ -1081,9 +1098,9 @@ my $repository_selected = $args{'repository_selected'}; my $repo_name = $args{'repo_name'}; - my $server = $args{'server'}; - my $usr_name = $args{'usr_name'}; + my $repo_server = $args{'repo_server'}; + my $repo_username = $args{'repo_username'}; my $repo_type = $args{'repo_type'}; - my $connection = $args{'connection'}; - my $root = $args{'root'}; + my $repo_connection = $args{'repo_connection'}; + my $repo_root = $args{'repo_root'}; my $new_repository = $args{'new_repository'} ? 1 : 0; my $submit = $args{'submit'} ? 1 : 0; @@ -1091,5 +1108,4 @@ $log->debug("entering repository_menu\n"); - use Data::Dumper; $log->debug("<pre>" . Dumper(\%args) . "</pre>"); # check cookie @@ -1123,22 +1139,21 @@ } - if ((($repository_selected eq $repo_name) && ($submit)) || (($new_repository) && ($submit))) { - # modified existing repository and commited or - # added new repository and commited - # commit data to file - - } elsif (($repository_selected eq $new_string) && (!$new_repository)) { + if (($repository_selected eq $new_string) && (!$new_repository)) { # repository selected was 'add new repository' # new repository display } elsif ($repository_selected) { # display existing repository - $server = $repository_settings->{$repository_selected}->{'server'}; - $usr_name = $repository_settings->{$repository_selected}->{'usr_name'}; - $connection = $repository_settings->{$repository_selected}->{'connection'}; - $repo_type = $repository_settings->{$repository_selected}->{'repo_type'}; - $root = $repository_settings->{$repository_selected}->{'root'}; + $repo_server = + $repository_settings->{$repository_selected}->{'repo_server'}; + $repo_username = + $repository_settings->{$repository_selected}->{'repo_username'}; + $repo_connection = + $repository_settings->{$repository_selected}->{'repo_connection'}; + $repo_type = + $repository_settings->{$repository_selected}->{'repo_type'}; + $repo_root = + $repository_settings->{$repository_selected}->{'repo_root'}; } - # selected repository data my $vcsroot; @@ -1155,5 +1170,5 @@ # loop data - my @loop_connection = (); + my @loop_repo_connection = (); my @loop_repository_select = (); my @loop_repo_type = (); @@ -1182,11 +1197,11 @@ foreach my $type (@connections) { my %row_data; - if ($type eq $connection) { - $row_data{CONNECTION} = "<option selected>$type</option>"; + if ($type eq $repo_connection) { + $row_data{REPO_CONNECTION} = "<option selected>$type</option>"; } else { - $row_data{CONNECTION} = "<option>$type</option>"; + $row_data{REPO_CONNECTION} = "<option>$type</option>"; } - push (@loop_connection, \%row_data); + push (@loop_repo_connection, \%row_data); } @@ -1206,8 +1221,12 @@ MENU => 'repository', PROGNAME => $progname, - LOOP_CONNECTION => \@loop_connection, + LOOP_REPO_CONNECTION => \@loop_repo_connection, LOOP_REPO_TYPE => \@loop_repo_type, LOOP_REPOSITORY_SELECT => \@loop_repository_select, REPOSITORY_SELECTED => $repository_selected, + REPO_ROOT => $repo_root, + REPO_NAME => $repo_name, + REPO_SERVER => $repo_server, + REPO_USERNAME => $repo_username, ); @@ -1241,5 +1260,5 @@ } - load_prefs(1); # load prefs and do not log error msg + load_settings(1); # load prefs and do not log error msg my $username = $auth->get_userinfo('username'); my $name = $userprefs->{'repository'}->{'name'}; @@ -1316,7 +1335,10 @@ ############################################################################### +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# ############################################################################### ## Commit Menu Data -## +############################################################################### +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# +############################################################################### ############################################################################### @@ -1336,5 +1358,5 @@ } - load_prefs(1); # load prefs and do not log error msg + load_settings(1); # load prefs and do not log error msg my @personal_params = ( 'full_name', @@ -1342,13 +1364,4 @@ ); - my @repository_params = ( - 'name', - 'server', - 'username', - 'repo_type', - 'connection', - 'root', - ); - foreach my $param (@personal_params) { if ( CGI::param("$param") ) { @@ -1357,10 +1370,4 @@ } - foreach my $param (@repository_params) { - if ( CGI::param("$param") ) { - $userprefs->{'repository'}->{"$param"} = param("$param"); - } - } - my $username = $auth->get_userinfo('username'); # write config data into the .$prefs_config file in the users directory @@ -1382,11 +1389,76 @@ } +sub repository_commit { + my %args = @_; + my $ck_auth = $args{'ck_auth'}; + my $repository_selected = $args{'repository_selected'}; + my $repo_name = $args{'repo_name'}; + my $repo_server = $args{'server'}; + my $repo_username = $args{'usr_name'}; + my $repo_type = $args{'repo_type'}; + my $repo_connection = $args{'connection'}; + my $repo_root = $args{'root'}; + my $new_repository = $args{'new_repository'} ? 1 : 0; + unless ($ck_auth) { + &login_menu(); + exit 0; + } + my $new_string = 'Add a new repository'; + + load_settings(1); # load prefs and do not log error msg + $log->debug("<pre>" . Dumper(\%args) . "</pre>"); + + if (! $repo_name) { + # cannot commit without repository name + $log->error("cannot commit without repository name!\n"); + set_error("cannot commit without repository name!\n"); + repository_menu( ck_auth => $ck_auth ); + exit(0); + } + # commit data to file + $repository_settings->{$repo_name}->{'name'} = $repo_name; + $repository_settings->{$repo_name}->{'server'} = $repo_server; + $repository_settings->{$repo_name}->{'username'} = $repo_username; + $repository_settings->{$repo_name}->{'connection'} = $repo_connection; + $repository_settings->{$repo_name}->{'type'} = $repo_type; + $repository_settings->{$repo_name}->{'root'} = $repo_root; + + my $username = $auth->get_userinfo('username'); + # write config data into the .$prefs_config file in the users directory + $log->debug('dump', $userprefs); + my ($return, $msg) = $userprefs->write_preferences_config( + 'config_dir' => $config->{'paths'}->{'users_dir'} . "/$username", + 'config_file' => ".$prefs_config", + ); + + + if (! $return) { + # uh oh, problem occured + $log->error("$msg"); + set_error("$msg"); + repository_menu( ck_auth => $ck_auth ); + } + # when finished go to repository menu. (this should be dynamic probably, + # so it returns to whichever menu they wanted to go to in the first + # place). + repository_menu( ck_auth => $ck_auth, repository_selected => $repo_name ); +} + ############################################################################### +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# ############################################################################### ## Functions -## +############################################################################### +#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# +############################################################################### +sub load_settings { + my $no_error = shift; + load_user_config($no_error); + load_repository_config($no_error); + load_module_config($no_error); +} ############################################################################### -# load prefs +# load user settings # # check user prefs config file, if it doesn't exist, @@ -1397,5 +1469,5 @@ # ############################################################################### -sub load_prefs { +sub load_user_config { my $no_error = shift; my $username = $auth->get_userinfo('username'); @@ -1411,5 +1483,5 @@ # if $no_error is true, ignore this error msgs if (! $no_error) { - set_error("No config file cound for '$username', enter preferences."); + set_error("No config file found for '$username', enter preferences."); } return 0; @@ -1423,29 +1495,60 @@ ); + return 1; +} + +sub load_repository_config { + my $no_error = shift; + my $username = $auth->get_userinfo('username'); + if ( -f "$config->{'paths'}->{'users_dir'}/$username/.$repository_config") { + # load users preferences from users dir + $repository_settings = SandWeb::Config::->new( + 'config_dir' => $config->{'paths'}->{'users_dir'} . "/$username", + 'config_file' => ".$repository_config", + 'log_obj' => $log, + ); + } + $log->debug("verifying repository data structure"); # make sure data structure containing repositories is consistent - if ( ($userprefs->{'repository'}->{'repo_type'}) && - (ref(\$userprefs->{'repository'}->{'repo_type'}) eq 'SCALAR')) { + if ( ($repository_settings->{'repo_type'}) && + (ref(\$repository_settings->{'repo_type'}) eq 'SCALAR')) { - my %temp = %{$userprefs->{'repository'}}; - %{$userprefs->{'repository'}} = (); - %{$userprefs->{'repository'}->{$temp{'name'}}} = %temp; + my %temp = %{$repository_settings}; + %{$repository_settings} = (); + %{$repository_settings}->{$temp{'name'}} = %temp; } - $repository_settings = $userprefs->{'repository'}; + $log->debug("<pre>" . Dumper($repository_settings) . "</pre>"); + + return 1; +} + +sub load_module_config { + my $no_error = shift; + my $username = $auth->get_userinfo('username'); + if (-f "$config->{'paths'}->{'users_dir'}/$username/.$module_config") { + # load users preferences from users dir + $module_settings = SandWeb::Config::->new( + 'config_dir' => $config->{'paths'}->{'users_dir'} . "/$username", + 'config_file' => ".$module_config", + 'log_obj' => $log, + ); + } + $log->debug("verifying modules data structure"); # make sure data structure containing repositories is consistent - if ( ($userprefs->{'module'}->{'name'}) && - (ref(\$userprefs->{'module'}->{'name'}) eq 'SCALAR')) { + if ( ($module_settings->{'name'}) && + (ref(\$module_settings->{'name'}) eq 'SCALAR')) { - my %temp = %{$userprefs->{'module'}}; - %{$userprefs->{'module'}} = (); - %{$userprefs->{'module'}->{$temp{'name'}}} = %temp; + my %temp = %{$module_settings}; + %{$module_settings} = (); + %{$module_settings}->{$temp{'name'}} = %temp; } - $module_settings = $userprefs->{'module'}; - + $log->debug("<pre>" . Dumper($module_settings) . "</pre>"); return 1; } + ############################################################################### # login @@ -1476,5 +1579,5 @@ login_menu(); } - if (! load_prefs()) { + if (! load_settings()) { # no existing user config, forward to prefs menu preferences_menu( ck_auth => $ck_auth ); |