Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r65602 - in website/public_html/live: . common/code common/code/test doc
From: dnljms_at_[hidden]
Date: 2010-09-26 09:11:55


Author: danieljames
Date: 2010-09-26 09:11:52 EDT (Sun, 26 Sep 2010)
New Revision: 65602
URL: http://svn.boost.org/trac/boost/changeset/65602

Log:
Merge site from beta.
Added:
   website/public_html/live/common/code/boost_filter_basic.php
      - copied unchanged from r65601, /website/public_html/beta/common/code/boost_filter_basic.php
   website/public_html/live/common/code/boost_filter_boost_book_basic.php
      - copied unchanged from r65601, /website/public_html/beta/common/code/boost_filter_boost_book_basic.php
   website/public_html/live/common/code/boost_filter_boost_book_html.php
      - copied unchanged from r65601, /website/public_html/beta/common/code/boost_filter_boost_book_html.php
   website/public_html/live/common/code/boost_filter_boost_frame1.php
      - copied unchanged from r65601, /website/public_html/beta/common/code/boost_filter_boost_frame1.php
   website/public_html/live/common/code/boost_filter_boost_libs.php
      - copied unchanged from r65601, /website/public_html/beta/common/code/boost_filter_boost_libs.php
   website/public_html/live/common/code/boost_filter_cpp.php
      - copied unchanged from r65601, /website/public_html/beta/common/code/boost_filter_cpp.php
   website/public_html/live/common/code/boost_filter_simple.php
      - copied unchanged from r65601, /website/public_html/beta/common/code/boost_filter_simple.php
   website/public_html/live/common/code/boost_filter_text.php
      - copied unchanged from r65601, /website/public_html/beta/common/code/boost_filter_text.php
   website/public_html/live/common/code/boost_filters.php
      - copied unchanged from r65601, /website/public_html/beta/common/code/boost_filters.php
   website/public_html/live/common/code/test/
      - copied from r65601, /website/public_html/beta/common/code/test/
   website/public_html/live/common/code/test/test_filters.php
      - copied unchanged from r65601, /website/public_html/beta/common/code/test/test_filters.php
   website/public_html/live/common/code/test/test_template.php
      - copied unchanged from r65601, /website/public_html/beta/common/code/test/test_template.php
Properties modified:
   website/public_html/live/ (props changed)
Text files modified:
   website/public_html/live/.htaccess | 5
   website/public_html/live/common/code/boost_archive.php | 758 +++++++--------------------------------
   website/public_html/live/common/code/template.php | 6
   website/public_html/live/doc/display_libs.php | 4
   4 files changed, 151 insertions(+), 622 deletions(-)

Modified: website/public_html/live/.htaccess
==============================================================================
--- website/public_html/live/.htaccess (original)
+++ website/public_html/live/.htaccess 2010-09-26 09:11:52 EDT (Sun, 26 Sep 2010)
@@ -6,6 +6,11 @@
 
 DirectoryIndex index.php index.shtml index.html
 
+<IfModule mod_expires.c>
+ ExpiresActive On
+ ExpiresByType text/html A3600
+</IfModule>
+
 RewriteEngine On
 RewriteBase /
 

Modified: website/public_html/live/common/code/boost_archive.php
==============================================================================
--- website/public_html/live/common/code/boost_archive.php (original)
+++ website/public_html/live/common/code/boost_archive.php 2010-09-26 09:11:52 EDT (Sun, 26 Sep 2010)
@@ -6,6 +6,8 @@
 */
 require_once(dirname(__FILE__) . '/boost.php');
 
