[LON-CAPA-cvs] cvs: loncom /interface lonsyllabus.pm

raeburn raeburn at source.lon-capa.org
Thu Nov 8 16:33:11 EST 2012


raeburn		Thu Nov  8 21:33:11 2012 EDT

  Modified files:              
    /loncom/interface	lonsyllabus.pm 
  Log:
  - Consistent Interface for templated pages (bug 6128).
  - Functions for Templated Syllabus page moved into standard location.
  
  
-------------- next part --------------
Index: loncom/interface/lonsyllabus.pm
diff -u loncom/interface/lonsyllabus.pm:1.112 loncom/interface/lonsyllabus.pm:1.113
--- loncom/interface/lonsyllabus.pm:1.112	Thu Oct  4 13:41:10 2012
+++ loncom/interface/lonsyllabus.pm	Thu Nov  8 21:33:10 2012
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Syllabus
 #
-# $Id: lonsyllabus.pm,v 1.112 2012/10/04 13:41:10 bisitz Exp $
+# $Id: lonsyllabus.pm,v 1.113 2012/11/08 21:33:10 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -52,7 +52,7 @@
     my (undef,undef,$cdom,$cnum)=split(/\//,$r->uri);
 # ------------------------------------------------------------ Get query string
     &Apache::loncommon::get_unprocessed_cgi
-                        ($ENV{'QUERY_STRING'},['forcestudent','register','forceedit']);
+                        ($ENV{'QUERY_STRING'},['register','forceedit']);
 # ----------------------------------------------------- Is this even a course?
     my $homeserver=&Apache::lonnet::homeserver($cnum,$cdom);
     if ($homeserver eq 'no_host') {
@@ -61,6 +61,12 @@
         &Apache::loncommon::simple_error_page($r,'No syllabus available',
                           'No syllabus available');
         return OK;
+    } elsif (!&Apache::lonnet::is_course($cdom,$cnum)) {
+        &Apache::loncommon::content_type($r,'text/html');
+        $r->send_http_header;
+        &Apache::loncommon::simple_error_page($r,'No syllabus available',
+                          'The course/community for which the syllabus was requested does not exist.');
+        return OK;
     }
 # ------------------------------------- There is such a course, get environment
     my %courseenv=&Apache::lonnet::dump('environment',$cdom,$cnum);
@@ -97,11 +103,11 @@
        'kkk_textbook'       => 'Textbook',
        'lll_includeurl'     => 'URLs To Include in Syllabus');
 # --------------------------------------------------------------- Force Student
-    my $forcestudent='';
-    if ($env{'form.forcestudent'}) { $forcestudent='student'; };
-    my $forceedit='';
-    if ($env{'form.forceedit'}) { $forceedit='edit'; }
-
+    my ($forceedit,$forcestudent);
+    if ($env{'form.forceedit'}) { $forceedit=1; }
+    if (!$forceedit) {
+        $forcestudent=1;
+    }
 # ----------------------------------------------------------------- Make header
     if ($target ne 'tex') {
         my $rss_link = &Apache::lonrss::rss_link($cnum,$cdom);
@@ -133,34 +139,39 @@
 
 ENDSCRIPT
         }
+        my $forcereg;
+        if ($env{'form.register'}) {
+            $forcereg = 1;
+        }
+        my $brcrum = [];
+        if ($env{'form.backto'} eq 'coursecatalog') {
+            &Apache::lonhtmlcommon::clear_breadcrumbs();
+            $brcrum = [{href=>"javascript:ToCatalog();",
+                        text=>&mt('Course/Community Catalog'),
+                        no_mt=>1}
+                      ];
+            if ($env{'form.coursenum'} ne '') {
+                push(@{$brcrum},
+                      {href=>"javascript:ToCatalog('details')",
+                       text=>"Course details"});
+            }
+            push(@{$brcrum},
+                  {href=>$r->uri,
+                   text=>"Course syllabus"});
+        }   
         my $start_page =
          &Apache::loncommon::start_page("Syllabus", $rss_link.$js,
                        {'function'       => undef,
                         'domain'         => $cdom,
-                        'force_register' =>
-                        $env{'form.register'},});
+                        'force_register' => $forcereg,
+                        'bread_crumbs'   => $brcrum,
+                       });
 
         $r->print($start_page);
-        if ($env{'form.backto'} eq 'coursecatalog') {
-            &Apache::lonhtmlcommon::clear_breadcrumbs();
-            &Apache::lonhtmlcommon::add_breadcrumb
-                ({href=>"javascript:ToCatalog()",
-                text=>"Course/Community Catalog"});
-            if ($env{'form.coursenum'} ne '') {
-                &Apache::lonhtmlcommon::add_breadcrumb
-                    ({href=>"javascript:ToCatalog('details')",
-                    text=>"Course details"});
-            }
-            &Apache::lonhtmlcommon::add_breadcrumb
-                ({href=>$r->uri,
-                text=>"Course syllabus"});
-            $r->print(&Apache::lonhtmlcommon::breadcrumbs());
-        }
     }
 # ---------------------------------------------------------- Load syllabus info
     my %syllabus=&Apache::lonnet::dump('syllabus',$cdom,$cnum);
     my $allowed=0;
