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

bisitz bisitz at source.lon-capa.org
Mon May 21 15:01:12 EDT 2012


bisitz		Mon May 21 19:01:12 2012 EDT

  Modified files:              
    /loncom/interface	lonmeta.pm 
  Log:
  - Delete/Clear bomb message buttons work again (BZ 1320, 6591)
  - "Back to Directory" link works again (BZ 1320, 6591)
  - Standard design for confirm/error messages, now including actual error message
  - Add error handling to removal of bombs for subdirectory
  - Still/only show buttons and bombs if deleting has failed
  - Consistent actions list
  - Consistent wording
  - XHTML
  - tidy up code a bit
  
  
  
Index: loncom/interface/lonmeta.pm
diff -u loncom/interface/lonmeta.pm:1.245 loncom/interface/lonmeta.pm:1.246
--- loncom/interface/lonmeta.pm:1.245	Fri Mar 16 02:12:26 2012
+++ loncom/interface/lonmeta.pm	Mon May 21 19:01:12 2012
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Metadata display handler
 #
-# $Id: lonmeta.pm,v 1.245 2012/03/16 02:12:26 www Exp $
+# $Id: lonmeta.pm,v 1.246 2012/05/21 19:01:12 bisitz Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -874,20 +874,44 @@
     $uri = &Apache::lonnet::declutter($uri);
     $r->print('<h1>'.&Apache::lonnet::clutter($uri).'</h1>');
     my ($domain,$author)=($uri=~/^($match_domain)\/($match_username)\//);
-    if (&Apache::loncacc::constructaccess('/priv/'.$domain.'/'.$author.'/')) {
-	if ($env{'form.clearbombs'}) {
-	    &Apache::lonmsg::clear_author_res_msg($uri);
-	}
-        my $clear=&mt('Clear all Messages in Subdirectory');
-        my $cancel=&mt('Back to Directory');
-        my $cancelurl=$uri;
-        $cancelurl=~s/^\Q$domain\E/\/priv/;
-        $r->print(<<ENDCLEAR);
-<form method="post">
-<input type="submit" name="clearbombs" value="$clear" />
-<a href="$cancelurl">$cancel</a>
-</form><hr />
-ENDCLEAR
+    if (!&Apache::loncacc::constructaccess('/priv/'.$domain.'/'.$author.'/')) {
+        $r->print('<p class="LC_error">'.&mt('Not authorized').'</p>');
+        return;
+    }
+
+    my $showbuttons=1;
+    my $message='';
+    if ($env{'form.clearbombs'}) {
+        my $rc=&Apache::lonmsg::clear_author_res_msg($uri);
+        if ($rc eq 'ok') {
+                $message=&Apache::lonhtmlcommon::confirm_success(
+                    &mt('Messages cleared.'));
+                $showbuttons=0;
+        } else {
+                $message=&Apache::lonhtmlcommon::confirm_success(
+                             &mt('Error clearing messages'),1)
+                        .'<br />'.&mt('Error: [_1]',$rc);
+        }
+    }
+
+    if ($message) {    
+        $message=&Apache::loncommon::confirmwrapper($message);
+        $r->print($message);
+    }
+
+    my $cancelurl=$uri;
+    $cancelurl=~s/^\Q$domain\E/\/priv\/$domain/;
+
+    if ($showbuttons) {
+        $r->print(
+            '<form method="post" action="">'.
+            '<input type="submit" name="clearbombs" value="'.
+                &mt('Clear all Messages in Subdirectory').'" />'.
+            ' <a href="'.$cancelurl.'">'.
+                &mt('Back to Source Directory').'</a>'.
+            '</form><hr />'
+        );
+        # Display all bombs of subdirectory
         my %brokenurls = 
             &Apache::lonmsg::all_url_author_res_msg($author,$domain);
         foreach my $key (sort(keys(%brokenurls))) {
@@ -899,7 +923,12 @@
             }
         }
     } else {
-        $r->print(&mt('Not authorized'));
+            my $functions=&Apache::lonhtmlcommon::start_funclist('Actions');
+            $functions.=&Apache::lonhtmlcommon::add_item_funclist(
+                            '<a href="'.$cancelurl.'">'.
+                            &mt('Back to Source Directory').'</a>');
+            $functions .= &Apache::lonhtmlcommon::end_funclist();
+            $r->print('<p>'.$functions.'</p>');
     }
     return;
 }
