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

foxr lon-capa-cvs@mail.lon-capa.org
Thu, 21 Oct 2004 11:17:01 -0000


foxr		Thu Oct 21 07:17:01 2004 EDT

  Modified files:              
    /loncom/interface	loncommon.pm 
  Log:
  - Renamed javascript_escape to escape_single
  - Added escape_double to escape double quotes.
  - Added escape_url to escape the last element of a url using
    Apache::lonnet::escape on the split up URL.
  
  
  
Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.221 loncom/interface/loncommon.pm:1.222
--- loncom/interface/loncommon.pm:1.221	Thu Oct 21 05:53:44 2004
+++ loncom/interface/loncommon.pm	Thu Oct 21 07:17:00 2004
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.221 2004/10/21 09:53:44 foxr Exp $
+# $Id: loncommon.pm,v 1.222 2004/10/21 11:17:00 foxr Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -3734,7 +3734,7 @@
 
 #
 #    Escapes strings that may have embedded 's that will be put into
-#    javascript strings as 'strings'.
+#    strings as 'strings'.
 #    The assumptions are:
 #       There has been no effort to escape ' with \'
 #       Any \'s in the string are intended to be there as part of the URL
@@ -3744,7 +3744,7 @@
 # Returns:
 #     The escaped string (' replaced by \' and \ replaced by \\).
 #
-sub javascript_escape {
+sub escape_single {
     my ($input) = @_;
 
     #  I imagine a regexp wizard could combine the two expressions below.
@@ -3755,8 +3755,48 @@
 
     return $input;
 }
+#  Same as escape_single, but escape's "'s  This 
+#  can be used for  "strings"
+#
+# Parameters:
+#     input     - The string to escape.
+# Returns:
+#     The escaped string (" replaced by \" and \ replaced by \\).
+#
+sub escape_double {
+    my ($input) = @_;
+
+    #  I imagine a regexp wizard could combine the two expressions below.
+    #  If you do you might want to comment the result.
+
+    $input =~ s/\\/\\\\/g;	# Escape the /'s..(must be first)>
+    $input =~ s/\"/\\\"/g;	# Esacpe the "s....
 
+    return $input;
+}
+#
+#   Escapes the last element of a full URL.
+#
+# Parameters:
+#    url    - The url to escape.
+# Returns:
+#    The url with the last element escaped via lonnet::escape.
+#
+sub escape_url {
+    my ($url)   = @_;
+    my @urlslices = split(/\//, $url);
 
+    my $lastitem  = $urlslices[scalar(@urlslices) -1];
+    $lastitem     = &Apache::lonnet::escape($lastitem);
+    
+    my $escaped_url;
+    for (my $i = 0; $i < scalar(@urlslices) -1; $i++) {
+	$escaped_url .= $urlslices[$i] .'/';
+    }
+    $escaped_url     .= $lastitem ;
+
+    return $escaped_url;
+}
 =pod
 
 =back