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" .
+ "" .
+ "
" . " | " . $cgi->scrolling_list( @@ -165,7 +177,7 @@ " | " . " |
" . - $cgi->submit(-name => 'dialog', -value => 'Copy') . + $cgi->submit(-name => 'dialog', -value => 'Copy_Temp') . " | " . "
" . " | " . $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" . " |