+define('BOOST_DOCS_MODIFIED_DATE', 'Tue, 21 Sep 2010 22:19:30 +0100');
+
 function get_archive_location(
     $pattern,
     $vpath,
@@ -53,6 +55,20 @@
     $params['charset'] = NULL;
     $params['content'] = NULL;
     
+ // Check file exists.
+
+ $check_file = $params['zipfile'] ? $params['archive'] : $params['file'];
+
+ if (!is_file($check_file)) {
+ file_not_found($params,
+ $params['zipfile'] ?
+ 'Unable to find zipfile.' :
+ 'Unable to find file.');
+ return;
+ }
+
+ // Choose filter to use
+
     $info_map = array_merge($content_map, array(
         array('@.*@','@[.](txt|py|rst|jam|v2|bat|sh|xml|qbk)$@i','text','text/plain'),
         array('@.*@','@[.](c|h|cpp|hpp)$@i','cpp','text/plain'),
@@ -89,85 +105,81 @@
         return;
     }
 
- // Check zipfile.
-
- $check_file = $params['zipfile'] ? $params['archive'] : $params['file'];
-
- if (!is_file($check_file)) {
- file_not_found($params,
- $params['zipfile'] ?
- 'Unable to find zipfile.' :
- 'Unable to find file.');
- return;
- }
-
- $last_modified = max(
- strtotime("Sun, 11 Jul 2010 18:55:24 +0100"),
- filemtime($check_file));
-
- if (!conditional_get($last_modified))
- return;
+ // Handle ETags and Last-Modified HTTP headers.
 
- // Extract the file from the zipfile
+ // Output raw files.
 
- if ($params['zipfile'])
- {
- $unzip =
- UNZIP
- .' -p '.escapeshellarg($params['archive'])
- .' '.escapeshellarg($params['file']);
-
- if($extractor == 'raw') {
- raw_headers($type, $expires);
- if($_SERVER['REQUEST_METHOD'] != 'HEAD') display_raw_file($unzip, $type);
+ if($extractor == 'raw') {
+ if (!http_headers($type, filemtime($check_file), $expires))
             return;
- }
 
- if ($expires) {
- header('Expires: '.date(DATE_RFC2822, strtotime($expires)));
- header('Cache-Control: max-age='.strtotime($expires, 0)); // 30 days
- }
+ if($_SERVER['REQUEST_METHOD'] != 'HEAD')
+ display_raw_file($params, $type);
+ }
+ else {
+ if (!http_headers('text/html', filemtime($check_file), $expires))
+ return;
 
+ // Read file from hard drive or zipfile
+
         // Note: this sets $params['content'] with either the content or an error
         // message:
- if(!extract_file($unzip, $params['content'])) {
+ if(!extract_file($params, $params['content'])) {
             file_not_found($params, $params['content']);
             return;
         }
- }
- else
- {
- if($extractor == 'raw') {
- raw_headers($type, $expires);
- if($_SERVER['REQUEST_METHOD'] != 'HEAD') readfile($params['file']);
- return;
- }
-
- if ($expires) {
- header('Expires: '.date(DATE_RFC2822, strtotime($expires)));
- header('Cache-Control: max-age='.strtotime($expires, 0)); // 30 days
+
+ // Check if the file contains a redirect.
+
+ if($type == 'text/html') {
+ if($redirect = detect_redirect($params['content'])) {
+ header("Location: $redirect", TRUE, 301);
+ if($_SERVER['REQUEST_METHOD'] != 'HEAD') echo $params['content'];
+ return;
+ }
         }
-
- $params['content'] = file_get_contents($params['file']);
- }
     
- if($type == 'text/html') {
- if(html_headers($params['content'])) {
- if($_SERVER['REQUEST_METHOD'] != 'HEAD') echo $params['content'];
- return;
+ // Finally process the file and display it.
+
+ if($_SERVER['REQUEST_METHOD'] != 'HEAD') {
+ if ($preprocess) {
+ $params['content'] = call_user_func($preprocess, $params['content']);
+ }
+
+ echo_filtered($extractor, $params);
         }
- }
+ }
+}
 
- if($_SERVER['REQUEST_METHOD'] == 'HEAD') return;
+// HTTP header handling
 
- if ($preprocess) {
- $params['content'] = call_user_func($preprocess, $params['content']);
+function http_headers($type, $last_modified, $expires = null)
+{
+ header('Content-type: '.$type);
+ switch($type) {
+ case 'image/png':
+ case 'image/gif':
+ case 'image/jpeg':
+ case 'text/css':
+ case 'application/x-javascript':
+ case 'application/pdf':
+ case 'application/xml-dtd':
+ header('Expires: '.date(DATE_RFC2822, strtotime("+1 year")));
+ header('Cache-Control: max-age=31556926'); // A year, give or take a day.
+ break;
+ default:
+ if($expires) {
+ header('Expires: '.date(DATE_RFC2822, strtotime($expires)));
+ header('Cache-Control: max-age='.strtotime($expires, 0));
+ }
+ break;
     }
     
- echo_filtered($extractor, $params);
+ return conditional_get(max(strtotime(BOOST_DOCS_MODIFIED_DATE), $last_modified));
 }
 
-function conditional_get($last_modified) {
+function conditional_get($last_modified)
+{
     if(!$last_modified) return true;
 
     $last_modified_text = date(DATE_RFC2822, $last_modified);
@@ -197,238 +209,81 @@
     return false;
 }
 
-class boost_archive_render_callbacks {
- var $content_callback, $params;
-
- function boost_archive_render_callbacks($content, $params) {
- $this->content_callback = $content;
- $this->archive = $params;
- }
+// General purpose render callbacks.
 
- function content_head()
- {
- $charset = $this->archive['charset'] ? $this->archive['charset'] : 'us-ascii';
- $title = $this->archive['title'] ? 'Boost C++ Libraries - '.$this->archive['title'] : 'Boost C++ Libraries';
+function boost_archive_render_callbacks($content, $params) {
+ $charset = $params['charset'] ? $params['charset'] : 'us-ascii';
+ $title = $params['title'] ? 'Boost C++ Libraries - '.$params['title'] : 'Boost C++ Libraries';
 
- print <<<HTML
+ $head = <<<HTML
 <meta http-equiv="Content-Type" content="text/html; charset=${charset}" />
 <title>${title}</title>
 HTML;
- }
-
- function content()
- {
- if ($this->content_callback)
- {
- call_user_func($this->content_callback, $this->archive);
- }
- }
-}
 
-function raw_headers($type, $expires = null)
-{
- header('Content-type: '.$type);
- switch($type) {
- case 'image/png':
- case 'image/gif':
- case 'image/jpeg':
- case 'text/css':
- case 'application/x-javascript':
- case 'application/pdf':
- case 'application/xml-dtd':
- header('Expires: '.date(DATE_RFC2822, strtotime("+1 year")));
- header('Cache-Control: max-age=31556926'); // A year, give or take a day.
- default:
- if($expires) {
- header('Expires: '.date(DATE_RFC2822, strtotime($expires)));
- header('Cache-Control: max-age='.strtotime($expires, 0));
- }
- }
+ return Array(
+ 'head' => $head,
+ 'content' => $content
+ );
 }
 
-function display_raw_file($unzip, $type)
+function display_raw_file($params, $type)
 {
     ## header('Content-Disposition: attachment; filename="downloaded.pdf"');
- $file_handle = popen($unzip,'rb');
- fpassthru($file_handle);
- $exit_status = pclose($file_handle);
-
- // Don't display errors for a corrupt zip file, as we seemd to
- // be getting them for legitimate files.
-
- if($exit_status > 3)
- echo 'Error extracting file: '.unzip_error($exit_status);
-};
-
-function extract_file($unzip, &$content) {
- header('Expires: '.date(DATE_RFC2822, strtotime("+1 month")));
- header('Cache-Control: max-age=2592000'); // 30 days
-
- $file_handle = popen($unzip,'r');
- $text = '';
- while ($file_handle && !feof($file_handle)) {
- $text .= fread($file_handle,8*1024);
- }
- $exit_status = pclose($file_handle);
+ if($params['zipfile']) {
+ $file_handle = popen(unzip_command($params), 'rb');
+ fpassthru($file_handle);
+ $exit_status = pclose($file_handle);
+
+ // Don't display errors for a corrupt zip file, as we seemd to
+ // be getting them for legitimate files.
 
- if($exit_status == 0) {
- $content = $text;
- return true;
+ if($exit_status > 3)
+ echo 'Error extracting file: '.unzip_error($exit_status);
     }
     else {
- $content = strstr($_SERVER['HTTP_HOST'], 'beta') ? unzip_error($exit_status) : null;
- return false;
+ readfile($params['file']);
     }
 }
 
-//
-// Filters
-//
-
-function echo_filtered($extractor, $params) {
- $extractor_name = $extractor.'_filter';
- call_user_func($extractor_name, $params);
-}
-
-function text_filter($params)
-{
- $params['title'] = htmlentities($params['key']);
-
- display_template($params['template'],
- new boost_archive_render_callbacks('text_filter_content', $params));
-}
-
-function text_filter_content($params)
-{
- print "<h3>".htmlentities($params['key'])."</h3>\n";
- print "<pre>\n";
- print_encoded_text($params, 'text');
- print "</pre>\n";
-}
-
-function cpp_filter($params) {
- $params['title'] = htmlentities($params['key']);
-
- display_template($params['template'],
- new boost_archive_render_callbacks('cpp_filter_content', $params));
-}
-
-function cpp_filter_content($params)
-{
- print "<h3>".htmlentities($params['key'])."</h3>\n";
- print "<pre>\n";
- print_encoded_text($params, 'cpp');
- print "</pre>\n";
-}
-
-function boost_book_html_filter($params) {
- html_init($params);
- display_template($params['template'],
- new boost_archive_render_callbacks('boost_book_html_filter_content', $params));
-}
-
-function boost_book_html_filter_content($params)
-{
- $text = prepare_html($params['content'], true);
-
- $text = substr($text,strpos($text,'<div class="spirit-nav">'));
- $text = substr($text,0,strpos($text,'</body>'));
- $text = str_replace('<hr>','',$text);
- $text = str_replace('<table width="100%">','<table class="footer-table">',$text);
- $text = str_replace('<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%">','<table class="footer-table">',$text);
- $text = preg_replace(
- '@[\s]+(border|cellpadding|cellspacing|width|height|valign|frame|rules|naturalsizeflag|background)=[^\s>]+@i',
- '',
- $text );
- ##
- for ($i = 0; $i < 8; $i++) {
- $text = preg_replace(
- '@<img src="[\./a-z]*images/(prev|up|home|next|tip|note|warning|important|caution|sidebar|hint|alert)\.png" alt="([^"]+)"([ /]*)>@Ssm',
- '<img src="/gfx/space.png" alt="${2}" class="${1}_image" />',
- $text );
- }
- ##
-
- print $text;
-}
+function extract_file($params, &$content) {
+ if($params['zipfile']) {
+ $file_handle = popen(unzip_command($params),'r');
+ $text = '';
+ while ($file_handle && !feof($file_handle)) {
+ $text .= fread($file_handle,8*1024);
+ }
+ $exit_status = pclose($file_handle);
 
-function boost_libs_filter($params)
-{
- html_init($params);
- $text = extract_html_body($params['content']);
- if($text) {
- $text = prepare_html($text, true);
- $text = remove_html_banner($text);
- $text = prepare_themed_html($text);
- $params['content'] = $text;
-
- display_template($params['template'],
- new boost_archive_render_callbacks('boost_libs_filter_content', $params));
+ if($exit_status == 0) {
+ $content = $text;
+ return true;
+ }
+ else {
+ $content = strstr($_SERVER['HTTP_HOST'], 'beta') ? unzip_error($exit_status) : null;
+ return false;
+ }
     }
     else {
- print $params['content'];
+ $content = file_get_contents($params['file']);
+ return true;
     }
 }
 
-function boost_libs_filter_content($params)
-{
- return $params['content'];
-}
-
-function boost_frame1_filter($params) {
- html_init($params);
- display_template($params['template'],
- new boost_archive_render_callbacks(new boost_frame1_filter_content, $params));
-}
-
-function boost_frame1_filter_content($params)
-{
- $text = prepare_html($params['content'], true);
-
- $text = substr($text,strpos($text,'<div class="spirit-nav">'));
- $text = substr($text,0,strpos($text,'</body>'));
- for ($i = 0; $i < 8; $i++) {
- $text = preg_replace(
- '@<img src="[\./]*images/(.*\.png)" alt="(.*)"([ ][/])?>@Ssm',
- '<img src="/style-v2/css_0/${1}" alt="${2}" />',
- $text );
- }
- $text = str_replace('<hr>','',$text);
- $text = str_replace('<table width="100%">','<table class="footer-table">',$text);
- $text = preg_replace(
- '@[\s]+(border|cellpadding|cellspacing|width|height|valign|frame|rules|naturalsizeflag|background)=[^\s>]+@i',
- '',
- $text );
-
- print $text;
-}
-
-function simple_filter($params)
-{
- print prepare_html($params['content']);
+function unzip_command($params) {
+ return
+ UNZIP
+ .' -p '.escapeshellarg($params['archive'])
+ .' '.escapeshellarg($params['file']);
 }
 
-function basic_filter($params)
-{
- $text = remove_html_banner($params['content']);
+//
+// Filters
+//
 
- $is_xhtml = preg_match('@<!DOCTYPE[^>]*xhtml_at_i', $text);
- $tag_end = $is_xhtml ? '/>' : '>';
-
- $match = null;
-
- if(preg_match('@(?:</head>\s*)?<body[^>]*>@is', $text, $match, PREG_OFFSET_CAPTURE)) {
- echo substr($text, 0, $match[0][1]);
- echo '<link rel="icon" href="/favicon.ico" type="image/ico"'.$tag_end;
- echo '<link rel="stylesheet" type="text/css" href="/style-v2/section-basic.css"'.$tag_end;
- echo $match[0][0];
- virtual("/common/heading-doc.html");
- echo prepare_html(substr($text, $match[0][1] + strlen($match[0][0])));
-
- }
- else {
- echo $text;
- }
+function echo_filtered($extractor, $params) {
+ require_once(dirname(__FILE__)."/boost_filter_$extractor.php");
+ $extractor_name = $extractor.'_filter';
+ call_user_func($extractor_name, $params);
 }
 
 /* File Not Found */
@@ -443,55 +298,37 @@
     }
 
     header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
- display_template($params['template'],
- new file_not_found_render_callbacks($params['file'],
- $params['zipfile'] ? "Unzip error: $message" : $message));
-}
-
-class file_not_found_render_callbacks
-{
- var $file, $message;
-
- function file_not_found_render_callbacks($file, $message) {
- $this->file = $file;
- $this->message = $message;
- }
 
- function content_head()
- {
- print <<<HTML
+ $head = <<<HTML
   <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
   <title>Boost C++ Libraries - 404 Not Found</title>
 HTML;
- }
-
- function content()
- {
- print '<h1>404 Not Found</h1><p>File "' . $this->file . '" not found.</p>';
- if($this->message) {
- print '<p>'.htmlentities($this->message).'</p>';
- }
- }
+
+ $content = '<h1>404 Not Found</h1><p>File "' . $params['file'] . '" not found.</p><p>';
+ if($params['zipfile']) $content .= "Unzip error: ";
+ $content .= htmlentities($message);
+ $content .= '</p>';
+
+ display_template($params['template'], Array('head' => $head, 'content' => $content));
 }
 
 /*
  * HTML processing functions
  */
 
-function html_headers($content)
+function detect_redirect($content)
 {
- // This function is expensive for large files, but large files are never
- // redirects, so bail out quickly.
- if(strlen($content) > 2000) return;
-
- if(preg_match(
- '@<meta\s+http-equiv\s*=\s*["\']?refresh["\']?\s+content\s*=\s*["\']0;\s*URL=([^"\']*)["\']\s*/?>@i',
- $content,
- $redirect))
+ // Only check small files, since larger files are never redirects, and are
+ // expensive to search.
+ if(strlen($content) <= 2000 &&
+ preg_match(
+ '@<meta\s+http-equiv\s*=\s*["\']?refresh["\']?\s+content\s*=\s*["\']0;\s*URL=([^"\']*)["\']\s*/?>@i',
+ $content, $redirect))
     {
- header('Location: '.resolve_url($redirect[1]), TRUE, 301);
- return true;
+ return resolve_url($redirect[1]);
     }
+
+ return false;
 }
 
 // Not a full implementation. Just good enough for redirecting.
@@ -520,320 +357,9 @@
     return $url['scheme'].'://'.$url['host'] . $url['path'];
 }
 
-function html_init($params)
-{
- preg_match('@text/html; charset=([^\s"\']+)@i',$params['content'],$charset);
- if (isset($charset[1]))
- {
- $params['charset'] = $charset[1];
- }
-
- preg_match('@<title>([^<]+)</title>@i',$params['content'],$title);
- if (isset($title[1]))
- {
- $params['title'] = $title[1];
- }
-}
-
-function extract_html_body($text) {
- preg_match('@<body[^>]*>@i',$text,$body_begin,PREG_OFFSET_CAPTURE);
- preg_match('@</body>@i',$text,$body_end,PREG_OFFSET_CAPTURE);
- if (!isset($body_begin[0]))
- {
- //~ Attempt to recover some content from illegal HTML that is missing the body tag.
- preg_match('@</head>@i',$text,$body_begin,PREG_OFFSET_CAPTURE);
- }
- if (!isset($body_begin[0]))
- {
- //~ Attempt to recover some content from illegal HTML that is missing the body tag.
- preg_match('@<html[^>]*>@i',$text,$body_begin,PREG_OFFSET_CAPTURE);
- }
- if (!isset($body_begin[0]))
- {
- //~ Attempt to recover some content from illegal HTML that is missing the body tag.
- preg_match('@<(hr|div|img|p|h1|h2|h3|h4)[^>]*>@i',$text,$body_begin,PREG_OFFSET_CAPTURE);
- }
- if (!isset($body_begin[0]))
- {
- return;
- }
- else if (!isset($body_end[0]))
- {
- $text = substr($text,
- $body_begin[0][1]+strlen($body_begin[0][0]));
- }
- else
- {
- $text = substr($text,
- $body_begin[0][1]+strlen($body_begin[0][0]),
- $body_end[0][1]-($body_begin[0][1]+strlen($body_begin[0][0])) );
- }
-
- return $text;
-}
-
-function prepare_html($text, $full = false) {
- $text = preg_replace(
- '@href="?http://(?:www.)?boost.org/?([^"\s]*)"?@i',
- 'href="/${1}"',
- $text );
-
- if($full) {
- $text = preg_replace(
- '@href="?(?:\.\./)+people/(.*\.htm)"?@i',
- 'href="/users/people/${1}l"',
- $text );
- $text = preg_replace(
- '@href="?(?:\.\./)+(LICENSE_[^"\s]*\.txt)"?@i',
- 'href="/${1}"',
- $text );
- $text = preg_replace(
- '@<a\s+(class="[^"]+")?\s*href="?(http|mailto)(:[^"\s]*)"?@i',
- '<a class="external" href="${2}${3}"',
- $text );
- }
-
- return $text;
-}
-
-function remove_html_banner($text) {
- $match = null;
-
- if(preg_match('@(<table[^<>]*>?)(.*?)(</table>(?:\s*<hr\s*/?>\s*)?)@si',$text,$match,PREG_OFFSET_CAPTURE)
- && strpos($match[2][0], 'boost.png') !== FALSE
- ) {
- $header = preg_match('@<td[^<>]*>?([^<]*<(h[12]|p).*?)</td>@is', $match[2][2], $table_contents_header);
-
- $head = substr($text, 0, $match[0][1]);
- $header = $header ? $table_contents_header[1] : '';
- $tail = substr($text, $match[0][1] + strlen($match[0][0]));
- return $head.$header.$tail;
- }
- else if(preg_match('@<(?:p|blockquote)@', $text, $match, PREG_OFFSET_CAPTURE)) {
- $pos = $match[0][1];
- $header = substr($text, 0, $pos);
- $tail = substr($text, $pos);
-
- $header = preg_replace('@(<h\d>\s*)<img[^>]*src="(\.\.\/)*boost\.png"[^>]*>@', '$1', $header);
- $header = preg_replace('@<img[^>]*src="(\.\.\/)*boost\.png"[^>]*>\s*<[hb]r.*?>@', '', $header);
-
- return $header.$tail;
- }
- else {
- // Shouldn't really get here....
- return $text;
- }
-}
-
-function prepare_themed_html($text) {
- $text = preg_replace(
- '@(<a[^>]+>[\s]*)?<img.*boost\.png[^>]*>([\s]*</a>)?@i',
- '',
- $text );
- $text = preg_replace(
- '@<img(.*)align="?right"?[^>]*>@i',
- '<img${1} class="right-inset" />',
- $text );
- $text = preg_replace(
- '@<img(.*)align="?absmiddle"?[^>]*>@i',
- '<img${1} class="inline" />',
- $text );
- /* Remove certain attributes */
- $text = preg_replace(
- '@[\s]+(border|cellpadding|cellspacing|width|height|valign|align|frame|rules|naturalsizeflag|background)=("[^"]*"?|\'[^\']*\'?|[^\s/>]+)@i',
- '',
- $text );
- $text = preg_replace(
- '@<table[\s]+(border)[^\s>]*@i',
- '<table',
- $text );
- $text = preg_replace(
- '@<[/]?(font|hr)[^>]*>@i',
- '',
- $text );
- $text = preg_replace(
- '@<([^\s]+)[\s]+>@i',
- '<${1}>',
- $text );
- $text = _preg_replace_bounds(
- '@<blockquote>[\s]*(<pre>)@i','@(</pre>)[\s]*</blockquote>@i',
- '${1}','${1}',
- $text );
- $text = _preg_replace_bounds(
- '@<blockquote>[\s]*(<p>)@i','@(</p>)[\s]*</blockquote>@i',
- '${1}','${1}',
- $text );
- $text = _preg_replace_bounds(
- '@<blockquote>[\s]*(<table>)@i','@(</table>)[\s]*</blockquote>@i',
- '${1}','${1}',
- $text );
- $text = _preg_replace_bounds(
- '@<blockquote>[\s]*<li>@i','@</li>[\s]*</blockquote>@i',
- '<ul><li>','</li></ul>',
- $text );
- $text = _preg_replace_bounds(
- '@(?:<blockquote>[\s]*)+<h2>@i','@</h2>(?:[\s]*</blockquote>)+@i',
- '<h2>','</h2>',
- $text );
- $text = preg_replace(
- '@(<a name=[^\s>]+[\s]*>)[\s]*(</?[^a])@i',
- '${1}</a>${2}',
- $text );
- $text = preg_replace(
- '@<table>([\s]+<tr>[\s]+<td>.*_arr.*</td>[\s]+<td>.*</td>[\s]+<td>.*</td>[\s]+</tr>[\s]+)</table>@i',
- '<table class="pyste-nav">${1}</table>',
- $text );
- $text = preg_replace(
- '@<table>([\s]+<tr>[\s]+<td)[\s]+class="note_box">@i',
- '<table class="note_box">${1}>',
- $text );
- $text = preg_replace(
- '@<table>([\s]+<tr>[\s]+<td[\s]+class="table_title">)@i',
- '<table class="toc">${1}',
- $text );
- $text = preg_replace(
- '@src=".*theme/u_arr\.gif"@i',
- 'src="/gfx/space.png" class="up_image"',
- $text );
- $text = preg_replace(
- '@src=".*theme/l_arr\.gif"@i',
- 'src="/gfx/space.png" class="prev_image"',
- $text );
- $text = preg_replace(
- '@src=".*theme/r_arr\.gif"@i',
- 'src="/gfx/space.png" class="next_image"',
- $text );
- $text = preg_replace(
- '@src=".*theme/u_arr_disabled\.gif"@i',
- 'src="/gfx/space.png" class="up_image_disabled"',
- $text );
- $text = preg_replace(
- '@src=".*theme/l_arr_disabled\.gif"@i',
- 'src="/gfx/space.png" class="prev_image_disabled"',
- $text );
- $text = preg_replace(
- '@src=".*theme/r_arr_disabled\.gif"@i',
- 'src="/gfx/space.png" class="next_image_disabled"',
- $text );
- $text = preg_replace(
- '@src=".*theme/note\.gif"@i',
- 'src="/gfx/space.png" class="note_image"',
- $text );
- $text = preg_replace(
- '@src=".*theme/alert\.gif"@i',
- 'src="/gfx/space.png" class="caution_image"',
- $text );
- $text = preg_replace(
- '@src=".*theme/bulb\.gif"@i',
- 'src="/gfx/space.png" class="tip_image"',
- $text );
- $text = preg_replace(
- '@<img src=".*theme/(?:bullet|lens)\.gif">@i',
- '',
- $text );
- $text = preg_replace(
- '@(<img src=".*theme/(?:arrow)\.gif")>@i',
- '${1} class="inline">',
- $text );
- return $text;
-}
-
-// This takes a plain text file and outputs encoded html with marked
-// up links.
-
-function print_encoded_text($params, $type) {
- $root = dirname(preg_replace('@([^/]+/)@','../',$params['key']));
-
- // John Gruber's regular expression for finding urls
- // http://daringfireball.net/2009/11/liberal_regex_for_matching_urls
-
- foreach(preg_split(
- '@\b((?:[\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|[^[:punct:]\s]|/))@',
- $params['content'], -1, PREG_SPLIT_DELIM_CAPTURE)
- as $index => $part)
- {
- if($index % 2 == 0) {
- $html = htmlentities($part);
-
- if($type == 'cpp') {
- $html = preg_replace(
- '@(#[ ]*include[ ]+&lt;)(boost[^&]+)@Ssm',
- '${1}${2}',
- $html );
- $html = preg_replace(
- '@(#[ ]*include[ ]+&quot;)(boost[^&]+)@Ssm',
- '${1}${2}',
- $html );
- }
-
- print $html;
- }
- else {
- $url = process_absolute_url($part, $root);
- if($url) {
- print ''.htmlentities($part).'';
- }
- else {
- print htmlentities($part);
- }
- }
- }
-}
-
-function process_absolute_url($url, $root = null) {
- // Simplified version of the 'loose' regular expression from
- // http://blog.stevenlevithan.com/archives/parseuri
- //
- // (c) Steven Levithan <stevenlevithan.com>
- // MIT License
-
- if(!preg_match(
- '~^'.
- // Protocol(1): (Could also remove the userinfo detection stuff?)
- '(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?'.
- '(?:\/\/)?'.
- // Authority(2)
- '('.
- // User info
- '(?:[^:@]*:?[^:@]*@)?'.
- // Host(3)
- '([^:\/?#]*)'.
- // Port
- '(?::\d*)?'.
- ')'.
- // Relative(4)
- '(\/.*)'.
- '~',
- $url, $matches))
- {
- return;
- }
-
- $protocol = $matches[1];
- $authority = $matches[2];
- $host = $matches[3];
- $relative = $matches[4];
-
- if(!$authority) return;
-
- if($root &&
- ($host == 'boost.org' || $host == 'www.boost.org') &&
- (strpos($relative, '/lib') === 0))
- {
- $url = $root.$relative;
- }
- else
- {
- $url = ($protocol ? $protocol : 'http').'://'.$authority.$relative;
- }
-
- return $url;
-}
-
 // Display the content in the standard boost template
 
-function display_template($template, $callbacks) {
- $_file = $callbacks;
+function display_template($template, $_file) {
     include($template);
 }
 
@@ -860,5 +386,3 @@
     default: return 'Unknown unzip error code: ' + $exit_status;
     }
 }
-
-?>

Modified: website/public_html/live/common/code/template.php
==============================================================================
--- website/public_html/live/common/code/template.php (original)
+++ website/public_html/live/common/code/template.php 2010-09-26 09:11:52 EDT (Sun, 26 Sep 2010)
@@ -3,12 +3,12 @@
 
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
- <?php $_file->content_head(); ?>
+ <?php echo $_file['head']; ?>
   <link rel="icon" href="/favicon.ico" type="image/ico" />
   <link rel="stylesheet" type="text/css" href="/style-v2/section-doc.css" />
   <!--[if IE 7]> <style type="text/css"> body { behavior: url(/style-v2/csshover3.htc); } </style> <![endif]-->
 
-</head><!-- <?php print $_file->file_; ?> -->
+</head>
 
 <body>
   <div id="heading">
@@ -21,7 +21,7 @@
         <div class="section" id="docs">
           <div class="section-0">
             <div class="section-body">
- <?php $_file->content(); ?>
+ <?php echo $_file['content']; ?>
             </div>
           </div>
         </div>

Modified: website/public_html/live/doc/display_libs.php
==============================================================================
--- website/public_html/live/doc/display_libs.php (original)
+++ website/public_html/live/doc/display_libs.php 2010-09-26 09:11:52 EDT (Sun, 26 Sep 2010)
@@ -84,7 +84,7 @@
   //~ special cases that can't be embeded in the standard frame
   array('@.*@','@^libs/iostreams/doc/.*(html|htm)$@i','simple','text/html'),
   array('@.*@','@^libs/serialization/doc/.*(html|htm)$@i','simple','text/html'),
- array('@.*@','@^libs/filesystem/doc/.*(html|htm)$@i','simple','text/html'),
+ array('@.*@','@^libs/filesystem/(v\d/)?doc/.*(html|htm)$@i','simple','text/html'),
   array('@.*@','@^libs/system/doc/.*(html|htm)$@i','simple','text/html'),
   array('@.*@','@^libs/numeric/conversion/doc/.*(html|htm)$@i','simple','text/html'),
   array('@.*@','@^libs/optional/doc/.*(html|htm)$@i','simple','text/html'),
@@ -95,7 +95,7 @@
   array('@.*@','@^libs/[^/]+/doc/[^/]+/doc/html/.*(html|htm)$@i','basic','text/html'),
   array('@.*@','@^libs.*(html|htm)$@i','basic','text/html'),
   array('@.*@','@^tools.*(html|htm)$@i','basic','text/html'),
- array('@.*@','@^doc/html/.*html$@i','basic','text/html'),
+ array('@.*@','@^doc/html/.*html$@i','boost_book_basic','text/html'),
   array('@.*@','@^more/.*html$@i','basic','text/html'),
   //~ the headers are text files displayed in an embeded page
   array('@.*@','@^boost/.*$@i','cpp','text/plain')


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk