Index: ossp-pkg/tabea/tabea.cgi RCS File: /v/ossp/cvs/ossp-pkg/tabea/tabea.cgi,v rcsdiff -q -kk '-r1.14' '-r1.15' -u '/v/ossp/cvs/ossp-pkg/tabea/tabea.cgi,v' 2>/dev/null --- tabea.cgi 2002/05/13 16:28:28 1.14 +++ tabea.cgi 2002/05/14 14:06:21 1.15 @@ -140,18 +140,30 @@ &validpassword($username, $password, $cfghash{'BaseDir'}.$cfghash{'PasswdFile'}) || print STDOUT $cgi->redirect(-uri => $cgi->url(-full => 1), -type => "text/html"); - my $templatesfiles = &readdir($cfghash{'BaseDir'} . $cfghash{'ConfigDir'} ."/".$cfghash{'TabeaUser'}); - my $configsfiles = &readdir($cfghash{'BaseDir'} . $cfghash{'ConfigDir'} ."/".$username); + +# my $templatesfiles = &readdir($cfghash{'BaseDir'} . $cfghash{'ConfigDir'} ."/".$cfghash{'TabeaUser'}); +# my $configsfiles = &readdir($cfghash{'BaseDir'} . $cfghash{'ConfigDir'} ."/".$username); + my $templatesfiles = &get_name_files($cfghash{'BaseDir'} . $cfghash{'ConfigDir'}, $username, 4); + my $configsfiles = &get_name_files($cfghash{'BaseDir'} . $cfghash{'ConfigDir'}, $username, 6); + + $configsfiles .= &get_own_files($cfghash{'BaseDir'} . $cfghash{'ConfigDir'}, $username); + + $templatesfiles = &strsort($templatesfiles); + $configsfiles = &strsort($configsfiles); + my @templatesarray = split(/ /,$templatesfiles); my @configsarray = split(/ /,$configsfiles); - + + # $page .= $cgi->startform( -method => "POST", -action => $cgi->url(-full => 1)) . $cgi->hidden(-name => 'form', -default => ['']) . # Begin with templates part + "" . "
Active User: $username

\n" . -# "Templates:

\n" . + "
" . + "" . " " . " " . " " . " " . @@ -181,7 +193,8 @@ "
Templates
" . " " . $cgi->scrolling_list( @@ -165,7 +177,7 @@ " " . "
" . - $cgi->submit(-name => 'dialog', -value => 'Copy') . + $cgi->submit(-name => 'dialog', -value => 'Copy_Temp') . "
" . # Now the configuration part - $page .= "" . + "

" . + "
Configuration
" . "" . " " . "
Configuration
" . " " . $cgi->scrolling_list( @@ -198,7 +211,7 @@ "
" . - $cgi->submit(-name => 'dialog', -value => 'Copy') . + $cgi->submit(-name => 'dialog', -value => 'Copy_Conf') . "
" . @@ -233,7 +246,8 @@ elsif ($dialog eq 'View') { # enter View form $page .= &view($cgi->param('templatelist')); -} else { +} +else { die "invalid dialog \"$dialog\""; } @@ -251,19 +265,68 @@ ######################################################################################## +sub get_name_files { +######################################################################################## + my ($dirname, $user, $rights) = @_; + my $filel = ''; + my @filelarray; + my $filelist = ''; + my $subdir = ''; + my $filemode = ''; + my $entry = ''; + + my $dirlist = &readsubdir($dirname . "/" ); + my @dirarray = split (/ /, $dirlist); + + DIR: foreach $subdir (@dirarray) { + next DIR if $subdir eq $user; + $filel = &readdir($dirname . "/" . $subdir . "/") ; + @filelarray = split (/ /, $filel); + FILE: foreach $entry (@filelarray) { + my $path = $dirname . "/" . $subdir . "/" . $entry; + next FILE if (((stat($dirname . "/" . $subdir . "/" . $entry))[2]) & 07) != $rights; + $filelist .= $subdir . "/" . $entry . " "; + } + } + + + return $filelist; +} +######################################################################################## + +######################################################################################## +sub get_own_files { +######################################################################################## + my ($dirname, $user) = @_; + my $filelist = ''; + my $entry = ''; + + my $flist = &readdir($dirname . "/" . $user . "/"); + my @flistarray = split (/ /,$flist); + + foreach $entry (@flistarray) { + $filelist .= $user . "/" . $entry . " "; + } + + return $filelist; +} +######################################################################################## + + +######################################################################################## sub edit { ######################################################################################## my ($file) = @_; my $text; # enter Edit form if($file) { - my $filename = $cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $username . "/" . $file; - &editconfig($filename, 'w', $username); + my $filename = $cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $file; + &editconfig($filename, 'w', $username); } else { - $text = $cgi->startform( -method => "POST", -action => $cgi->url(-full => 1)) . - "Missing filename

\n" . - $cgi->submit(-name => 'dialog', -value => 'Back') . - $cgi->endform; + $text = $cgi->startform( -method => "POST", -action => $cgi->url(-full => 1)) . + "Missing filename

\n" . + $cgi->submit(-name => 'dialog', -value => 'Back') . + $cgi->endform; } return $text; } @@ -275,22 +338,21 @@ ######################################################################################## my ($file) = @_; my $text; - # enter View form + if ($file) { - my $filename = $cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $cfghash{'TabeaUser'} . "/" . $cgi->param('templatelist'); - &editconfig($filename, 'r', $username); + my $filename = $cfghash{'BaseDir'} . $cfghash{'ConfigDir'} . "/" . $cgi->param('templatelist'); + &editconfig($filename, 'r', $username); } else { - $text .= $cgi->startform( -method => "POST", -action => $cgi->url(-full => 1)) . - "Missing filename

\n" . - $cgi->submit(-name => 'dialog', -value => 'Back') . - $cgi->endform; + $text .= $cgi->startform( -method => "POST", -action => $cgi->url(-full => 1)) . + "Missing filename

\n" . + $cgi->submit(-name => 'dialog', -value => 'Back') . + $cgi->endform; } return $text; } ######################################################################################## - ######################################################################################## sub read_config { ######################################################################################## @@ -360,12 +422,39 @@ ######################################################################################## +sub readsubdir { +######################################################################################## + my ( $dir ) = @_; + my $filestring = ""; + my $direntry = ""; + + + + opendir(DIR, "$dir"); # Open dir for scanning + + foreach $direntry (readdir(DIR)) { + next if $direntry eq "."; + next if $direntry eq ".."; + if (-d "$dir/$direntry") { + $filestring .= $direntry. " "; + } + } + closedir(DIR); + return $filestring; +} + + + + +######################################################################################## sub readdir { ######################################################################################## my ( $dir ) = @_; my $filestring = ""; my $direntry = ""; + + opendir(DIR, "$dir"); # Open dir for scanning foreach $direntry (readdir(DIR)) { @@ -382,6 +471,24 @@ ######################################################################################## +sub strsort { +######################################################################################## + my ( $sortstr ) = @_; + + my @sortarray = split (/ /, $sortstr); + + @sortarray = reverse sort {$b cmp $a} @sortarray; + $sortstr = join(" ", @sortarray); + + return $sortstr; +} +######################################################################################## + + + + + +######################################################################################## sub editconfig { ######################################################################################## my ($file, $mode, $user) = @_; @@ -413,9 +520,9 @@ "" . $titletext . ":

\n" . "
" . - "Username: $username

\n" . + "" . "File: $file

\n" . - "Mode: $mode

\n" . + "
" . $cgi->textarea($textahash). "

\n" . "" .