@@ -1193,7 +1222,7 @@
         my $bombs = &Apache::lonmsg::retrieve_author_res_msg($uri);
         if (defined($bombs) && $bombs ne '') {
             $r->print('<a name="bombs" />'
-                     .'<h4 class="LC_error">'.&mt('Error Messages').'</h4>'
+                     .'<h4 class="LC_warning">'.&mt('Error Messages').'</h4>'
                      .'<div>('
                      .&mt('visible to author and co-authors only')
                      .')</div>'
@@ -1276,47 +1305,66 @@
     $target=~s/\.meta$//;
     my $bombs=&Apache::lonmsg::retrieve_author_res_msg($target);
     if ($bombs) {
-        my $showdel=1;
+        # Display Bombs, not Metadata
+        $r->print("<h1>$disuri</h1>");
+        my $showbuttons=1;
+        my $message='';
+        my $rc='';
         if ($env{'form.delmsg'}) {
-            if (&Apache::lonmsg::del_url_author_res_msg($target) eq 'ok') {
-                $bombs=&mt('Messages deleted.');
-		$showdel=0;
+            $rc=&Apache::lonmsg::del_url_author_res_msg($target);
+            if ($rc eq 'ok') {
+                $message=&Apache::lonhtmlcommon::confirm_success(
+                             &mt('Messages deleted.'));
+		$showbuttons=0;
             } else {
-                $bombs=&mt('Error deleting messages');
+                $message=&Apache::lonhtmlcommon::confirm_success(
+                             &mt('Error deleting messages'), 1)
+                        .'<br />'.&mt('Error: [_1]',$rc);
             }
         }
         if ($env{'form.clearmsg'}) {
 	    my $cleardir=$target;
-	    $cleardir=~s/\/[^\/]+$/\//;
-            if (&Apache::lonmsg::clear_author_res_msg($cleardir) eq 'ok') {
-                $bombs=&mt('Messages cleared.');
-		$showdel=0;
+	    $cleardir=~s/\/[^\/]+$/\//; # Extract dir: keep path, remove filename
+            $rc=&Apache::lonmsg::clear_author_res_msg($cleardir);
+            if ($rc eq 'ok') {
+                $message=&Apache::lonhtmlcommon::confirm_success(
+                    &mt('Messages cleared.'));
+		$showbuttons=0;
             } else {
-                $bombs=&mt('Error clearing messages');
-            }
-        }
-        my $del=&mt('Delete Messages for this Resource');
-	my $clear=&mt('Clear all Messages in Subdirectory');
-	my $goback=&mt('Back to Source File');
-        $r->print(<<ENDBOMBS);
-<h1>$disuri</h1>
-<form method="post" action="" name="defaultmeta">
-ENDBOMBS
-        if ($showdel) {
-	    $r->print(<<ENDDEL);
-<input type="submit" name="delmsg" value="$del" />
-<input type="submit" name="clearmsg" value="$clear" />
-ENDDEL
+                $message=&Apache::lonhtmlcommon::confirm_success(
+                             &mt('Error clearing messages'),1)
+                        .'<br />'.&mt('Error: [_1]',$rc);
+            }
+        }
+        if ($message) {
+            $message=&Apache::loncommon::confirmwrapper($message);
+            $r->print($message);
+        }
+
+        $r->print('<form method="post" action="" name="defaultmeta">');
+        if ($showbuttons) {
+            $r->print(
+                '<input type="submit" name="delmsg" value="'.
+                &mt('Delete Messages for this Resource').'" />'.
+                '<input type="submit" name="clearmsg" value="'.
+                &mt('Clear all Messages in Subdirectory').'" />'
+               .'<br />'.$bombs
+            );
         } else {
-            $r->print('<p><a href="'.$disuri.'">'.$goback.'</a></p>');
-	    if ($env{'form.clearmsg'}) {
-		my ($diruri) = ($disuri =~ m{(.*/)[^/]*});
-		$r->print('<p><a href="'.$diruri.'">'.
-			  &mt('Back To Directory').'</a></p>');
-	    }
-	}
-	$r->print('<br />'.$bombs);
+            my $functions=&Apache::lonhtmlcommon::start_funclist('Actions');
+            $functions.=&Apache::lonhtmlcommon::add_item_funclist(
+                            '<a href="'.$disuri.'">'.
+                            &mt('Back to Source File').'</a>');
+            my ($diruri) = ($disuri =~ m{(.*/)[^/]*});
+            $functions.=&Apache::lonhtmlcommon::add_item_funclist(
+                            '<a href="'.$diruri.'">'.
+                            &mt('Back to Source Directory').'</a>');
+            $functions .= &Apache::lonhtmlcommon::end_funclist();
+            $r->print('<p>'.$functions.'</p>');
+        }
     } else {
+
+        # Display Metadata, not Bombs
         my $displayfile=&mt('Metadata for [_1]',$disuri);
         if ($disuri=~/\/default$/) {
             my $dir=$disuri;




More information about the LON-CAPA-cvs mailing list