Annotation of loncom/imspackages/imsexport.pm, revision 1.1
1.1 ! raeburn 1: # Copyright Michigan State University Board of Trustees
! 2: #
! 3: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
! 4: #
! 5: # LON-CAPA is free software; you can redistribute it and/or modify
! 6: # it under the terms of the GNU General Public License as published by
! 7: # the Free Software Foundation; either version 2 of the License, or
! 8: # (at your option) any later version.
! 9: #
! 10: # LON-CAPA is distributed in the hope that it will be useful,
! 11: # but WITHOUT ANY WARRANTY; without even the implied warranty of
! 12: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! 13: # GNU General Public License for more details.
! 14: #
! 15: # You should have received a copy of the GNU General Public License
! 16: # along with LON-CAPA; if not, write to the Free Software
! 17: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
! 18: #
! 19: # /home/httpd/html/adm/gpl.txt
! 20: #
! 21: # http://www.lon-capa.org/
! 22: #
! 23:
! 24: package Apache::imsexport;
! 25:
! 26: use strict;
! 27: use Apache::lonnet;
! 28:
! 29: sub simpleproblem {
! 30: my ($symb,$output) = @_;
! 31: my %qparms = &Apache::lonnet::dump('resourcedata',
! 32: $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
! 33: $ENV{'course.'.$ENV{'request.course.id'}.'.num'},
! 34: $ENV{'request.course.id'}.'.'.$symb);
! 35: if ($symb) {
! 36: my $prefix=$ENV{'request.course.id'}.'.'.$symb.'.0.';
! 37: my $qtype=$qparms{$prefix.'questiontype'};
! 38: my $qtext=$qparms{$prefix.'questiontext'};
! 39: my $hint=$qparms{$prefix.'hinttext'};
! 40: my %values = ();
! 41: my %foils = ();
! 42: if (($qtype eq 'radio') || ($qtype eq 'option')) {
! 43: my $maxfoils=$qparms{$prefix.'maxfoils'};
! 44: my $randomize=$qparms{$prefix.'randomize'};
! 45: if ($qtype eq 'option') {
! 46: my $options=$qparms{$prefix.'options'};
! 47: %values = &evaloptionhash($options);
! 48: $$output .= qq|
! 49: <problem>
! 50: <optionresponse max="$maxfoils" randomize="$randomize">
! 51: <foilgroup options="$options">
! 52: |;
! 53: for (my $k=0; $k<10; $k++) {
! 54: my $iter = $k+1;
! 55: $$output .= ' <foil name="foil'.$k.'" value="'.$qparms{$prefix.'.value.'.$iter}.'"';
! 56: $$output .= 'location="'.$qparms{$prefix.'.position.'.$iter}.'" ';
! 57: $$output .= '><startouttext />'.$qparms{$prefix.'.text.'.$iter}.'<endouttext /></foil>'."\n";
! 58: }
! 59: chomp($$output);
! 60: $$output .= qq|
! 61: </foilgroup>
! 62: |;
! 63: if ($hint) {
! 64: $$output .= '
! 65: <hintgroup>
! 66: <hintpart on="default">
! 67: <startouttext />'.$hint.'<endouttext/>
! 68: </hintpart>
! 69: </hintgroup>';
! 70: }
! 71: $$output .= qq|
! 72: </optionresponse>
! 73: </problem>
! 74: |;
! 75: } else {
! 76: $$output .= qq|
! 77: <problem>
! 78: <radiobuttonresponse max="$maxfoils" randomize="$randomize">
! 79: <foilgroup>
! 80: |;
! 81: for (my $k=0; $k<10; $k++) {
! 82: my $iter = $k+1;
! 83: $$output .= ' <foil name="foil'.$k.'" value="'.$qparms{$prefix.'.value.'.$iter}.'"';
! 84: $$output .= 'location="'.$qparms{$prefix.'.position.'.$iter}.'" ';
! 85: $$output .= '><startouttext />'.$qparms{$prefix.'.text.'.$iter}.'<endouttext /></foil>'."\n";
! 86: }
! 87: chomp($$output);
! 88: $$output .= qq|
! 89: </foilgroup>
! 90: |;
! 91: if ($hint) {
! 92: $$output .= '
! 93: <hintgroup>
! 94: <hintpart on="default">
! 95: <startouttext />'.$hint.'<endouttext/>
! 96: </hintpart>
! 97: </hintgroup>';
! 98: }
! 99: $$output .= qq|
! 100: </radiobuttonresponse>
! 101: </problem>
! 102: |;
! 103: }
! 104: } elsif ($qtype eq 'stringanswer') {
! 105: my $stringanswer = $qparms{$prefix.'stringanswer'};
! 106: my $stringtype=$qparms{$prefix.'stringtype'};
! 107: $$output .= qq|
! 108: <problem>
! 109: <stringresponse answer="$stringanswer" type="$stringtype">
! 110: <textline>
! 111: </textline>
! 112: |;
! 113: if ($hint) {
! 114: $$output .= '
! 115: <hintgroup>
! 116: <hintpart on="default">
! 117: <startouttext />'.$hint.'<endouttext/>
! 118: </hintpart>
! 119: </hintgroup>';
! 120: }
! 121: $$output .= qq|
! 122: </stringresponse>
! 123: </problem>
! 124: |;
! 125: } else {
! 126: $$output .= qq|
! 127: <problem>
! 128: <startouttext />$qtext<endouttext />
! 129: <essayresponse>
! 130: <textfield></textfield>
! 131: </essayresponse>
! 132: </problem>
! 133: |;
! 134: }
! 135: }
! 136: return;
! 137: }
! 138:
! 139: sub evaloptionhash {
! 140: my $options=shift;
! 141: $options=~s/^\(\'//;
! 142: $options=~s/\'\)$//;
! 143: my %returnhash=();
! 144: foreach (split(/\'\,\'/,$options)) {
! 145: $returnhash{$_}=$_;
! 146: }
! 147: return %returnhash;
! 148: }
! 149:
! 150: sub external {
! 151: my ($symb,$title) = @_;
! 152: my $output;
! 153: if ($symb =~ m-\.sequence___\d+___ext$-) {
! 154: my $exturl = &Apache::lonnet::escape($1);
! 155: $output = qq|
! 156: <html>
! 157: <head><title>$title</title>
! 158: </head>
! 159: <frameset rows="0,*" border="0">
! 160: <frame src=''>
! 161: <frame src="$exturl" name="external">
! 162: </frameset>
! 163: </html>
! 164: |;
! 165: }
! 166: return $output;
! 167: }
! 168:
! 169: sub templatedpage {
! 170: my ($content_type,$timestamp,$count,$uploads,$udom,$uname) = @_;
! 171: my $cdom = $ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
! 172: my $cnum = $ENV{'course.'.$ENV{'request.course.id'}.'.num'};
! 173: my $output = '
! 174: <'.$content_type.'>';
! 175: my %syllabusdata=();
! 176: my %syllabusfields=();
! 177: if ($content_type eq 'syllabus') {
! 178: %syllabusfields=&Apache::lonlocal::texthash(
! 179: 'aaa_instructorinfo' => 'Instructor Information',
! 180: 'bbb_description' => 'Course Description',
! 181: 'ccc_prereq' => 'Prerequisites',
! 182: 'cdc_classhours' => 'Class Hours',
! 183: 'ddd_officehours' => 'Office Hours',
! 184: 'eee_helproom' => 'Helproom Hours',
! 185: 'efe_projectinfo' => 'Project Information',
! 186: 'fff_examinfo' => 'Exam Information',
! 187: 'fgf_deadlines' => 'Deadlines',
! 188: 'ggg_grading' => 'Grading Information',
! 189: 'hhh_readings' => 'Readings',
! 190: 'iii_coursepack' => 'Coursepack',
! 191: 'jjj_weblinks' => 'Web Links',
! 192: 'kkk_textbook' => 'Textbook',
! 193: 'lll_includeurl' => 'URLs To Include in Syllabus'
! 194: );
! 195: %syllabusdata = &Apache::lonnet::dump('syllabus',$cdom,$cnum);
! 196:
! 197: } elsif ($content_type eq 'simplepage') {
! 198: %syllabusfields=&Apache::lonlocal::texthash(
! 199: 'aaa_title' => 'Page Title',
! 200: 'bbb_content' => 'Content',
! 201: 'ccc_webreferences' => 'Web References'
! 202: );
! 203: %syllabusdata = &Apache::lonnet::dump('smppage_'.$timestamp,$cdom,$cnum);
! 204: } elsif ($content_type eq 'bulletinboard') {
! 205: %syllabusfields=&Apache::lonlocal::texthash(
! 206: 'aaa_title' => 'Topic',
! 207: 'bbb_content' => 'Task',
! 208: 'ccc_webreferences' => 'Web References'
! 209: );
! 210: %syllabusdata = &Apache::lonnet::dump('bulletinpage_'.$timestamp,$cdom,$cnum);
! 211: } elsif ($content_type eq 'aboutme') {
! 212: %syllabusdata=&Apache::lonnet::dump('aboutme',$udom,$uname);
! 213: %syllabusfields=&Apache::lonlocal::texthash(
! 214: 'aaa_contactinfo' => 'Contact Information',
! 215: 'bbb_aboutme' => 'About Me',
! 216: 'ccc_webreferences' => 'Web References'
! 217: );
! 218: $output .= qq|
! 219: <username>$uname</username>
! 220: <domain>$udom</domain>
! 221: |;
! 222: }
! 223: foreach (sort keys %syllabusfields) {
! 224: $output .= qq|
! 225: <$_>
! 226: <name>$syllabusfields{$_}</name>
! 227: <value>$syllabusdata{$_}</value>
! 228: </$_>|;
! 229: }
! 230: if (defined($syllabusdata{'uploaded.photourl'})) {
! 231: if ($syllabusdata{'uploaded.photourl'} =~ m-^/uploaded/$cdom/$cnum/$content_type/(.+)$-) {
! 232: push @{$$uploads}, $syllabusdata{'uploaded.photourl'};
! 233: }
! 234: $output .= '
! 235: <photo>
! 236: <filename>'.$count.'/'.$1.'</filename>
! 237: </photo>';
! 238: }
! 239: $output .= '
! 240: </'.$content_type.'>';
! 241: return $output;
! 242: }
! 243:
! 244: 1;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>