');
if (exists $locked_files{$current_path.$filename}){
- $r->print('Locked | ');
+ $r->print('Locked | ');
} else {
- $r->print('Delete
- Rename
+ $r->print(' |
+ Rename |
+ Meta
| ');
}
$r->print(' | ');
@@ -148,9 +149,6 @@ sub display_file_select {
my $iconpath= $r->dir_config('lonIconsURL') . "/";
my $display_out;
my $checked_files = &Apache::lonnet::files_in_path($ENV{'user.name'}, $ENV{'form.currentpath'});
- foreach my $key (keys %$checked_files) {
- &Apache::lonnet::logthis("a key is $key $$checked_files{$key} is the value");
- }
if ($is_empty && ($current_path ne '/')) {
$display_out = '');
}
-
+sub prettyinput {
+ my ($type,$value,$fieldname,$formname,
+ $relatedsearchflag,$relatedsep,$relatedvalue,$size)=@_;
+ if (! defined($size)) {
+ $size = 80;
+ }
+ # Language
+ if ($type eq 'language') {
+ return &Apache::lonmeta::selectbox($fieldname,
+ $value,
+ \&Apache::loncommon::languagedescription,
+ (&Apache::loncommon::languageids)).
+ &relatedfield(0,$relatedsearchflag,$relatedsep);
+ }
+ # Copyright
+ if ($type eq 'copyright') {
+ return &Apache::lonmeta::selectbox($fieldname,
+ $value,
+ \&Apache::loncommon::copyrightdescription,
+ (&Apache::loncommon::copyrightids)).
+ &relatedfield(0,$relatedsearchflag,$relatedsep);
+ }
+ # Source Copyright
+ if ($type eq 'sourceavail') {
+ return &Apache::lonmeta::selectbox($fieldname,
+ $value,
+ \&Apache::loncommon::source_copyrightdescription,
+ (&Apache::loncommon::source_copyrightids)).
+ &relatedfield(0,$relatedsearchflag,$relatedsep);
+ }
+ # Gradelevels
+ if (($type eq 'lowestgradelevel') ||
+ ($type eq 'highestgradelevel')) {
+ return &Apache::loncommon::select_level_form($value,$fieldname).
+ &relatedfield(0,$relatedsearchflag,$relatedsep);
+ }
+ # Obsolete
+ if ($type eq 'obsolete') {
+ return ''.
+ &relatedfield(0,$relatedsearchflag,$relatedsep);
+ }
+ # Obsolete replacement file
+ if ($type eq 'obsoletereplacement') {
+ return '".&mt('Select').''.
+ &relatedfield(0,$relatedsearchflag,$relatedsep);
+ }
+ # Customdistribution file
+ if ($type eq 'customdistributionfile') {
+ return '".&mt('Select').''.
+ &relatedfield(0,$relatedsearchflag,$relatedsep);
+ }
+ # Source Customdistribution file
+ if ($type eq 'sourcerights') {
+ return '".&mt('Select').''.
+ &relatedfield(0,$relatedsearchflag,$relatedsep);
+ }
+ # Dates
+ if (($type eq 'creationdate') ||
+ ($type eq 'lastrevisiondate')) {
+ return
+ &Apache::lonhtmlcommon::date_setter($formname,$fieldname,$value).
+ &relatedfield(0,$relatedsearchflag,$relatedsep);
+ }
+ # No pretty input found
+ $value=~s/^\s+//gs;
+ $value=~s/\s+$//gs;
+ $value=~s/\s+/ /gs;
+ $value=~s/\"/\"\;/gs;
+ return
+ ''.
+ &relatedfield(1,$relatedsearchflag,$relatedsep,$fieldname,
+ $relatedvalue);
+}
+
+sub relatedfield {
+ my ($show,$relatedsearchflag,$relatedsep,$fieldname,$relatedvalue)=@_;
+ if (! $relatedsearchflag) {
+ return '';
+ }
+ if (! defined($relatedsep)) {
+ $relatedsep=' ';
+ }
+ if (! $show) {
+ return $relatedsep.' ';
+ }
+ return $relatedsep.'';
+}
+
+
+# The field names
+sub fieldnames {
+ return &Apache::lonlocal::texthash
+ (
+ 'title' => 'Title',
+ 'author' =>'Author(s)',
+ 'authorspace' => 'Author Space',
+ 'modifyinguser' => 'Last Modifying User',
+ 'subject' => 'Subject',
+ 'keywords' => 'Keyword(s)',
+ 'notes' => 'Notes',
+ 'abstract' => 'Abstract',
+ 'lowestgradelevel' => 'Lowest Grade Level',
+ 'highestgradelevel' => 'Highest Grade Level',
+ 'standards' => 'Standards',
+ 'mime' => 'MIME Type',
+ 'language' => 'Language',
+ 'creationdate' => 'Creation Date',
+ 'lastrevisiondate' => 'Last Revision Date',
+ 'owner' => 'Publisher/Owner',
+ 'copyright' => 'Copyright/Distribution',
+ 'customdistributionfile' => 'Custom Distribution File',
+ 'sourceavail' => 'Source Available',
+ 'sourcerights' => 'Source Custom Distribution File',
+ 'obsolete' => 'Obsolete',
+ 'obsoletereplacement' => 'Suggested Replacement for Obsolete File',
+ 'count' => 'Network-wide number of accesses (hits)',
+ 'course' => 'Network-wide number of courses using resource',
+ 'course_list' => 'Network-wide courses using resource',
+ 'sequsage' => 'Number of resources using or importing resource',
+ 'sequsage_list' => 'Resources using or importing resource',
+ 'goto' => 'Number of resources that follow this resource in maps',
+ 'goto_list' => 'Resources that follow this resource in maps',
+ 'comefrom' => 'Number of resources that lead up to this resource in maps',
+ 'comefrom_list' => 'Resources that lead up to this resource in maps',
+ 'clear' => 'Material presented in clear way',
+ 'depth' => 'Material covered with sufficient depth',
+ 'helpful' => 'Material is helpful',
+ 'correct' => 'Material appears to be correct',
+ 'technical' => 'Resource is technically correct',
+ 'avetries' => 'Average number of tries till solved',
+ 'stdno' => 'Total number of students who have worked on this problem',
+ 'difficulty' => 'Degree of difficulty',
+ 'disc' => 'Degree of discrimination',
+ 'dependencies' => 'Resources used by this resource',
+ );
+}
+
+sub edit_meta_data {
+ my ($r,$uri) = @_;
+ # Construction Space Call
+ # Header
+ my $disuri=$uri;
+ my $fn=&Apache::lonnet::filelocation('',$uri);
+ $disuri=~s/^\/\~/\/priv\//;
+ $disuri=~s/\.meta$//;
+ my $target=$uri;
+ $target=~s/^\/\~/\/res\/$ENV{'request.role.domain'}\//;
+ $target=~s/\.meta$//;
+ $r->print('');
+ my %lt=&fieldnames();
+ my $output;
+ foreach ('author','title','subject','keywords','abstract','notes',
+ 'copyright','customdistributionfile','language',
+ 'standards',
+ 'lowestgradelevel','highestgradelevel','sourceavail','sourcerights',
+ 'obsolete','obsoletereplacement') {
+ if (defined($ENV{'form.new_'.$_})) {
+ $Apache::lonpublisher::metadatafields{$_}=
+ $ENV{'form.new_'.$_};
+ }
+ if (! $Apache::lonpublisher::metadatafields{'copyright'}) {
+ $Apache::lonpublisher::metadatafields{'copyright'}=
+ 'default';
+ }
+ $output.=(''.$lt{$_}.': '.
+ &prettyinput($_,
+ $Apache::lonpublisher::metadatafields{$_},
+ 'new_'.$_,'defaultmeta').'
');
+ }
+ return $output;
+}
sub open_form {
my ($r)=@_;
my @files=&Apache::loncommon::get_env_multiple('form.selectfile');
@@ -249,7 +428,7 @@ sub display_file {
$display_file_text = ''.$path.$filename.'';
} elsif (ref($filename) eq "ARRAY") {
foreach (@$filename) {
- $display_file_text .= ''.$path.$_.'';
+ $display_file_text .= ''.$path.$_.'
';
}
} elsif (ref($filename) eq "SCALAR") {
$display_file_text = ''.$path.$filename.'';
@@ -270,13 +449,19 @@ sub delete {
my @check;
my $file_name = $ENV{'form.currentpath'}.$ENV{'form.selectfile'};
my @files=&Apache::loncommon::get_env_multiple('form.selectfile');
+
if (&Apache::lonnet::is_locked($file_name,$ENV{'user.domain'},$ENV{'user.name'} ) eq 'true') {
$r->print ("The file is locked and cannot be deleted.
");
$r->print(&done());
} else {
- &open_form($r);
- $r->print(''.&mt('Delete').' '.&display_file(undef,\@files).'?
');
- &close_form($r);
+ if (scalar(@files)) {
+ &open_form($r);
+ $r->print(''.&mt('Delete').' '.&display_file(undef,\@files).'?
');
+ &close_form($r);
+ } else {
+ $r->print("No file was checked to delete.
");
+ $r->print(&done());
+ }
}
}
@@ -285,7 +470,6 @@ sub delete_confirmed {
my @files=&Apache::loncommon::get_env_multiple('form.selectfile');
my $result;
foreach my $delete_file (@files) {
- &Apache::lonnet::logthis("trying to delete $delete_file");
$result=&Apache::lonnet::removeuserfile($ENV{'user.name'},
$ENV{'user.domain'},'portfolio'.
$ENV{'form.currentpath'}.
@@ -366,6 +550,9 @@ sub rename_confirmed {
') while trying to rename '.&display_file().' to '.
&display_file(undef,$filenewname).'
');
}
+ if ($filenewname ne $ENV{'form.filenewname'}) {
+ $r->print("The new file name was changed from:
".$ENV{'form.filenewname'}." to $filenewname ");
+ }
$r->print(&done());
}
sub select_files {
@@ -435,7 +622,7 @@ sub upload {
}
}
my $current_disk_usage = &Apache::lonnet::diskusage($ENV{'user.domain'}, $ENV{'user.name'},$portfolio_root);
- if (($current_disk_usage + $filesize) > $disk_quota){
+ if ((($current_disk_usage/1000) + $filesize) > $disk_quota){
$r->print('Unable to upload '.$fname.' (size = '.$filesize.' kilobytes. Disk quota will be exceeded.'.
'
Disk quota is '.$disk_quota.' kilobytes. Your current disk usage is '.$current_disk_usage.' kilobytes.');
}
@@ -487,6 +674,9 @@ sub createdir {
') while trying to create a new directory '.&display_file().'
');
}
}
+ if ($newdir ne $ENV{'form.newdir'}) {
+ $r->print("The new directory name was changed from:
".$ENV{'form.newdir'}." to $newdir ");
+ }
$r->print(&done());
}
@@ -506,13 +696,22 @@ sub handler {
&Apache::loncommon::bodytag('Portfolio Manager'));
$r->rflush();
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
- ['selectfile','currentpath',
+ ['selectfile','currentpath','meta',
'currentfile','action','fieldname','mode','rename']);
if (($ENV{'form.storeupl'} eq 'Upload') & (!$ENV{'form.uploaddoc.filename'})){
$r->print(' No file was selected to upload.'.
'To upload a file, click Browse...'.
', select a file, then click Upload,');
}
+ if ($ENV{'form.meta'}) {
+ &open_form($r);
+ $r->print(&edit_meta_data($r, $ENV{'form.currentpath'}.$ENV{'form.selectfile'}));
+ $r->print('Edit the meta data
');
+ &close_form($r);
+ }
+ if ($ENV{'form.store'}) {
+ }
+
if ($ENV{'form.uploaddoc.filename'}) {
&upload($r);
} elsif ($ENV{'form.action'} eq 'delete' && $ENV{'form.confirmed'}) {