-    my $privileged=0;
 
 # This handler might be called anonymously ...
 # ----------------------------------------------------- Only if not public call
@@ -170,13 +181,9 @@
         && $cdom eq $env{'course.'.$env{'request.course.id'}.'.domain'}
         && $cnum eq $env{'course.'.$env{'request.course.id'}.'.num'}) {
             $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'});
-            $privileged=$allowed;
-            if (($syllabus{'uploaded.lastmodified'}) && (!$forceedit)) {
-                $forcestudent='student';
-            }
             if ($forcestudent or $target eq 'tex') { $allowed=0; }
         }
-		#store what the user typed in
+#store what the user typed in
         if (($allowed) && ($env{'form.storesyl'})) {
             foreach my $syl_field (keys(%syllabusfields)) {
                 my $field=$env{'form.'.$syl_field};
@@ -225,95 +232,72 @@
         }
     }
 
-#--------Functions
-    if( ($allowed || $privileged) && $target ne 'tex') {
-        my $functions=&Apache::lonhtmlcommon::start_funclist();
-        if ($allowed) {
-			#if you have the register flag, keep it
-			if($env{'form.register'} == 1) {
-            	$functions.=&Apache::lonhtmlcommon::add_item_funclist(
-                          '<a href="'.$r->uri.'?forcestudent=1&register=1">'
-                           .&mt('Show Public View').'</a>'
-                           .&Apache::loncommon::help_open_topic(
-                                'Uploaded_Templates_PublicView'));
-			} else {
-            	$functions.=&Apache::lonhtmlcommon::add_item_funclist(
-                          '<a href="'.$r->uri.'?forcestudent=1">'
-                           .&mt('Show Public View').'</a>'
-                           .&Apache::loncommon::help_open_topic(
-                                'Uploaded_Templates_PublicView'));
-			}
-        } elsif ($privileged) {
-			if($env{'form.register'} == 1) {
-	            $functions.=&Apache::lonhtmlcommon::add_item_funclist(
-                           '<a href="'.$r->uri.'?forceedit=1&register=1">'
-                            .&mt('Edit').'</a>');
-			} else {
-	            $functions.=&Apache::lonhtmlcommon::add_item_funclist(
-                           '<a href="'.$r->uri.'?forceedit=1">'
-                            .&mt('Edit').'</a>');
-			}
+    if ($allowed) {
+#---------------------------------- Print External URL Syllabus Info if editing
+        if ($target ne 'tex') {
+            my $protocol = $Apache::lonnet::protocol{$homeserver};
+            $protocol = 'http' if ($protocol ne 'https');
+            $r->print('<div class="LC_info">'
+                     .'<p>'
+                     .&mt('This syllabus can be publicly viewed at [_1]'
+                          ,'<tt>'.$protocol.'://'.&Apache::lonnet::hostname($homeserver).$r->uri.'</tt>')
+                     .' '.&Apache::loncommon::help_open_topic('Syllabus_ExtLink')
+                     .'</p>'
+                     .'<p>'
+                     .&mt('Instead of using this template you can specify an external URL as Syllabus in the [_1]Course Configuration[_2].'
+                          ,'<a href="/adm/courseprefs?actions=courseinfo&phase=display">','</a>')
+                     .'</p>'
+                     .'</div>');
         }
-
-        $functions.=&Apache::lonhtmlcommon::end_funclist();
-        $r->print(&Apache::loncommon::head_subbox($functions));
-    }
-
-#---------------------Print External URL Syllabus Info and Help Text
-    if( ($allowed) && ($target ne 'tex') ) {
-        my $protocol = $Apache::lonnet::protocol{$homeserver};
-          $protocol = 'http' if ($protocol ne 'https');
-        $r->print('<p class="LC_info">'
-                 .&mt('This syllabus can be publicly viewed at [_1]'
-                     ,'<tt>'.$protocol.'://'.&Apache::lonnet::hostname($homeserver).$r->uri.'</tt>')
-                 .' '.&Apache::loncommon::help_open_topic('Syllabus_ExtLink')
-                 .'</p>'
-                 .'<p class="LC_info">'
-                 .&mt('Instead of using this template you can specify an external URL as Syllabus in the [_1]Course Configuration[_2].'
-                     ,'<a href="/adm/courseprefs?actions=courseinfo&phase=display">','</a>')
-                 .'</p>'
-        );
-        #-Print Help Text
-        $r->print(&Apache::loncommon::help_open_topic( 
-                        'Uploaded_Templates_TextBoxes',
-                        &mt('Help with filling in text boxes')));
-    }
-
-#----------Print last update
-    my $lastmod=$syllabus{'uploaded.lastmodified'};
-    $lastmod=($lastmod?&Apache::lonlocal::locallocaltime($lastmod):&mt('never'));
-    my $who;
-    if (($env{'user.name'} ne 'public') && ($env{'user.domain'} ne 'public')) {
-        $who = &Apache::loncommon::aboutmewrapper(
-                   &Apache::loncommon::plainname($syllabus{'uploaded.name'},
-                   $syllabus{'uploaded.domain'}),$syllabus{'uploaded.name'},
-                   $syllabus{'uploaded.domain'});
     } else {
-        # Public user?
-        # Only display name of user, but no link to personal information page
-        $who = &Apache::loncommon::plainname(
-                   $syllabus{'uploaded.name'},
-                   $syllabus{'uploaded.domain'});
-    }
-
-    if ($target ne 'tex') {
-        $r->print('<div class="LC_info">'.&mt('Last updated').': '.
-            $lastmod . ' '.
-            ($who ? &mt('by').' '.$who
+#--------------------------------------------- Print last update unless editing
+        my $lastmod=$syllabus{'uploaded.lastmodified'};
+        $lastmod=($lastmod?&Apache::lonlocal::locallocaltime($lastmod):&mt('never'));
+        my $who;
+        if ($syllabus{'uploaded.lastmodified'}) {
+            if (($env{'user.name'} ne 'public') && ($env{'user.domain'} ne 'public')) {
+                $who = &Apache::loncommon::aboutmewrapper(
+                       &Apache::loncommon::plainname($syllabus{'uploaded.name'},
+                       $syllabus{'uploaded.domain'}),$syllabus{'uploaded.name'},
+                       $syllabus{'uploaded.domain'});
+            } else {
+# Public user?
+# Only display name of user, but no link to personal information page
+                $who = &Apache::loncommon::plainname(
+                           $syllabus{'uploaded.name'},
+                           $syllabus{'uploaded.domain'});
+            }
+        }
+        if ($target ne 'tex') {
+            $r->print('<div class="LC_info">'.&mt('Last updated').': '.
+                      $lastmod . ' '.
+                      ($who ? &mt('by').' '.$who
                            : '' ) .
-             '</div>' );
-
-    } else {
-        $r->print('\\\\ '.&mt('Last updated').': '.$lastmod.' '.
-            ($who? &mt('by').'\\\\ '.
-                    &Apache::loncommon::plainname($syllabus{'uploaded.name'},$syllabus{'uploaded.domain'})
-                  :'')
-             .'\\\\');
+                      '</div>' );
+        } else {
+            $r->print('\\\\ '.&mt('Last updated').': '.$lastmod.' '.
+                     ($who? &mt('by').'\\\\ '.
+                     &Apache::loncommon::plainname($syllabus{'uploaded.name'},$syllabus{'uploaded.domain'})
+                     :'')
+                    .'\\\\');
+        }
     }
-#----------------------------Print Headtitle
+
+#-------------------------------------------------------------- Print Headtitle
     if ($target ne 'tex') {
-        $r->print('<h1>'.$courseenv{'description'}.'</h1>');
-        $r->print('<h3>'.  &Apache::lonnet::domain($cdom,'description').'</h3>');
+        $r->print('<div class="LC_Box">'.
+                   '<h2 class="LC_hcell">'.$courseenv{'description'}.'</h2>');
+        if ($allowed) {
+             $r->print('<div style="margin: 0; float:left;">'.
+                       '<h3>'.&Apache::lonnet::domain($cdom,'description').'</h3>'.
+                       '</div>');
+# Print Help Text if editing at right side of screen
+             $r->print('<div style="margin: 0; float:right;">'.
+                       &Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes',&mt('Help with filling in text boxes')).
+                       '</div><br clear="all" />');
+        } else {
+            $r->print('<h3>'.&Apache::lonnet::domain($cdom,'description').'</h3>');
+        }
     } else {
         $r->print('\noindent{\large\textbf{'.$courseenv{'description'}.'}}\\\\\\\\\textbf{'.
         &Apache::lonnet::domain($cdom,'description').'}\\\\');
@@ -386,7 +370,7 @@
     if (($syllabus{'uploaded.lastmodified'}) || ($allowed)) {
         if ($allowed) {
             $r->print('<form method="post" action="">'.
-            '<input type="hidden" name="forceedit" value="edit" />');
+            '<input type="hidden" name="forceedit" value="'.$env{'form.forceedit'}.'" />');
         }
 		my $url_include_handler = sub {
 			my ($r, $field, $message, $group, $data_ref, $fields_ref, $target, $allowed) = @_;
@@ -441,6 +425,7 @@
         if ($target ne 'tex') {$r->print('</p>');}
     }
     if ($target ne 'tex') {
+        $r->print('</div>');
         if ($env{'form.backto'} eq 'coursecatalog') {
             $r->print('<form name="backtocat" method="post" action="/adm/coursecatalog">'.
                       &Apache::lonhtmlcommon::echo_form_input(['backto','courseid']).


More information about the LON-CAPA-cvs mailing list