--- loncom/interface/lonmeta.pm 2004/06/17 18:22:13 1.82 +++ loncom/interface/lonmeta.pm 2005/12/29 19:42:44 1.149 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Metadata display handler # -# $Id: lonmeta.pm,v 1.82 2004/06/17 18:22:13 www Exp $ +# $Id: lonmeta.pm,v 1.149 2005/12/29 19:42:44 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -17,7 +17,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License +# You should have received a copy of the GNU General Public License # along with LON-CAPA; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # @@ -31,9 +31,9 @@ package Apache::lonmeta; use strict; use LONCAPA::lonmetadata(); use Apache::Constants qw(:common); -use Apache::lonnet(); +use Apache::lonnet; use Apache::loncommon(); -use Apache::lonhtmlcommon(); +use Apache::lonhtmlcommon(); use Apache::lonmsg; use Apache::lonpublisher; use Apache::lonlocal; @@ -71,11 +71,12 @@ sub get_dynamic_metadata_from_sql { if (! defined($authordom) || ! defined($author)) { return (); } - my @Fields = ('url', + my @Fields = ('url','count','course', 'goto','goto_list', 'comefrom','comefrom_list', 'sequsage','sequsage_list', 'stdno','stdno_list', + 'dependencies', 'avetries','avetries_list', 'difficulty','difficulty_list', 'disc','disc_list', @@ -235,19 +236,30 @@ sub diffgraph { # The field names sub fieldnames { - return &Apache::lonlocal::texthash - ( - 'title' => 'Title', + my $file_type=shift; + my %fields = + ('title' => 'Title', 'author' =>'Author(s)', 'authorspace' => 'Author Space', 'modifyinguser' => 'Last Modifying User', 'subject' => 'Subject', + 'standards' => 'Standards', 'keywords' => 'Keyword(s)', 'notes' => 'Notes', 'abstract' => 'Abstract', 'lowestgradelevel' => 'Lowest Grade Level', - 'highestgradelevel' => 'Highest Grade Level', - 'standards' => 'Standards', + 'highestgradelevel' => 'Highest Grade Level'); + + if (! defined($file_type) || $file_type ne 'portfolio') { + %fields = + (%fields, + 'courserestricted' => 'Course Restricting Metadata'); + } + + if (! defined($file_type) || $file_type ne 'portfolio') { + %fields = + (%fields, + 'domain' => 'Domain', 'mime' => 'MIME Type', 'language' => 'Language', 'creationdate' => 'Creation Date', @@ -255,7 +267,7 @@ sub fieldnames { 'owner' => 'Publisher/Owner', 'copyright' => 'Copyright/Distribution', 'customdistributionfile' => 'Custom Distribution File', - 'sourceavail' => 'Source Availible', + 'sourceavail' => 'Source Available', 'sourcerights' => 'Source Custom Distribution File', 'obsolete' => 'Obsolete', 'obsoletereplacement' => 'Suggested Replacement for Obsolete File', @@ -277,9 +289,109 @@ sub fieldnames { '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', ); + } + return &Apache::lonlocal::texthash(%fields); +} + +sub portfolio_linked_path { + my ($path) = @_; + my $result = &Apache::portfolio::make_anchor('portfolio','/'); + my $fullpath = '/'; + my (undef,@tree) = split('/',$path); + my $filename = pop(@tree); + foreach my $dir (@tree) { + $fullpath .= $dir.'/'; + $result .= '/'; + $result .= &Apache::portfolio::make_anchor($dir,$fullpath); + } + $result .= "/$filename"; + return $result; +} + +sub portfolio_display_uri { + my ($uri,$as_links)=@_; + $uri =~ s|.*/(portfolio/.*)$|$1|; + my ($res_uri,$meta_uri) = ($uri,$uri); + + if ($uri =~ /\.meta$/) { + $res_uri =~ s/\.meta//; + } else { + $meta_uri .= '.meta'; + } + + my ($path) = ($res_uri =~ m|^portfolio(.*/)[^/]*$|); + + if ($as_links) { + $res_uri = &portfolio_linked_path($res_uri); + $meta_uri = &portfolio_linked_path($meta_uri); + } + return ($res_uri,$meta_uri,$path); } +sub pre_select_course { + my ($r,$uri) = @_; + my $output; + my $fn=&Apache::lonnet::filelocation('',$uri); + my ($res_uri,$meta_uri,$path) = &portfolio_display_uri($uri); + %Apache::lonpublisher::metadatafields=(); + %Apache::lonpublisher::metadatakeys=(); + my $result=&Apache::lonnet::getfile($fn); + if ($result == -1){ + $r->print(&mt('Creating new file [_1]'),$meta_uri); + } else { + &Apache::lonpublisher::metaeval($result); + } + $r->print('
'); + $r->print('

'.&mt('If you would like to associate this resource ([_1]) with a current or previous course, please select one from the list below, otherwise select, \'None\'',''.$res_uri.'').'

'); + $output = &select_course(); + $r->print($output.'
'); + $r->print('
'); + + $r->print('

'. + ''. + ''. + '
'); + + return; +} +sub select_course { + my %courses; + my $output; + my $selected; + foreach my $key (keys(%env)) { + if ($key =~ m/\.metadata\./) { + $key =~ m/^course\.(.+)(\.metadata.+$)/; + my $course = $1; + my $coursekey = 'course.'.$course.'.description'; + my $value = $env{$coursekey}; + $courses{$coursekey} = $value; + } + } + my $meta_not_found = 1; + if ($Apache::lonpublisher::metadatafields{'courserestricted'} eq 'none') { + $selected = ' SELECTED '; + } else { + $selected = ''; + } + $output .= '
'; + return ($output); +} # Pretty printing of metadata field sub prettyprint { @@ -330,7 +442,7 @@ sub prettyprint { return &Apache::loncommon::gradeleveldescription($value); } # Only for advance users below - if (! $ENV{'user.adv'}) { + if (! $env{'user.adv'}) { return '- '.&mt('not displayed').' -'; } # File @@ -339,7 +451,7 @@ sub prettyprint { ($type eq 'goto_list') || ($type eq 'comefrom_list') || ($type eq 'sequsage_list') || - ($type eq 'linkto_list')) { + ($type eq 'dependencies')) { return '