X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=blosxom.cgi;h=9cef4da472926f660424a54ed4d4f07593cfc5bc;hb=beb240aaeb92436a048f00e35a109a22adda24d4;hp=c079ab257a6a53a511ec8f264d0a71ca16929886;hpb=d70589b00686a9eab5e34eafcc3b144c73ee893e;p=matthijs%2Fupstream%2Fblosxom.git diff --git a/blosxom.cgi b/blosxom.cgi index c079ab2..9cef4da 100755 --- a/blosxom.cgi +++ b/blosxom.cgi @@ -2,7 +2,7 @@ # Blosxom # Author: Rael Dornfest (2002-2003), The Blosxom Development Team (2005-2009) -# Version: 2.1.2 ($Id: blosxom.cgi,v 1.97 2009/07/19 17:14:20 xtaran Exp $) +# Version: 2.1.2 ($Id: blosxom.cgi,v 1.98 2009/07/19 17:18:37 xtaran Exp $) # Home/Docs/Licensing: http://blosxom.sourceforge.net/ # Development/Downloads: http://sourceforge.net/projects/blosxom @@ -99,6 +99,14 @@ $default_flavour = "html"; # Should I show entries from the future (i.e. dated after now)? $show_future_entries = 0; +# Should date components of the path always be at the front? +# If this is disabled, the date components can appear anywhere in the +# url (but always directly after each other, in the year/month/day +# order). For example, /category/subcategory/2008/12/ (or even +# /category/2008/12/subcategory/) shows all posts in subcategory from +# December 2008. +$date_first_in_url = 0; + # --- Plugins (Optional) ----- # File listing plugins blosxom should load (if empty blosxom will load @@ -237,6 +245,7 @@ use vars qw! $output $header $show_future_entries + $date_first_in_url %files %indexes %others @@ -395,9 +404,12 @@ sub blosxom_html_escape { # Global variable to be used in head/foot.{flavour} templates $path_info = ''; -# Add all @path_info elements to $path_info till we come to one that could be a year -while ( $path_info[0] && $path_info[0] !~ /^(19|20)\d{2}$/) { - $path_info .= '/' . shift @path_info; + +if (!$date_first_in_url) { + # Add all @path_info elements to $path_info till we come to one that could be a year + while ( $path_info[0] && $path_info[0] !~ /^(19|20)\d{2}$/) { + $path_info .= '/' . shift @path_info; + } } # Pull date elements out of path @@ -871,9 +883,7 @@ sub generate { $content_type !~ m{\bxhtml\b} ) { # Escape special characters inside the container - $url =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))eg; - $path =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))eg; - $fn =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))eg; + &url_escape_url_path_and_fn(); # Escape <, >, and &, and to produce valid RSS $title = blosxom_html_escape($title); @@ -885,9 +895,7 @@ sub generate { # Fix special characters in links inside XML content if ($encode_8bit_chars) { - $url =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))ge; - $path =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))ge; - $fn =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))ge; + &url_escape_url_path_and_fn(); } $story = &$interpolate($story); @@ -947,6 +955,12 @@ sub nice_date { return ( $dw, $mo, $mo_num, $da, $ti, $yr, $utc_offset ); } +sub url_escape_url_path_and_fn { + $url =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))eg; + $path =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))eg; + $fn =~ s($url_escape_re)(sprintf('%%%02X', ord($&)))eg; +} + # Default HTML and RSS template bits __DATA__ html content_type text/html; charset=$blog_encoding