'.
&Apache::lonnet::gettitle($linkurl).
@@ -2419,13 +2499,12 @@ sub changewarning {
$help{'Caching'}.''."\n\n");
}
-# =========================================== Breadcrumbs for special functions
sub init_breadcrumbs {
my ($form,$text)=@_;
&Apache::lonhtmlcommon::clear_breadcrumbs();
&Apache::lonhtmlcommon::add_breadcrumb({href=>"/adm/coursedocs",
- text=>&Apache::loncommon::course_type()." Documents",
+ text=>"Edit ".&Apache::loncommon::course_type(),
faq=>273,
bug=>'Instructor Interface',
help => 'Docs_Adding_Course_Doc'});
@@ -2435,7 +2514,9 @@ sub init_breadcrumbs {
bug=>'Instructor Interface'});
}
-# ================================================================ Main Handler
+
+
+
sub handler {
my $r = shift;
&Apache::loncommon::content_type($r,'text/html');
@@ -2443,14 +2524,23 @@ 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 ('Adding_Course_Doc','Main_Course_Documents',
- 'Adding_External_Resource','Navigate_Content',
- 'Adding_Folders','Docs_Overview', 'Load_Map',
- 'Supplemental','Score_Upload_Form','Adding_Pages',
- 'Importing_LON-CAPA_Resource','Uploading_From_Harddrive',
- 'Check_Resource_Versions','Verify_Content') {
- $help{$_}=&Apache::loncommon::help_open_topic('Docs_'.$_);
+ foreach my $topic ('Adding_Course_Doc','Main_Course_Documents',
+ 'Adding_External_Resource','Navigate_Content',
+ 'Adding_Folders','Docs_Overview', 'Load_Map',
+ 'Supplemental','Score_Upload_Form','Adding_Pages',
+ 'Importing_LON-CAPA_Resource','Uploading_From_Harddrive',
+ 'Check_Resource_Versions','Verify_Content') {
+ $help{$topic}=&Apache::loncommon::help_open_topic('Docs_'.$topic);
}
# Composite help files
$help{'Syllabus'} = &Apache::loncommon::help_open_topic(
@@ -2499,6 +2589,26 @@ sub handler {
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
['folderpath','pagepath',
'pagesymb']);
+# No folderpath, no pagepath, see if we have something stored
+ if ((!$env{'form.folderpath'}) && (!$env{'form.pagepath'})) {
+ &Apache::loncommon::restore_course_settings('docs_folderpath',
+ {'folderpath' => 'scalar'});
+ }
+ if (!$env{'form.folderpath'}) {
+ &Apache::loncommon::restore_course_settings('docs_folderpath',
+ {'pagepath' => 'scalar'});
+ }
+ if ($env{'form.pagepath'}) {
+ $env{'form.folderpath'}='';
+ }
+ if ($env{'form.folderpath'} =~ /^supplemental_\d+/) {
+ $env{'form.folderpath'} = 'supplemental&'.
+ &escape(&mt('Supplemental '.$type.' Documents')).'&'.
+ $env{'form.folderpath'};
+ }
+ &Apache::loncommon::store_course_settings('docs_folderpath',
+ {'pagepath' => 'scalar',
+ 'folderpath' => 'scalar'});
if ($env{'form.folderpath'}) {
my (@folderpath)=split('&',$env{'form.folderpath'});
$env{'form.foldername'}=&unescape(pop(@folderpath));
@@ -2549,8 +2659,10 @@ sub handler {
}
# -------------------------------------------------------------------- Body tag
$script = '';
+ my $brcrum = [{href=>"/adm/createuser",text=>"$type Documents"}];
$r->print(&Apache::loncommon::start_page("$type Documents", $script,
- {'force_register' => $showdoc,}).
+ {'force_register' => $showdoc,
+ 'bread_crumbs' => $brcrum}).
&Apache::loncommon::help_open_menu('','',273,'RAT'));
my %allfiles = ();
@@ -2560,9 +2672,13 @@ sub handler {
if (($env{'form.uploaddoc.filename'}) &&
($env{'form.cmd'}=~/^upload_(\w+)/)) {
# Process file upload - phase one - upload and parse primary file.
+ undef($hadchanges);
$upload_result = &process_file_upload(\$upload_output,$coursenum,
$coursedom,\%allfiles,
\%codebase,$1);
+ if ($hadchanges) {
+ &mark_hash_old();
+ }
if ($upload_result eq 'phasetwo') {
$r->print($upload_output);
}
@@ -2585,12 +2701,12 @@ sub handler {
}
my @attributes = ();
if ($env{'form.embedded_attrib_'.$i} =~ /:/) {
- @attributes = split/:/,$env{'form.embedded_attrib_'.$i};
+ @attributes = split(/:/,$env{'form.embedded_attrib_'.$i});
} else {
@attributes = ($env{'form.embedded_attrib_'.$i});
}
- foreach (@attributes) {
- push(@{$attribs{$i}},&unescape($_));
+ foreach my $attr (@attributes) {
+ push(@{$attribs{$i}},&unescape($attr));
}
if ($javacodebase) {
$codebase{$i} = $javacodebase;
@@ -2608,7 +2724,7 @@ sub handler {
my $updateflag = 0;
my $getstatus = &Apache::lonnet::getuploaded('GET',$primary_url,$coursedom,$coursenum,\$content,\$rtncode);
if ($getstatus eq 'ok') {
- foreach my $item (keys %newname) {
+ foreach my $item (keys(%newname)) {
if ($newname{$item} ne $origname{$item}) {
my $attrib_regexp = '';
if (@{$attribs{$item}} > 1) {
@@ -2657,13 +2773,14 @@ sub handler {
'extr' => 'External Resource',
'syll' => 'Syllabus',
'navc' => 'Navigate Contents',
- 'sipa' => 'Simple Page',
+ 'sipa' => 'Simple Course Page',
'sipr' => 'Simple Problem',
'drbx' => 'Drop Box',
'scuf' => 'Score Upload Form',
- 'bull' => 'Bulletin Board',
- 'mypi' => 'My Personal Info',
- 'grpo' => 'Group Files',
+ 'bull' => 'Discussion Board',
+ 'mypi' => 'My Personal Information Page',
+ 'grpo' => 'Group Portfolios',
+ 'rost' => 'Course Roster',
'abou' => 'About User',
'imsf' => 'Import IMS package',
'file' => 'File',
@@ -2734,7 +2851,8 @@ ENDCOURSEVERIFY
&mt('Editing the Table of Contents for your '.$type)));
}
# --------------------------------------------------------- Standard documents
- $r->print('');#border=2 cellspacing=4 cellpadding=4>');
+ $r->print('');
+
if (($standard) && ($allowed) && (!$forcesupplement)) {
$r->print('');
# ''.&mt('Main Course Documents').
@@ -2743,6 +2861,8 @@ ENDCOURSEVERIFY
if ($folder eq '' || $folder eq 'supplemental') {
$folder='default';
$env{'form.folderpath'}='default&'.&escape(&mt('Main '.$type.' Documents'));
+ $uploadtag = '';
}
my $postexec='';
if ($folder eq 'default') {
@@ -2751,9 +2871,13 @@ ENDCOURSEVERIFY
#$postexec='self.close();';
}
$hadchanges=0;
- &editor($r,$coursenum,$coursedom,$folder,$allowed,$upload_output);
+ my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,
+ $upload_output,$type);
+ if ($error) {
+ $r->print(''.$error.' ');
+ }
if ($hadchanges) {
- &mark_hash_old()
+ &mark_hash_old();
}
&changewarning($r,$postexec);
my $folderseq='/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time.
@@ -2785,7 +2909,7 @@ $uploadtag
@@ -2865,7 +2989,7 @@ value="$lt{'newp'}" />$help{'Adding_Page
| ');
if ($allowed) {
- $r->print('');
+ $r->print('
+');
}
} else {
unless ($upload_result eq 'phasetwo') {
@@ -3082,16 +3224,52 @@ ENDSUPFORM
}
$r->print(&Apache::loncommon::end_page());
return OK;
-}
+}
+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 editing_js {
my ($udom,$uname) = @_;
my $now = time();
+ my %lt = &Apache::lonlocal::texthash(
+ p_mnf => 'Name of New Folder',
+ t_mnf => 'New Folder',
+ 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_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_alrt1 => 'Not a valid user:domain',
+ p_mab_alrt2 => 'Please enter both user and domain in the format user:domain',
+ p_chn => 'New Title',
+ p_rmr1 => 'WARNING: Removing a resource makes associated grades and scores inaccessible!',
+ p_rmr2a => 'Remove[_99]',
+ p_rmr2b => '?[_99]',
+ p_ctr1a => 'WARNING: Cutting a resource makes associated grades and scores inaccessible!',
+ p_ctr1b => 'Grades remain inaccessible if resource is pasted into another folder.',
+ p_ctr2a => 'Cut[_98]',
+ p_ctr2b => '?[_98]'
+ );
return < |