--- loncom/interface/londocs.pm 2009/09/24 22:15:27 1.325.4.2 +++ loncom/interface/londocs.pm 2009/03/08 21:49:33 1.353 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.325.4.2 2009/09/24 22:15:27 raeburn Exp $ +# $Id: londocs.pm,v 1.353 2009/03/08 21:49:33 weissno Exp $ # # Copyright Michigan State University Board of Trustees # @@ -44,7 +44,6 @@ use HTML::Entities; use GDBM_File; use Apache::lonlocal; use Cwd; -use Apache::londocsgci(); use LONCAPA qw(:DEFAULT :match); my $iconpath; @@ -60,7 +59,6 @@ my $hadchanges; my %help=(); - sub mapread { my ($coursenum,$coursedom,$map)=@_; return @@ -121,11 +119,9 @@ sub dumpbutton { my $type = &Apache::loncommon::course_type(); if ($home+$other==0) { return ''; } if ($home) { - return '<div>'. - '<input type="submit" name="dumpcourse" value="'. + return '<input type="submit" name="dumpcourse" value="'. &mt('Dump '.$type.' DOCS to Construction Space').'" />'. - &Apache::loncommon::help_open_topic('Docs_Dump_Course_Docs'). - '</div>'; + &Apache::loncommon::help_open_topic('Docs_Dump_Course_Docs'); } else { return '<div>'. &mt('Dump '.$type. @@ -137,7 +133,7 @@ sub dumpbutton { sub clean { my ($title)=@_; $title=~s/[^\w\/\!\$\%\^\*\-\_\=\+\;\:\,\\\|\`\~]+/\_/gs; - return $title; + return $title; } @@ -179,8 +175,8 @@ sub dumpcourse { my $fail=0; for (my $i=0;$i<$#dirs;$i++) { $makepath.='/'.$dirs[$i]; - unless (-e $makepath) { - unless(mkdir($makepath,0777)) { $fail=1; } + unless (-e $makepath) { + unless(mkdir($makepath,0777)) { $fail=1; } } } $r->print('<br /><tt>'.$item.'</tt> => <tt>'.$newfilename.'</tt>: '); @@ -266,10 +262,9 @@ sub dumpcourse { sub exportbutton { my $type = &Apache::loncommon::course_type(); - return '<div>'. - '<input type="submit" name="exportcourse" value="'. + return '<input type="submit" name="exportcourse" value="'. &mt('Export '.$type.' to IMS').'" />'. - &Apache::loncommon::help_open_topic('Docs_Export_Course_Docs').'</div>'; + &Apache::loncommon::help_open_topic('Docs_Export_Course_Docs'); } @@ -402,10 +397,10 @@ sub exportcourse { $display .= '<img src="/adm/lonIcons/whitespace1.gif" class="LC_docs_spacer" /><img src="/adm/lonIcons/whitespace1.gif" class="LC_docs_spacer" />'."\n"; } if ($curRes->is_sequence()) { - $display .= '<img src="/adm/lonIcons/navmap.folder.open.gif" alt="" /> '."\n"; + $display .= '<img src="/adm/lonIcons/navmap.folder.open.gif"> '."\n"; $lastcontainer = $count + $startcount + $boards; } elsif ($curRes->is_page()) { - $display .= '<img src="/adm/lonIcons/navmap.page.open.gif" alt="" /> '."\n"; + $display .= '<img src="/adm/lonIcons/navmap.page.open.gif"> '."\n"; $lastcontainer = $count + $startcount + $boards; } my $currelem = $count+$boards+$startcount; @@ -479,7 +474,7 @@ function containerCheck(item) { $scripttag)); $r->print(&Apache::lonhtmlcommon::breadcrumbs('Export '.lc($type).' to IMS content package')); $r->print($display.'</table>'. - '<p><input type="hidden" name="finishexport" value="1" />'. + '<p><input type="hidden" name="finishexport" value="1">'. '<input type="submit" name="exportcourse" value="'. &mt('Export '.$type.' DOCS').'" /></p></form>'); } @@ -764,7 +759,7 @@ sub replicate_content { if ($caller eq 'templateupload') { $url = $symb; $url =~ s#//#/#g; - } else { + } else { ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb); } my $content; @@ -804,9 +799,9 @@ sub replicate_content { $$message = 'Could not render '.$url.' server message - '.$rtncode."<br />\n"; } } elsif ($caller eq 'noedit') { -# Need to render the resource without the LON-CAPA Internal header and the Post discussion footer, and then set $content equal to this. +# Need to render the resource without the LON-CAPA Internal header and the Post discussion footer, and then set $content equal to this. $repstatus = 'ok'; - $content = 'Not the owner of this resource'; + $content = 'Not the owner of this resource'; } if ($repstatus eq 'ok') { print $copiedfile $content; @@ -857,8 +852,8 @@ sub extract_media { } } if ($caller eq 'resource') { - my $respath = $Apache::lonnet::perlvar{'lonDocRoot'}.'/res'; - my $embed_path = &Apache::lonnet::filelocation($respath,$embed_url); + my $respath = $Apache::lonnet::perlvar{'lonDocRoot'}.'/res'; + my $embed_path = &Apache::lonnet::filelocation($respath,$embed_url); $embed_content = &Apache::lonnet::getfile($embed_path); unless ($embed_content eq -1) { $repstatus = 'ok'; @@ -926,7 +921,7 @@ sub group_import { while (@files) { my ($name, $url, $residx) = @{ shift(@files) }; - if (($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/(default_\d+\.)(page|sequence)$}) + if (($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/(default_\d+\.)(page|sequence)$}) && ($caller eq 'londocs') && (!&Apache::lonnet::stat_file($url))) { @@ -949,7 +944,7 @@ sub group_import { } } if ($url) { - if (!$residx + if (!$residx || defined($LONCAPA::map::zombies[$residx])) { $residx = &LONCAPA::map::getresidx($url,$residx); push(@LONCAPA::map::order, $residx); @@ -958,7 +953,7 @@ sub group_import { if ($url=~m{^http://} || $url=~m{^https://}) { $ext = 'true'; } $url = &LONCAPA::map::qtunescape($url); $name = &LONCAPA::map::qtunescape($name); - $LONCAPA::map::resources[$residx] = + $LONCAPA::map::resources[$residx] = join(':', ($name, $url, $ext, 'normal', 'res')); } } @@ -989,9 +984,9 @@ sub breadcrumbs { my $url='/adm/coursedocs?folderpath='. &escape($folderpath); my $name=&unescape($foldername); -# randompick number, hidden, encrypted, random order, is appended with ":"s to the foldername +# randompick number, hidden, encrypted, random order, is appended with ":"s to the foldername $name=~s/\:(\d*)\:(\w*)\:(\w*):(\d*)$//; - if ($1 ne '') { + if ($1 ne '') { $randompick=$1; } else { $randompick=-1; @@ -1130,7 +1125,7 @@ sub docs_change_log { foreach my $key (@changes) { $wholeentry.=':'.$docslog{$id}{'logentry'}{$key}; } - if ($wholeentry!~/\Q$env{'form.containingphrase'}\E/i) { next; } + if ($wholeentry!~/\Q$env{'form.containingphrase'}\E/i) { next; } } my $count = 0; my $time = @@ -1343,7 +1338,7 @@ sub do_paste_from_buffer { $db_name =~ s{_\d*$ }{_$now}x; my $result=&Apache::lonnet::put($db_name,\%contents, $coursedom,$coursenum); - $url =~ s{/(\d*)/smppg$ }{/$now/smppg}x; + $url =~ s{/(\d*)/smppg$ }{/$now/smppg}x; $title=&mt('Copy of').' '.$title; } } @@ -1357,7 +1352,7 @@ sub do_paste_from_buffer { if ($folder =~ /^supplemental/) { $title = $env{'docs.markedcopy_supplemental'}; } else { - (undef,undef,$title) = + (undef,undef,$title) = &parse_supplemental_title($env{'docs.markedcopy_supplemental'}); } } else { @@ -1381,7 +1376,7 @@ sub uniqueness_check { $url=&LONCAPA::map::qtescape($url); if ($newurl eq $url) { $unique = 0; - last; + last; } } return $unique; @@ -1435,7 +1430,7 @@ sub handle_edit_cmd { &LONCAPA::map::makezombie($LONCAPA::map::order[$idx]); splice(@LONCAPA::map::order, $idx, 1); - } elsif ($cmd eq 'up' + } elsif ($cmd eq 'up' && ($idx) && (defined($LONCAPA::map::order[$idx-1]))) { @LONCAPA::map::order[$idx-1,$idx] = @LONCAPA::map::order[$idx,$idx-1]; @@ -1502,7 +1497,7 @@ sub editor { } if ($env{'form.pastemarked'}) { - my $paste_res = + my $paste_res = &do_paste_from_buffer($coursenum,$coursedom,$folder); if ($paste_res eq 'ok') { ($errtext,$fatal) = &storemap($coursenum,$coursedom,$folder.'.'.$container); @@ -1665,7 +1660,7 @@ sub process_file_upload { <input type="hidden" name="phasetwo" value="'.$total_embedded.'" />'; $phase_status = 'phasetwo'; - $$upload_output .= + $$upload_output .= 'This file contains embedded multimedia objects, which need to be uploaded to LON-CAPA.<br />'. &Apache::loncommon::ask_for_embedded_content( '/adm/coursedocs',$state,$allfiles,$codebase); @@ -1768,19 +1763,19 @@ sub entryline { my $incindex=$index+1; my $selectbox=''; if (($folder!~/^supplemental/) && - ($#LONCAPA::map::order>0) && + ($#LONCAPA::map::order>0) && ((split(/\:/, - $LONCAPA::map::resources[$LONCAPA::map::order[0]]))[1] - ne '') && + $LONCAPA::map::resources[$LONCAPA::map::order[0]]))[1] + ne '') && ((split(/\:/, - $LONCAPA::map::resources[$LONCAPA::map::order[1]]))[1] + $LONCAPA::map::resources[$LONCAPA::map::order[1]]))[1] ne '')) { $selectbox= '<input type="hidden" name="currentpos" value="'.$incindex.'" />'. '<select name="newpos" onChange="this.form.submit()">'; for (my $i=1;$i<=$#LONCAPA::map::order+1;$i++) { if ($i==$incindex) { - $selectbox.='<option value="" selected="selected">('.$i.')</option>'; + $selectbox.='<option value="" selected="1">('.$i.')</option>'; } else { $selectbox.='<option value="'.$i.'">'.$i.'</option>'; } @@ -1810,8 +1805,8 @@ sub entryline { } } } - if ($url=~/^\/res\/lib\/templates\//) { - $nocopy=1; + if ($url=~/^\/res\/lib\/templates\//) { + $nocopy=1; $nocut=1; } my $copylink=' '; @@ -1926,7 +1921,7 @@ END } elsif ($url!~/\.(sequence|page)$/) { $url='/adm/coursedocs/showdoc'.$url; } - } elsif ($url=~m|^/ext/|) { + } elsif ($url=~m|^/ext/|) { $url='/adm/wrapper'.$url; $external = 1; } @@ -1947,7 +1942,7 @@ END my $foldername=&escape($foldertitle); my $folderpath=$env{'form.folderpath'}; if ($folderpath) { $folderpath.='&' }; -# Append randompick number, hidden, and encrypted with ":" to foldername, +# Append randompick number, hidden, and encrypted with ":" to foldername, # so it gets transferred between levels $folderpath.=$folderarg.'&'.$foldername.':'.(&LONCAPA::map::getparameter($orderidx, 'parameter_randompick'))[0] @@ -1967,7 +1962,7 @@ END my $ro_set= ((&LONCAPA::map::getparameter($orderidx,'parameter_randomorder'))[0]=~/^yes$/i?' checked="checked"':''); $rand_order_text =' -<span class="LC_nobreak"><label><input type="checkbox" name="randomorder_'.$orderidx.'" onClick="this.form.changeparms.value=\'randomorder\';this.form.submit()" '.$ro_set.' /> '.&mt('Random Order').' </label></span>'; +<span class="LC_nobreak"><label><input type="checkbox" name="randomorder_'.$orderidx.'" onClick="this.form.changeparms.value=\'randomorder\';this.form.submit()" '.$ro_set.' /> '.&mt('Random Order').' </label></span>'; } if ($ispage) { my $pagename=&escape($pagetitle); @@ -2005,9 +2000,9 @@ END 'hd' => 'Hidden', 'ec' => 'URL hidden'); my $enctext= - ((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i?' checked="checked"':''); + ((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i?' checked="1"':''); my $hidtext= - ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="checked"':''); + ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="1"':''); $line.=(<<ENDPARMS); <td class="LC_docs_entry_parameter"> $form_start @@ -2099,7 +2094,7 @@ sub checkonthis { if (($errorcount) || ($warningcount)) { if ($errorcount) { - $r->print('<img src="/adm/lonMisc/bomb.gif" alt="" /><span class="LC_error">'. + $r->print('<img src="/adm/lonMisc/bomb.gif" /><span class="LC_error">'. &mt('[quant,_1,error]',$errorcount).'</span>'); } if ($warningcount) { @@ -2124,7 +2119,7 @@ sub checkonthis { unless ($url=~/\$/) { $r->print('<span class="LC_error">'.&mt('not found').'</b></span>'); } else { - $r->print('<span class="LC_error">'.&mt('unable to verify variable URL').'</span>'); + $r->print('<span class="LC_unknown">'.&mt('unable to verify variable URL').'</span>'); } } else { $r->print('<span class="LC_error">'.&mt('access denied').'</span>'); @@ -2258,7 +2253,7 @@ sub checkversions { if ($haschanged) { if (&Apache::lonnet::put('resourceversions',\%newsetversions, $env{'course.'.$env{'request.course.id'}.'.domain'}, - $env{'course.'.$env{'request.course.id'}.'.num'}) eq 'ok') { + $env{'course.'.$env{'request.course.id'}.'.num'}) eq 'ok') { $r->print('<h1>'.&mt('Your Version Settings have been Saved').'</h1>'); } else { $r->print('<h1><span class="LC_error">'.&mt('An Error Occured while Attempting to Save your Version Settings').'</span></h1>'); @@ -2410,7 +2405,7 @@ ENDHEADERS $entries_per_col = $num_entries/4 + 1; } my $entries_count = 0; - $r->print('<td valign="top"><font size="-2">'); + $r->print('<td valign="top"><font size="-2">'); my $cols_output = 1; for (my $prevvers=$lastold;$prevvers<$currentversion;$prevvers++) { my $url=$root.'.'.$prevvers.'.'.$extension; @@ -2489,7 +2484,7 @@ sub changewarning { $message='Changes will become active for your current session after [_1], or the next time you log in.'; } $r->print("\n\n". -'<script type="text/javascript">function reinit(tf) { tf.submit();'.$postexec.' }</script>'."\n". +'<script type="text/javascript">function reinit(tf) { tf.submit();'.$postexec.' }</script>'."\n". '<form name="reinitform" method="post" action="/adm/roles" target="loncapaclient">'. '<input type="hidden" name="orgurl" value="'.$url. '" /><input type="hidden" name="selectrole" value="1" /><h3><span class="LC_warning">'. @@ -2524,14 +2519,6 @@ sub handler { return OK if $r->header_only; my $type = &Apache::loncommon::course_type(); - my $coursedom=$env{'course.'.$env{'request.course.id'}.'.domain'}; - if ($coursedom eq 'gcitest') { - my $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'}); - if ($allowed) { - &concept_test_builder($r); - return OK; - } - } # --------------------------------------------- Initialize help topics for this foreach my $topic ('Adding_Course_Doc','Main_Course_Documents', @@ -2551,9 +2538,9 @@ sub handler { 'Option_Response_Simple'); $help{'Bulletin Board'} = &Apache::loncommon::help_open_topic( 'Docs_About_Bulletin_Board,Docs_Editing_Templated_Pages'); - $help{'My Personal Info'} = &Apache::loncommon::help_open_topic( + $help{'My Personal Information Page'} = &Apache::loncommon::help_open_topic( 'Docs_About_My_Personal_Info,Docs_Editing_Templated_Pages'); - $help{'Group Files'} = &Apache::loncommon::help_open_topic('Docs_About_Group_Files'); + $help{'Group Portfolio'} = &Apache::loncommon::help_open_topic('Docs_About_Group_Files'); $help{'Caching'} = &Apache::loncommon::help_open_topic('Caching'); # does this user have privileges to modify docs @@ -2586,6 +2573,8 @@ sub handler { my $showdoc=0; my $containertag; my $uploadtag; + + &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['folderpath','pagepath', 'pagesymb']); @@ -2627,15 +2616,15 @@ sub handler { $showdoc='/'.$1; } unless ($showdoc) { # got called from remote - if (($env{'form.folder'}=~/^(?:group|default)_/) || + if (($env{'form.folder'}=~/^(?:group|default)_/) || ($env{'form.folder'} =~ m:^\d+/(pages|sequences)/:)) { $forcestandard = 1; } $forcesupplement=($env{'form.folder'}=~/^supplemental_/); - if ($allowed) { + if ($allowed) { &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['cmd']); - $script=&Apache::lonratedt::editscript('simple'); + $script=&Apache::lonratedt::editscript('simple'); } } else { # got called in sequence from course $allowed=0; @@ -2645,7 +2634,7 @@ sub handler { my $coursenum=$env{'course.'.$env{'request.course.id'}.'.num'}; my $coursedom=$env{'course.'.$env{'request.course.id'}.'.domain'}; -# get personal data +# get personal data my $uname=$env{'user.name'}; my $udom=$env{'user.domain'}; my $plainname=&escape(&Apache::loncommon::plainname($uname,$udom)); @@ -2671,7 +2660,7 @@ sub handler { if ($allowed) { if (($env{'form.uploaddoc.filename'}) && ($env{'form.cmd'}=~/^upload_(\w+)/)) { -# Process file upload - phase one - upload and parse primary file. +# Process file upload - phase one - upload and parse primary file. undef($hadchanges); $upload_result = &process_file_upload(\$upload_output,$coursenum, $coursedom,\%allfiles, @@ -2696,8 +2685,8 @@ sub handler { $newname{$i} = &process_secondary_uploads(\$upload_output,$coursedom,$coursenum,'embedded_item_',$i,$residx); $origname{$i} = &unescape($env{'form.embedded_orig_'.$i}); if (exists($env{'form.embedded_codebase_'.$i})) { - $javacodebase = &unescape($env{'form.embedded_codebase_'.$i}); - $origname{$i} =~ s#^\Q$javacodebase\E/##; + $javacodebase = &unescape($env{'form.embedded_codebase_'.$i}); + $origname{$i} =~ s#^\Q$javacodebase\E/##; } my @attributes = (); if ($env{'form.embedded_attrib_'.$i} =~ /:/) { @@ -2734,7 +2723,7 @@ sub handler { } if ($content =~ m#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#) { } - $content =~ s#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#$1$newname{$item}$2#gi; + $content =~ s#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#$1$newname{$item}$2#gi; } if (exists($codebase{$item})) { $content =~ s/(codebase\s*=\s*["']?)\Q$codebase{$item}\E(["']?)/$1.$2/i; #' stupid emacs @@ -2746,7 +2735,7 @@ sub handler { my $docudom=$env{'course.'.$env{'request.course.id'}.'.domain'}; my $url = &Apache::lonnet::store_edited_file($primary_url,$content,$docudom,$docuname,\$saveresult); } else { - &Apache::lonnet::logthis('retrieval of uploaded file - '.$primary_url.' - for editing, failed: '.$getstatus); + &Apache::lonnet::logthis('retrieval of uploaded file - '.$primary_url.' - for editing, failed: '.$getstatus); } } } @@ -2758,9 +2747,8 @@ sub handler { 'uplm' => 'Upload a new main '.lc($type).' document', 'upls' => 'Upload a new supplemental '.lc($type).' document', 'impp' => 'Import a document', - 'pubd' => 'Published documents', + 'pubd' => 'Published Documents', 'copm' => 'All documents out of a published map into this folder', - 'spec' => 'Special documents', 'upld' => 'Upload Document', 'srch' => 'Search', 'impo' => 'Import', @@ -2779,20 +2767,93 @@ sub handler { 'scuf' => 'Score Upload Form', 'bull' => 'Discussion Board', 'mypi' => 'My Personal Information Page', - 'grpo' => 'Group Portfolios', + 'grpo' => 'Group Portfolio', 'rost' => 'Course Roster', - 'abou' => 'About User', + 'abou' => 'Personal Information Page for a User', 'imsf' => 'Import IMS package', 'file' => 'File', 'title' => 'Title', 'comment' => 'Comment', - 'parse' => 'If HTML file, upload embedded images/multimedia files' + 'parse' => 'Upload embedded images/multimedia files if HTML file!', + 'nd' => 'New Document', + 'pm' => 'Published Map', + 'sd' => 'Special Document', + 'mo' => 'More Options', + 'hao' => 'Hide all Options' ); # ----------------------------------------------------------------------------- + my $fileupload=(<<FIUP); + $lt{'file'}:<br /> + <input type="file" name="uploaddoc" size="40" /> +FIUP + + my $checkbox=(<<CHBO); + <!-- <label>$lt{'parse'}? + <input type="checkbox" name="parserflag" /> + </label> --> + <label> + <input type="checkbox" name="parserflag" checked="checked" /> $lt{'parse'} + </label> +CHBO + + my $fileuploadform=(<<FUFORM); + <form name="uploaddocument" action="/adm/coursedocs" method="post" enctype="multipart/form-data"> + $fileupload + <br /> + $lt{'title'}:<br /> + <input type="text" size="50" name="comment" /> + $uploadtag + <input type="hidden" name="cmd" value="upload_default" /> + <br /> + <span class="LC_nobreak"> + $checkbox + </span> + <br /> + <br /> + <span class="LC_nobreak"> + <input type="submit" value="$lt{'upld'}" /> + $help{'Uploading_From_Harddrive'} + </span> + </form> +FUFORM + + my $simpleeditdefaultform=(<<SEDFFORM); + <form action="/adm/coursedocs" method="post" name="simpleeditdefault"> + $lt{'pubd'}<br /> + $uploadtag + <input type="button" onClick="javascript:groupsearch()" value="$lt{'srch'}" /> + <br /> + <span class="LC_nobreak"> + <input type="button" onClick="javascript:groupimport();" value="$lt{'impo'}" /> + $help{'Importing_LON-CAPA_Resource'} + </span> + <br /> + <input type="button" onClick="javascript:groupopen(0,1,1);" value="$lt{'book'}" /> + <hr /> + <p> + $lt{'copm'}<br /> + <input type="text" size="40" name="importmap" /><br /> + <span class="LC_nobreak"><input type="button" + onClick="javascript:openbrowser('simpleeditdefault','importmap','sequence,page','')" + value="$lt{'selm'}" /> <input type="submit" name="loadmap" value="$lt{'load'}" /> + $help{'Load_Map'}</span> + </p> + </form> +SEDFFORM + + my $extresourcesform=(<<ERFORM); + <form action="/adm/coursedocs" method="post" name="newext"> + $uploadtag + <input type="hidden" name="importdetail" value="" /> + <span class="LC_nobreak"> + <input name="newext" type="button" onClick="javascript:makenewext('newext');" + value="$lt{'extr'}" /> $help{'Adding_External_Resource'} + </span> + </form> +ERFORM + if ($allowed) { &update_paste_buffer($coursenum,$coursedom); - my $dumpbut=&dumpbutton(); - my $exportbut=&exportbutton(); my %lt=&Apache::lonlocal::texthash( 'vc' => 'Verify Content', 'cv' => 'Check/Set Resource Versions', @@ -2812,51 +2873,49 @@ sub handler { $containertag = '<input type="hidden" name="folderpath" value="" />'; $uploadtag = '<input type="hidden" name="folderpath" value="'.&HTML::Entities::encode($folderpath,'<>&"').'" />'; } - - $r->print(<<ENDCOURSEVERIFY); -<form name="renameform" method="post" action="/adm/coursedocs"> - <input type="hidden" name="title" /> - <input type="hidden" name="cmd" /> - <input type="hidden" name="markcopy" /> - <input type="hidden" name="copyfolder" /> - $containertag -</form> -<form name="simpleedit" method="post" action="/adm/coursedocs"> - <input type="hidden" name="importdetail" value="" /> - $uploadtag -</form> -<form action="/adm/coursedocs" method="post" name="courseverify"> - <div class="LC_docs_course_commands"> - - <div> - <input type="submit" name="verify" value="$lt{'vc'}" />$help{'Verify_Content'} - </div> - <div> - <input type="submit" name="versions" value="$lt{'cv'}" />$help{'Check_Resource_Versions'} - </div> - $dumpbut - $exportbut - <div> - <input type="submit" name="listsymbs" value="$lt{'ls'}" /> - </div> - <div> - <input type="hidden" name="folder" value="$env{'form.folder'}" /> - <input type="submit" name="docslog" value="$lt{'sl'}" /> - </div> - </div> -</form> -<div style="clear: both; height: 0px;"> </div> -ENDCOURSEVERIFY - $r->print(&Apache::loncommon::help_open_topic('Docs_Adding_Course_Doc', - &mt('Editing the Table of Contents for your '.$type))); + $r->print(<<HIDDENFORM); + <form name="renameform" method="post" action="/adm/coursedocs"> + <input type="hidden" name="title" /> + <input type="hidden" name="cmd" /> + <input type="hidden" name="markcopy" /> + <input type="hidden" name="copyfolder" /> + $containertag + </form> + <form name="simpleedit" method="post" action="/adm/coursedocs"> + <input type="hidden" name="importdetail" value="" /> + $uploadtag + </form> +HIDDENFORM + } +# --------------------------------------------------------- Main tab structure + my $activeClass = 1; + $r->print('<ul class="LC_TabContentBigger" id="mainnav">'); + if (($standard) && ($allowed) && (!$forcesupplement)) { + my $active = ''; + if($activeClass == 1){ + $active = 'class="active"'; + $activeClass = 0; + } + $r->print('<li '.$active.'onclick="javascript:showPage(this,\'Main Course Documents\',\'mainnav\',\'maincoursedoc\');">'.&mt('Main Course Documents').'</li>'); + } + if (!$forcestandard) { + my $active = ''; + if($activeClass == 1){ + $active = 'class="active"'; + } + $r->print('<li '.$active.'onclick="javascript:showPage(this,\'Supplemental Course Documents\',\'mainnav\',\'maincoursedoc\');">'.&mt('Supplemental Course Documents').'</li>'); } + $r->print('<li onclick="javascript:showPage(this,\'Special Admin Options\',\'mainnav\',\'maincoursedoc\');">'.&mt('Special Admin Options').'</li>'); + $r->print('</ul><div class="LC_ContentBoxSpecial" style="margin:0 0;padding:0 0;"><div id="maincoursedoc" style="margin:0 0;padding:0 0;">'); # --------------------------------------------------------- Standard documents - $r->print('<table class="LC_docs_documents">'); - if (($standard) && ($allowed) && (!$forcesupplement)) { - $r->print('<tr><td class="LC_docs_document">'); -# '<h2>'.&mt('Main Course Documents'). -# ($allowed?' '.$help{'Main_Course_Documents'}:'').'</h2>'); + my $active = 'style="display: none;"'; + if($activeClass == 0){ + $active = 'style="display: block;"'; + } + $r->print('<div class="LC_ContentBox" id="Main Course Documents" '.$active.'>'); + $r->print(&Apache::loncommon::help_open_topic('Docs_Adding_Course_Doc', + &mt('Editing the Table of Contents for your '.$type))); my $folder=$env{'form.folder'}; if ($folder eq '' || $folder eq 'supplemental') { $folder='default'; @@ -2870,16 +2929,6 @@ ENDCOURSEVERIFY } else { #$postexec='self.close();'; } - $hadchanges=0; - my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed, - $upload_output,$type); - if ($error) { - $r->print('<p><span class="LC_error">'.$error.'</span></p>'); - } - if ($hadchanges) { - &mark_hash_old(); - } - &changewarning($r,$postexec); my $folderseq='/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time. '.sequence'; my $pageseq = '/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time. @@ -2889,230 +2938,231 @@ ENDCOURSEVERIFY $container='page'; } my $readfile='/uploaded/'.$coursedom.'/'.$coursenum.'/'.$folder.'.'.$container; - $r->print(<<ENDFORM); -<table class="LC_docs_adddocs"> -<tr> -<th>$lt{'uplm'}</th> -<th>$lt{'impp'}</th> -<th>$lt{'spec'}</th> -</tr> -<tr> -<td> -$lt{'file'}:<br /> -<form name="uploaddocument" action="/adm/coursedocs" method="post" enctype="multipart/form-data"> -<input type="file" name="uploaddoc" size="40" /> -<br /> -$lt{'title'}:<br /> -<input type="text" size="50" name="comment" /> -$uploadtag -<input type="hidden" name="cmd" value="upload_default" /> -<br /> -<span class="LC_nobreak"> -<label>$lt{'parse'}? -<input type="checkbox" name="parserflag" checked="checked" /> -</label> -</span> -<br /> -<br /> -<span class="LC_nobreak"> -<input type="submit" value="$lt{'upld'}" /> - $help{'Uploading_From_Harddrive'} -</span> -</form> -</td> -<td> -<form action="/adm/coursedocs" method="post" name="simpleeditdefault"> -$lt{'pubd'}<br /> -$uploadtag -<input type="button" onClick="javascript:groupsearch()" value="$lt{'srch'}" /> -<br /> -<span class="LC_nobreak"> -<input type="button" onClick="javascript:groupimport();" value="$lt{'impo'}" /> -$help{'Importing_LON-CAPA_Resource'} -</span> -<br /> -<input type="button" onClick="javascript:groupopen(0,1,1);" value="$lt{'book'}" /> -<hr /> -<p> -$lt{'copm'}<br /> -<input type="text" size="40" name="importmap" /><br /> -<span class="LC_nobreak"><input type="button" -onClick="javascript:openbrowser('simpleeditdefault','importmap','sequence,page','')" -value="$lt{'selm'}" /> <input type="submit" name="loadmap" value="$lt{'load'}" /> -$help{'Load_Map'}</span> -</p> -</form> -<hr /> -<form action="/adm/groupsort" method="post" name="recover"> -<input type="button" name="recovermap" onClick="javascript:groupopen('$readfile',1,0)" value="$lt{'reco'}" /> -</form> -ENDFORM - unless ($env{'form.pagepath'}) { - $r->print(<<ENDFORM); -<hr /> -<form action="/adm/coursedocs" method="post" name="newext"> -$uploadtag -<input type="hidden" name="importdetail" value="" /> -<span class="LC_nobreak"> -<input name="newext" type="button" onClick="javascript:makenewext('newext');" -value="$lt{'extr'}" /> $help{'Adding_External_Resource'} -</span> -</form> -<br /><form action="/adm/imsimportdocs" method="post" name="ims"> -<input type="hidden" name="folder" value="$folder" /> -<input name="imsimport" type="button" value="$lt{'imsf'}" onClick="javascript:makeims();" /> -</form> -ENDFORM - } - $r->print('</td><td>'); + + + + my $recoverform=(<<RFORM); + <form action="/adm/groupsort" method="post" name="recover"> + <input type="button" name="recovermap" onClick="javascript:groupopen('$readfile',1,0)" value="$lt{'reco'}" /> + </form> +RFORM + + my $imspform=(<<IMSPFORM); + <form action="/adm/imsimportdocs" method="post" name="ims"> + <input type="hidden" name="folder" value="$folder" /> + <input name="imsimport" type="button" value="$lt{'imsf'}" onClick="javascript:makeims();" /> + </form> +IMSPFORM + + my $newnavform=(<<NNFORM); + <form action="/adm/coursedocs" method="post" name="newnav"> + $uploadtag + <input type="hidden" name="importdetail" + value="$lt{'navc'}=/adm/navmaps" /> + <span class="LC_nobreak"> + <input name="newnav" type="submit" value="$lt{'navc'}" /> + $help{'Navigate_Content'} + </span> + </form> +NNFORM + my $newsmppageform=(<<NSPFORM); + <form action="/adm/coursedocs" method="post" name="newsmppg"> + $uploadtag + <input type="hidden" name="importdetail" value="" /> + <span class="LC_nobreak"> + <input name="newsmppg" type="button" value="$lt{'sipa'}" + onClick="javascript:makesmppage();" /> $help{'Simple Page'} + </span> + </form> +NSPFORM + + my $newsmpproblemform=(<<NSPROBFORM); + <form action="/adm/coursedocs" method="post" name="newsmpproblem"> + $uploadtag + <input type="hidden" name="importdetail" value="" /> + <span class="LC_nobreak"> + <input name="newsmpproblem" type="button" value="$lt{'sipr'}" + onClick="javascript:makesmpproblem();" />$help{'Simple Problem'} + </span> + </form> + +NSPROBFORM + + my $newdropboxform=(<<NDBFORM); + <form action="/adm/coursedocs" method="post" name="newdropbox"> + $uploadtag + <input type="hidden" name="importdetail" value="" /> + <span class="LC_nobreak"> + <input name="newdropbox" type="button" value="$lt{'drbx'}" + onClick="javascript:makedropbox();" /> + </span> + </form> +NDBFORM + + my $newexuploadform=(<<NEXUFORM); + <form action="/adm/coursedocs" method="post" name="newexamupload"> + $uploadtag + <input type="hidden" name="importdetail" value="" /> + <span class="LC_nobreak"> + <input name="newexamupload" type="button" value="$lt{'scuf'}" + onClick="javascript:makeexamupload();" /> + $help{'Score_Upload_Form'} + </span> + </form> +NEXUFORM + + my $newbulform=(<<NBFORM); + <form action="/adm/coursedocs" method="post" name="newbul"> + $uploadtag + <input type="hidden" name="importdetail" value="" /> + <span class="LC_nobreak"> + <input name="newbulletin" type="button" value="$lt{'bull'}" + onClick="javascript:makebulboard();" /> + $help{'Bulletin Board'} + </span> + </form> +NBFORM + + my $newaboutmeform=(<<NAMFORM); + <form action="/adm/coursedocs" method="post" name="newaboutme"> + $uploadtag + <input type="hidden" name="importdetail" + value="$plainname=/adm/$udom/$uname/aboutme" /> + <span class="LC_nobreak"> + <input name="newaboutme" type="submit" value="$lt{'mypi'}" /> + $help{'My Personal Information Page'} + </span> + </form> +NAMFORM + + my $newaboutsomeoneform=(<<NASOFORM); + <form action="/adm/coursedocs" method="post" name="newaboutsomeone"> + $uploadtag + <input type="hidden" name="importdetail" value="" /> + <span class="LC_nobreak"> + <input name="newaboutsomeone" type="button" value="$lt{'abou'}" + onClick="javascript:makeabout();" /> + </span> + </form> +NASOFORM + + + my $newrosterform=(<<NROSTFORM); + <form action="/adm/coursedocs" method="post" name="newroster"> + $uploadtag + <input type="hidden" name="importdetail" + value="$lt{'rost'}=/adm/viewclasslist" /> + <span class="LC_nobreak"> + <input name="newroster" type="submit" value="$lt{'rost'}" /> + $help{'Course Roster'} + </span> + </form> +NROSTFORM + +my $specialdocumentsform; +my $newfolderform; + unless ($env{'form.pagepath'}) { my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); - $r->print(<<ENDFORM); -<br /><form action="/adm/coursedocs" method="post" name="newfolder"> -<input type="hidden" name="folderpath" value="$path" /> -<input type="hidden" name="importdetail" value="" /> -<span class="LC_nobreak"> -<input name="newfolder" type="button" -onClick="javascript:makenewfolder(this.form,'$folderseq');" -value="$lt{'newf'}" />$help{'Adding_Folders'} -</span> -</form> -<br /><form action="/adm/coursedocs" method="post" name="newpage"> -<input type="hidden" name="folderpath" value="$path" /> -<input type="hidden" name="importdetail" value="" /> -<span class="LC_nobreak"> -<input name="newpage" type="button" -onClick="javascript:makenewpage(this.form,'$pageseq');" -value="$lt{'newp'}" />$help{'Adding_Pages'} -</span> -</form> -<br /><form action="/adm/coursedocs" method="post" name="newsyl"> -$uploadtag -<input type="hidden" name="importdetail" -value="$lt{'syll'}=/public/$coursedom/$coursenum/syllabus" /> -<span class="LC_nobreak"> -<input name="newsyl" type="submit" value="$lt{'syll'}" /> - $help{'Syllabus'} -</span> -</form> -<br /><form action="/adm/coursedocs" method="post" name="newnav"> -$uploadtag -<input type="hidden" name="importdetail" -value="$lt{'navc'}=/adm/navmaps" /> -<span class="LC_nobreak"> -<input name="newnav" type="submit" value="$lt{'navc'}" /> -$help{'Navigate_Content'} -</span> -</form> -<br /><form action="/adm/coursedocs" method="post" name="newsmppg"> -$uploadtag -<input type="hidden" name="importdetail" value="" /> -<span class="LC_nobreak"> -<input name="newsmppg" type="button" value="$lt{'sipa'}" -onClick="javascript:makesmppage();" /> $help{'Simple Page'} -</span> -</form> -<br /><form action="/adm/coursedocs" method="post" name="newsmpproblem"> -$uploadtag -<input type="hidden" name="importdetail" value="" /> -<span class="LC_nobreak"> -<input name="newsmpproblem" type="button" value="$lt{'sipr'}" -onClick="javascript:makesmpproblem();" />$help{'Simple Problem'} -</span> -</form> -<br /><form action="/adm/coursedocs" method="post" name="newdropbox"> -$uploadtag -<input type="hidden" name="importdetail" value="" /> -<span class="LC_nobreak"> -<input name="newdropbox" type="button" value="$lt{'drbx'}" -onClick="javascript:makedropbox();" /> -</span> -</form> -<br /><form action="/adm/coursedocs" method="post" name="newexamupload"> -$uploadtag -<input type="hidden" name="importdetail" value="" /> -<span class="LC_nobreak"> -<input name="newexamupload" type="button" value="$lt{'scuf'}" -onClick="javascript:makeexamupload();" /> -$help{'Score_Upload_Form'} -</span> -</form> -<br /><form action="/adm/coursedocs" method="post" name="newbul"> -$uploadtag -<input type="hidden" name="importdetail" value="" /> -<span class="LC_nobreak"> -<input name="newbulletin" type="button" value="$lt{'bull'}" -onClick="javascript:makebulboard();" /> -$help{'Bulletin Board'} -</span> -</form> -<br /><form action="/adm/coursedocs" method="post" name="newaboutme"> -$uploadtag -<input type="hidden" name="importdetail" -value="$plainname=/adm/$udom/$uname/aboutme" /> -<span class="LC_nobreak"> -<input name="newaboutme" type="submit" value="$lt{'mypi'}" /> -$help{'My Personal Info'} -</span> -</form> -<br /><form action="/adm/coursedocs" method="post" name="newaboutsomeone"> -$uploadtag -<input type="hidden" name="importdetail" value="" /> -<span class="LC_nobreak"> -<input name="newaboutsomeone" type="button" value="$lt{'abou'}" -onClick="javascript:makeabout();" /> -</span> -</form> -<br /><form action="/adm/coursedocs" method="post" name="newgroupfiles"> -$uploadtag -<input type="hidden" name="importdetail" -value="$lt{'grpo'}=/adm/$coursedom/$coursenum/aboutme" /> -<span class="LC_nobreak"> -<input name="newgroupfiles" type="submit" value="$lt{'grpo'}" /> -$help{'Group Files'} -</span> -</form> -<br /><form action="/adm/coursedocs" method="post" name="newroster"> -$uploadtag -<input type="hidden" name="importdetail" -value="$lt{'rost'}=/adm/viewclasslist" /> -<span class="LC_nobreak"> -<input name="newroster" type="submit" value="$lt{'rost'}" /> -$help{'Course Roster'} -</span> -</form> -ENDFORM + + my $newpageform=(<<NPFORM); + <form action="/adm/coursedocs" method="post" name="newpage"> + <input type="hidden" name="folderpath" value="$path" /> + <input type="hidden" name="importdetail" value="" /> + <span class="LC_nobreak"> + <input name="newpage" type="button" + onClick="javascript:makenewpage(this.form,'$pageseq');" + value="$lt{'newp'}" />$help{'Adding_Pages'} + </span> + </form> +NPFORM + + $newfolderform=(<<NFFORM); + <form action="/adm/coursedocs" method="post" name="newfolder"> + <input type="hidden" name="folderpath" value="$path" /> + <input type="hidden" name="importdetail" value="" /> + <span class="LC_nobreak"> + <input name="newfolder" type="button" + onClick="javascript:makenewfolder(this.form,'$folderseq');" + value="$lt{'newf'}" />$help{'Adding_Folders'} + </span> + </form> +NFFORM + + my $newsylform=(<<NSYLFORM); + <form action="/adm/coursedocs" method="post" name="newsyl"> + $uploadtag + <input type="hidden" name="importdetail" + value="$lt{'syll'}=/public/$coursedom/$coursenum/syllabus" /> + <span class="LC_nobreak"> + <input name="newsyl" type="submit" value="$lt{'syll'}" /> + $help{'Syllabus'} + </span> + </form> +NSYLFORM + + my $newgroupfileform=(<<NGFFORM); + <form action="/adm/coursedocs" method="post" name="newgroupfiles"> + $uploadtag + <input type="hidden" name="importdetail" + value="$lt{'grpo'}=/adm/$coursedom/$coursenum/aboutme" /> + <span class="LC_nobreak"> + <input name="newgroupfiles" type="submit" value="$lt{'grpo'}" /> + $help{'Group Portfolio'} + </span> + </form> +NGFFORM + + $specialdocumentsform="<br />$newpageform<br />$newsylform<br />$newgroupfileform"; + } + $specialdocumentsform.="<br />$newnavform<br />$newsmppageform + <br />$newsmpproblemform<br />$newdropboxform + <br />$newexuploadform<br />$newbulform + <br />$newaboutmeform<br />$newaboutsomeoneform + <br />$newrosterform"; +if($env{'form.pagepath'}) { + $specialdocumentsform="<br />$newsmpproblemform<br />$newexuploadform"; +} + +my %orderhash = ( + 'aa' => 'New Document', + 'bb' => 'Published Documents', + 'cc' => 'Special Documents', + 'dd' => 'More Options', + 'zz' => 'Hide all Options', + ); +my %namehash = ( + 'New Document' => $fileuploadform.'<br />'.$newfolderform, + 'Published Documents' => $simpleeditdefaultform, + 'Special Documents' => $specialdocumentsform, + 'More Options' => $extresourcesform.'<br />'.$imspform.'<br />'.$recoverform, + ); +my $tid='1'; +my $content='content'; +my $navigation='navigation'; +my $varcd = 'Main Course Documents'; +$r->print(&generate_edit_table($tid,$content,$navigation,$varcd,\%namehash,\%orderhash)); + $hadchanges=0; + my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type); + if ($error) { + $r->print('<p><span class="LC_error">'.$error.'</span></p>'); } + if ($hadchanges) { + &mark_hash_old(); + } + + &changewarning($r,''); +$r->print('</div>'); if ($env{'form.pagepath'}) { - $r->print(<<ENDBLOCK); -<form action="/adm/coursedocs" method="post" name="newsmpproblem"> -$uploadtag -<input type="hidden" name="importdetail" value="" /> -<span class="LC_nobreak"> -<input name="newsmpproblem" type="button" value="$lt{'sipr'}" -onClick="javascript:makesmpproblem();" />$help{'Simple Problem'} -</span> -</form> -<br /><form action="/adm/coursedocs" method="post" name="newexamupload"> -$uploadtag -<input type="hidden" name="importdetail" value="" /> -<span class="LC_nobreak"> -<input name="newexamupload" type="button" value="$lt{'scuf'}" -onClick="javascript:makeexamupload();" /> -$help{'Score_Upload_Form'} -</span> -</form> -ENDBLOCK } - $r->print('</td></tr>'."\n". -'</table>'); - $r->print('</td></tr>'); } # ----------------------------------------------------- Supplemental documents if (!$forcestandard) { - $r->print('<tr><td class="LC_docs_document">'); -# '<h2>'.&mt('Supplemental Course Documents'). -# ($allowed?' '.$help{'Supplemental'}:'').'</h2>'); + my $active = 'style="display: none;"'; + if($activeClass == 1){ + $active = 'style="display: block;"'; + } + $r->print('<div class="LC_ContentBox" id="Supplemental Course Documents" '.$active.'>'); my $folder=$env{'form.folder'}; unless ($folder=~/^supplemental/) { $folder='supplemental'; @@ -3122,87 +3172,114 @@ ENDBLOCK $env{'form.folderpath'} = 'supplemental&'. &escape(&mt('Supplemental '.$type.' Documents')); } - my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type); - if ($error) { - $r->print('<p><span class="LC_error">'.$error.'</span></p>'); - } if ($allowed) { my $folderseq= '/uploaded/'.$coursedom.'/'.$coursenum.'/supplemental_'.time. '.sequence'; my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); - $r->print(<<ENDSUPFORM); -<table class="LC_docs_adddocs"><tr> -<th>$lt{'upls'}</th> -<th>$lt{'spec'}</th> -</tr> -<tr><td> -<form action="/adm/coursedocs" method="post" enctype="multipart/form-data"> -<input type="file" name="uploaddoc" size="40" /> -<br /> -<br /> -<span class="LC_nobreak"> -<label>$lt{'parse'}? -<input type="checkbox" name="parserflag" /> -</label> -</span> -<br /><br /> -$lt{'comment'}:<br /> -<textarea cols="50" rows="4" name="comment"> -</textarea> -<br /> -<input type="hidden" name="folderpath" value="$path" /> -<input type="hidden" name="cmd" value="upload_supplemental" /> -<span class="LC_nobreak"> -<input type="submit" value="$lt{'upld'}" /> - $help{'Uploading_From_Harddrive'} -</span> -</form> -</td> -<td> -<form action="/adm/coursedocs" method="post" name="supnewfolder"> -<input type="hidden" name="folderpath" value="$path" /> -<input type="hidden" name="importdetail" value="" /> -<span class="LC_nobreak"> -<input name="newfolder" type="button" -onClick="javascript:makenewfolder(this.form,'$folderseq');" -value="$lt{'newf'}" /> $help{'Adding_Folders'} -</span> -</form> -<br /><form action="/adm/coursedocs" method="post" name="supnewext"> -<input type="hidden" name="folderpath" value="$path" /> -<input type="hidden" name="importdetail" value="" /> -<span class="LC_nobreak"> -<input name="newext" type="button" -onClick="javascript:makenewext('supnewext');" -value="$lt{'extr'}" /> $help{'Adding_External_Resource'} -</span> -</form> -<br /><form action="/adm/coursedocs" method="post" name="supnewsyl"> -<input type="hidden" name="folderpath" value="$path" /> -<input type="hidden" name="importdetail" -value="Syllabus=/public/$coursedom/$coursenum/syllabus" /> -<span class="LC_nobreak"> -<input name="newsyl" type="submit" value="$lt{'syll'}" /> -$help{'Syllabus'} -</span> -</form> -<br /><form action="/adm/coursedocs" method="post" name="subnewaboutme"> -<input type="hidden" name="folderpath" value="$path" /> -<input type="hidden" name="importdetail" -value="$plainname=/adm/$udom/$uname/aboutme" /> -<span class="LC_nobreak"> -<input name="newaboutme" type="submit" value="$lt{'mypi'}" /> -$help{'My Personal Info'} -</span> -</form> -</td></tr> -</table></td></tr> -ENDSUPFORM + + my $supupdocform=(<<SUPDOCFORM); + <form action="/adm/coursedocs" method="post" enctype="multipart/form-data"> + $fileupload + <br /> + <br /> + <span class="LC_nobreak"> + $checkbox + </span> + <br /><br /> + $lt{'comment'}:<br /> + <textarea cols=50 rows=4 name='comment'> + </textarea> + <br /> + <input type="hidden" name="folderpath" value="$path" /> + <input type="hidden" name="cmd" value="upload_supplemental" /> + <span class="LC_nobreak"> + <input type="submit" value="$lt{'upld'}" /> + $help{'Uploading_From_Harddrive'} + </span> + </form> +SUPDOCFORM + + my $supnewfolderform=(<<SNFFORM); + <form action="/adm/coursedocs" method="post" name="supnewfolder"> + <input type="hidden" name="folderpath" value="$path" /> + <input type="hidden" name="importdetail" value="" /> + <span class="LC_nobreak"> + <input name="newfolder" type="button" + onClick="javascript:makenewfolder(this.form,'$folderseq');" + value="$lt{'newf'}" /> $help{'Adding_Folders'} + </span> + </form> +SNFFORM + + + my $supnewextform=(<<SNEFORM); + <form action="/adm/coursedocs" method="post" name="supnewext"> + <input type="hidden" name="folderpath" value="$path" /> + <input type="hidden" name="importdetail" value="" /> + <span class="LC_nobreak"> + <input name="newext" type="button" + onClick="javascript:makenewext('supnewext');" + value="$lt{'extr'}" /> $help{'Adding_External_Resource'} + </span> + </form> +SNEFORM + + my $supnewsylform=(<<SNSFORM); + <form action="/adm/coursedocs" method="post" name="supnewsyl"> + <input type="hidden" name="folderpath" value="$path" /> + <input type="hidden" name="importdetail" + value="Syllabus=/public/$coursedom/$coursenum/syllabus" /> + <span class="LC_nobreak"> + <input name="newsyl" type="submit" value="$lt{'syll'}" /> + $help{'Syllabus'} + </span> + </form> +SNSFORM + + my $supnewaboutmeform=(<<SNAMFORM); + <form action="/adm/coursedocs" method="post" name="subnewaboutme"> + <input type="hidden" name="folderpath" value="$path" /> + <input type="hidden" name="importdetail" + value="$plainname=/adm/$udom/$uname/aboutme" /> + <span class="LC_nobreak"> + <input name="newaboutme" type="submit" value="$lt{'mypi'}" /> + $help{'My Personal Information Page'} + </span> + </form> +SNAMFORM + + + +my %suporderhash = ( + 'ee' => 'New Document', + 'ff' => 'Special Documents', + 'zz' => 'Hide all Options', + ); + +my %supnamehash = ( + 'New Document' => $supupdocform, + 'Special Documents' => $supnewfolderform.'<br />'.$supnewextform.'<br />'.$supnewsylform.'<br />'.$supnewaboutmeform, + ); + +my $tid='2'; +my $content='content'; +my $navigation='navigation'; +my $varscd = 'Supplemental Course Documents'; + +$r->print(&generate_edit_table($tid,$content,$navigation,$varscd,\%supnamehash,\%suporderhash)); +my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type); + if ($error) { + $r->print('<p><span class="LC_error">'.$error.'</span></p>'); } - } - $r->print('</table>'); +$r->print('</div>'); + } + } +$r->print('<div class="LC_ContentBox" id="Special Admin Options" style="display: none;">'); +$r->print(&generate_admin_options($containertag,$uploadtag,\%help,\%env)); +$r->print('</div>'); +$r->print('</div>'); if ($allowed) { $r->print(' <form method="post" name="extimport" action="/adm/coursedocs"> @@ -3224,20 +3301,73 @@ ENDSUPFORM } $r->print(&Apache::loncommon::end_page()); return OK; +} + +sub generate_admin_options { + my ($containertag,$uploadtag,$help_ref,$env_ref) = @_; + my %lt=&Apache::lonlocal::texthash( + 'vc' => 'Verify Content', + 'cv' => 'Check/Set Resource Versions', + 'ls' => 'List Symbs', + 'sl' => 'Show Log' + ); + my %help = %{$help_ref}; + my %env = %{$env_ref}; + my $dumpbut=&dumpbutton(); + my $exportbut=&exportbutton(); + return (<<ENDOPTIONFORM); + <form action="/adm/coursedocs" method="post" name="courseverify"> + <ul style="list-style-type:none"> + <li> + <input type="submit" name="verify" value="$lt{'vc'}" />$help{'Verify_Content'} + </li> + <li> + <input type="submit" name="versions" value="$lt{'cv'}" />$help{'Check_Resource_Versions'} + </li> + <li> + $dumpbut + </li> + <li> + $exportbut + </li> + <li> + <input type="submit" name="listsymbs" value="$lt{'ls'}" /> + </li> + <li> + <input type="hidden" name="folder" value="$env{'form.folder'}" /> + <input type="submit" name="docslog" value="$lt{'sl'}" /> + </li> + </ul> + </form> +<!-- <div style="clear: both; height: 0px;"> </div>--> +ENDOPTIONFORM + } -sub concept_test_builder { - my ($r) = @_; - $r->print(&Apache::loncommon::start_page('Assemble Test')); - &Apache::londocsgci::setdefaults(); - if ($env{'form.phase'} eq 'storemap') { - &Apache::londocsgci::evaluate(); - &Apache::londocsgci::store($r); - } - &Apache::londocsgci::load(); - &Apache::londocsgci::listresources($r); - $r->print(&Apache::loncommon::end_page()); - return; + +sub generate_edit_table { + my ($tid,$content,$navigation,$varcd,$namehash_ref,$orderhash_ref) = @_; + my %namehash = %{$namehash_ref}; + my %orderhash = %{$orderhash_ref}; + my $form; + + $form = '<div class="LC_ContentBoxSpecial"><h4 class="LC_hcell">'.&mt($varcd).'</h4>'; + $form .= '<ul id="'.$navigation.$tid.'" class="LC_TabContent">'; + foreach my $name (sort(keys(%orderhash))){ + if($name eq 'zz'){ + $form .= '<span class="LC_Right"><li onclick="javascript:hideAll(this, \''.$navigation.$tid.'\' ,\''.$content.$tid.'\');" class="active">'.&mt($orderhash{$name}).'</li></span>'; + }else{ + $form .= '<li onclick="javascript:showPage(this, \''.$tid.$orderhash{$name}.'\', \''.$navigation.$tid.'\',\''.$content.$tid.'\');">'.&mt($orderhash{$name}).'</li>'; + } + } + $form .= '</ul>'; + $form .= '<div id="'.$content.$tid.'" style="padding: 0 0; margin: 0 0;">'; + foreach my $field (keys(%namehash)){ + $form .= '<div id="'.$tid.$field.'" class="LC_ContentBox" style="display: none;">'.$namehash{$field}.'</div>'; + } + $form .= '</div></div>'; + + return $form; } sub editing_js { @@ -3249,12 +3379,12 @@ sub editing_js { p_mnp => 'Name of New Page', t_mnp => 'New Page', p_mxu => 'Title for the Uploaded Score', - p_msp => 'Name of the Simple Course Page', + p_msp => 'Name of Simple Course Page', p_msb => 'Title for the Problem', p_mdb => 'Title for the Drop Box', p_mbb => 'Title for the Discussion Board', - p_mab => "Enter user:domain for User's 'About Me' Page", - p_mab2 => "About [_99]", + p_mab => "Enter user:domain for User's Personal Information Page", + p_mab2 => 'Personal Information Page of ', p_mab_alrt1 => 'Not a valid user:domain', p_mab_alrt2 => 'Please enter both user and domain in the format user:domain', p_chn => 'New Title', @@ -3302,7 +3432,7 @@ function edittext(targetname,residx,titl function makeexamupload() { var title=prompt('$lt{"p_mxu"}'); - if (title) { + if (title) { this.document.forms.newexamupload.importdetail.value= escape(title)+'=/res/lib/templates/examupload.problem'; this.document.forms.newexamupload.submit(); @@ -3311,7 +3441,7 @@ function makeexamupload() { function makesmppage() { var title=prompt('$lt{"p_msp"}'); - if (title) { + if (title) { this.document.forms.newsmppg.importdetail.value= escape(title)+'=/adm/$udom/$uname/$now/smppg'; this.document.forms.newsmppg.submit(); @@ -3320,7 +3450,7 @@ function makesmppage() { function makesmpproblem() { var title=prompt('$lt{"p_msb"}'); - if (title) { + if (title) { this.document.forms.newsmpproblem.importdetail.value= escape(title)+'=/res/lib/templates/simpleproblem.problem'; this.document.forms.newsmpproblem.submit(); @@ -3329,7 +3459,7 @@ function makesmpproblem() { function makedropbox() { var title=prompt('$lt{"p_mdb"}'); - if (title) { + if (title) { this.document.forms.newdropbox.importdetail.value= escape(title)+'=/res/lib/templates/DropBox.problem'; this.document.forms.newdropbox.submit(); @@ -3354,91 +3484,120 @@ function makeabout() { if ((comp[0]) && (comp[1])) { this.document.forms.newaboutsomeone.importdetail.value= '$lt{"p_mab2"}'+escape(user)+'=/adm/'+comp[1]+'/'+comp[0]+'/aboutme'; - this.document.forms.newaboutsomeone.submit(); - } else { - alert("$lt{'p_mab_alrt1'}"); - } - } else { - alert("$lt{'p_mab_alrt2'}"); - } + this.document.forms.newaboutsomeone.submit(); + } else { + alert("$lt{'p_mab_alrt1'}"); } +} else { + alert("$lt{'p_mab_alrt2'}"); +} +} } function makeims() { - var caller = document.forms.ims.folder.value; - var newlocation = "/adm/imsimportdocs?folder="+caller+"&phase=one"; - newWindow = window.open("","IMSimport","HEIGHT=700,WIDTH=750,scrollbars=yes"); - newWindow.location.href = newlocation; +var caller = document.forms.ims.folder.value; +var newlocation = "/adm/imsimportdocs?folder="+caller+"&phase=one"; +newWindow = window.open("","IMSimport","HEIGHT=700,WIDTH=750,scrollbars=yes"); +newWindow.location.href = newlocation; } function finishpick() { - var title=this.document.forms.extimport.title.value; - var url=this.document.forms.extimport.url.value; - var form=this.document.forms.extimport.useform.value; - var residx=this.document.forms.extimport.residx.value; - eval('this.document.forms.'+form+'.importdetail.value="'+title+'='+url+'='+residx+'";this.document.forms.'+form+'.submit();'); +var title=this.document.forms.extimport.title.value; +var url=this.document.forms.extimport.url.value; +var form=this.document.forms.extimport.useform.value; +var residx=this.document.forms.extimport.residx.value; +eval('this.document.forms.'+form+'.importdetail.value="'+title+'='+url+'='+residx+'";this.document.forms.'+form+'.submit();'); } function changename(folderpath,index,oldtitle,container,pagesymb) { - var title=prompt('$lt{"p_chn"}',oldtitle); - if (title) { - this.document.forms.renameform.markcopy.value=-1; - this.document.forms.renameform.title.value=title; - this.document.forms.renameform.cmd.value='rename_'+index; - if (container == 'sequence') { - this.document.forms.renameform.folderpath.value=folderpath; - } - if (container == 'page') { - this.document.forms.renameform.pagepath.value=folderpath; - this.document.forms.renameform.pagesymb.value=pagesymb; - } - this.document.forms.renameform.submit(); - } +var title=prompt('$lt{"p_chn"}',oldtitle); +if (title) { +this.document.forms.renameform.markcopy.value=-1; +this.document.forms.renameform.title.value=title; +this.document.forms.renameform.cmd.value='rename_'+index; +if (container == 'sequence') { + this.document.forms.renameform.folderpath.value=folderpath; +} +if (container == 'page') { + this.document.forms.renameform.pagepath.value=folderpath; + this.document.forms.renameform.pagesymb.value=pagesymb; +} +this.document.forms.renameform.submit(); +} } function removeres(folderpath,index,oldtitle,container,pagesymb,skip_confirm) { - if (skip_confirm || confirm('$lt{"p_rmr1"}\\n\\n$lt{"p_rmr2a"} "'+oldtitle+'" $lt{"p_rmr2b"}')) { - this.document.forms.renameform.markcopy.value=-1; - this.document.forms.renameform.cmd.value='del_'+index; - if (container == 'sequence') { - this.document.forms.renameform.folderpath.value=folderpath; - } - if (container == 'page') { - this.document.forms.renameform.pagepath.value=folderpath; - this.document.forms.renameform.pagesymb.value=pagesymb; - } - this.document.forms.renameform.submit(); - } +if (skip_confirm || confirm('$lt{"p_rmr1"}\\n\\n$lt{"p_rmr2a"} "'+oldtitle+'" $lt{"p_rmr2b"}')) { +this.document.forms.renameform.markcopy.value=-1; +this.document.forms.renameform.cmd.value='del_'+index; +if (container == 'sequence') { + this.document.forms.renameform.folderpath.value=folderpath; +} +if (container == 'page') { + this.document.forms.renameform.pagepath.value=folderpath; + this.document.forms.renameform.pagesymb.value=pagesymb; +} +this.document.forms.renameform.submit(); +} } function cutres(folderpath,index,oldtitle,container,pagesymb,folder,skip_confirm) { - if (skip_confirm || confirm('$lt{"p_ctr1a"}\\n$lt{"p_ctr1b"}\\n\\n$lt{"p_ctr2a"} "'+oldtitle+'" $lt{"p_ctr2b"}')) { - this.document.forms.renameform.cmd.value='cut_'+index; - this.document.forms.renameform.markcopy.value=index; - this.document.forms.renameform.copyfolder.value=folder+'.'+container; - if (container == 'sequence') { - this.document.forms.renameform.folderpath.value=folderpath; - } - if (container == 'page') { - this.document.forms.renameform.pagepath.value=folderpath; - this.document.forms.renameform.pagesymb.value=pagesymb; - } - this.document.forms.renameform.submit(); - } +if (skip_confirm || confirm('$lt{"p_ctr1a"}\\n$lt{"p_ctr1b"}\\n\\n$lt{"p_ctr2a"} "'+oldtitle+'" $lt{"p_ctr2b"}')) { +this.document.forms.renameform.cmd.value='cut_'+index; +this.document.forms.renameform.markcopy.value=index; +this.document.forms.renameform.copyfolder.value=folder+'.'+container; +if (container == 'sequence') { + this.document.forms.renameform.folderpath.value=folderpath; +} +if (container == 'page') { + this.document.forms.renameform.pagepath.value=folderpath; + this.document.forms.renameform.pagesymb.value=pagesymb; +} +this.document.forms.renameform.submit(); +} } function markcopy(folderpath,index,oldtitle,container,pagesymb,folder) { - this.document.forms.renameform.markcopy.value=index; - this.document.forms.renameform.copyfolder.value=folder+'.'+container; - if (container == 'sequence') { - this.document.forms.renameform.folderpath.value=folderpath; - } - if (container == 'page') { - this.document.forms.renameform.pagepath.value=folderpath; - this.document.forms.renameform.pagesymb.value=pagesymb; - } - this.document.forms.renameform.submit(); +this.document.forms.renameform.markcopy.value=index; +this.document.forms.renameform.copyfolder.value=folder+'.'+container; +if (container == 'sequence') { +this.document.forms.renameform.folderpath.value=folderpath; +} +if (container == 'page') { +this.document.forms.renameform.pagepath.value=folderpath; +this.document.forms.renameform.pagesymb.value=pagesymb; +} +this.document.forms.renameform.submit(); +} + +function unselectInactive(nav) { +currentNav = document.getElementById(nav); +currentLis = currentNav.getElementsByTagName('LI'); +for (i = 0; i < currentLis.length; i++) { + currentLis[i].className = 'i'; +} +} + +function hideAll(current, nav, data) { +unselectInactive(nav); +current.className = 'active'; +currentData = document.getElementById(data); +currentDivs = currentData.getElementsByTagName('DIV'); +for (i = 0; i < currentDivs.length; i++) { + if(currentDivs[i].className == 'LC_ContentBox'){ + currentDivs[i].style.display = 'none'; + } +} +} + +function showPage(current, pageId, nav, data) { + hideAll(current, nav, data); + unselectInactive(nav); + current.className = 'active'; + currentData = document.getElementById(pageId); + currentData.style.display = 'block'; + return false; } ENDNEWSCRIPT @@ -3466,7 +3625,7 @@ Available help topics =item mapread() -Mapread read maps into LONCAPA::map:: global arrays +Mapread read maps into LONCAPA::map:: global arrays @order and @resources, determines status sets @order - pointer to resources in right order sets @resources - array with the resources with correct idx