--- pdf	2006-10-18 17:17:57.559553464 -0400
+++ /usr/lib/cgi-bin/twiki/pdf	2006-08-15 11:51:07.000000000 -0400
@@ -38,12 +38,15 @@
 #               Please define your paths here
 # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-# local path to your twiki data
-my $localWebDir         = "/usr/local/apache2/twiki/";
-# web URL of your twiki instalation
-my $webDirUrl           = "https://ike.nzqa.solnet.co.nz/twiki/";
+# local path to your twiki pub directory
+my $localWebDir         = "/var/www/twiki/pub";
+# any web URLs that may refer to your pub directory
+my @webDirUrls          = ("https://qix.demiurgestudios.com/twiki/pub",
+			   "https://qix/twiki/pub",
+			   "/twiki/pub",
+			   );
 # specify path to htmldoc
-my $htmldocCmd          = "/usr/local/bin/htmldoc";
+my $htmldocCmd          = "/usr/bin/htmldoc";
 
 &main();
 
@@ -169,7 +172,7 @@
 }
 END {
 # close temporary file:
-  unlink("$tmpFile.html") or die "Failed to unlink $tmpFile.html : $!";
+    unlink("$tmpFile.html") or die "Failed to unlink $tmpFile.html : $!";
 }
 
 #
@@ -182,7 +185,9 @@
   my ($htmlData) = @_;
 
   # correct referenced images
-  $htmlData =~ s/<img src=\"$webDirUrl/<img src=\"$localWebDir/g;
+  for my $url (@webDirUrls) {
+      $htmlData =~ s/<img(\s+(\w+\=\"[^\"]*\"\s+)*)src=\"$url/<img $1 src=\"$localWebDir/g;
+  }
   # remove all page breaks
   $htmlData =~ s/<p style=\"page-break-before:always\"\/>//g;
 
@@ -257,20 +262,17 @@
     my $meta = "";
     my $rev = $query->param( "rev" );
     my $maxrev = 1;
-    my $extra = "";
-    my $wikiUserName = &TWiki::userToWikiName( $userName );
+    my $wikiUserName = &TWiki::Func::userToWikiName( $userName );
     my $revdate = "";
     my $revuser = "";
-    my $viewRaw = $query->param( "raw" ) || "";
     my $unlock  = $query->param( "unlock" ) || "";
     my $skin    = $query->param( "skin" ) || "plain";
     my $viewMeta = $query->param( "meta" ) || "";
-    if ($viewMeta) { $viewRaw = "debug"; }
 
     # get view template, standard view or a view with a different skin
-    $tmpl = &TWiki::Store::readTemplate( "view", $skin );
+    $tmpl = &TWiki::Func::readTemplate( "view", $skin );
     if( ! $tmpl ) {
-        TWiki::writeHeader( $query );
+        TWiki::Func::writeHeader( $query );
         print "<html><body>\n"
             . "<h1>TWiki Installation Error</h1>\n"
             . "Template file view.tmpl not found or template directory \n"
@@ -280,28 +282,23 @@
         exit;
     }
 
-    if( ! &TWiki::Store::webExists( $webName ) ) {
-        my $url = &TWiki::getOopsUrl( $webName, $topic, "oopsnoweb" );
-        TWiki::redirect( $query, $url );
+    if( ! &TWiki::Func::webExists( $webName ) ) {
+        my $url = &TWiki::Func::getOopsUrl( $webName, $topic, "oopsnoweb" );
+        TWiki::Func::redirectCgiQuery( $query, $url );
         exit;
     }
 
     if( $unlock eq "on" ) {
         # unlock topic, user cancelled out of edit
-        &TWiki::Store::lockTopic( $topic, "on" );
+        &TWiki::Func::setTopicEditLock( $webName, $topic, 0 );
     }
 
     # Most recent topic read in even if earlier topic requested - makes code simpler and performance impact should be minimal
-    my $topicExists = &TWiki::Store::topicExists( $webName, $topic );
+    my $topicExists = &TWiki::Func::topicExists( $webName, $topic );
     if( $topicExists ) {
-      $text = &TWiki::Store::readTopicRaw( $webName, $topic );
+	( $meta, $text ) = &TWiki::Func::readTopic( $webName, $topic );
+	( $revdate, $revuser, $maxrev ) = $meta->getRevisionInfo();      
 
-      if( ! $viewRaw ) {
-	( $meta, $text ) = &TWiki::Store::_extractMetaData(  $webName, $topic , $text );
-	#            ( $meta, $text ) = &TWiki::Store::readTopic( $webName, $topic );
-      }
-      ( $revdate, $revuser, $maxrev ) = &TWiki::Store::getRevisionInfoFromMeta( $webName, $topic, $meta, "isoFormat" );
-      
         if( $rev ) {
             $rev =~ s/r?1\.//go;  # cut 'r' and major
             if( $rev < 1 )       { $rev = 1; }
@@ -311,108 +308,36 @@
         }
 
         if( $rev < $maxrev ) {
-            if( $viewRaw ) {
-                $text = &TWiki::Store::readTopicRaw( $webName, $topic, "1.$rev" );
-            } else {
-                ( $meta, $text ) = &TWiki::Store::readTopicVersion( $webName, $topic, "1.$rev" );
-            }
-            ( $revdate, $revuser ) = &TWiki::Store::getRevisionInfo( $webName, $topic, "1.$rev", 1 );
-            $extra .= "r1.$rev";
+	    ( $meta, $text ) = &TWiki::Func::readTopic( $webName, $topic, $rev );
+            ( $revdate, $revuser ) = $meta->getRevisionInfo();
         }
-
     } else {
-        $rev = 1;
-        if( ( &TWiki::isWikiName( $topic ) ) || ( $topic =~ /^[A-Z]{3,}$/ ) ) {
-            ( $meta, $text ) = &TWiki::Store::readTemplateTopic( "WebTopicViewTemplate" );
-        } else {
-            ( $meta, $text ) = &TWiki::Store::readTemplateTopic( "WebTopicNonWikiTemplate" );
-        }
-        $extra .= " (not exist)";
-    }
-
-    if( $viewRaw ) {
-	my $vtext = "<form><textarea readonly=\"readonly\" wrap=\"virtual\" rows=\"%EDITBOXHEIGHT%\" cols=\"%EDITBOXWIDTH%\">";
-	$vtext = &TWiki::handleCommonTags( $vtext, $topic );
-	$text = "$vtext$text</textarea></form>";
-	if( $viewRaw !~ /debug/i ) {
-	   $text =~ s/%META[\:A-Z]*{[^\}]*}%[\n\r]*//gos;
-	}
+	throw TWiki::OopsException( 'accessdenied',
+				    def => 'no_such_topic',
+				    web => $webName,
+				    topic => $topic );
     }
 
     # check access permission
     # To Do: Need to protect also %INCLUDE% and search
-    my $viewAccessOK = &TWiki::Access::checkAccessPermission( "view", $wikiUserName, $text, $topic, $webName );
-    if( ! $viewAccessOK ) {
-        # user could not be authenticated, may be not logged in yet?
-        my $viewauthFile = $ENV{'SCRIPT_FILENAME'};
-        $viewauthFile =~ s|/view|/viewauth|o;
-        if( ( ! $theRemoteUser ) && (-e $viewauthFile ) ) {
-            # try again with authenticated viewauth script
-            # instead of non authenticated view script
-            my $url = $ENV{"REQUEST_URI"};
-            if( $url ) {
-                # $url i.e. is "twiki/bin/view.cgi/Web/Topic?cms1=val1&cmd2=val2"
-                $url =~ s|/view|/viewauth|o;
-                $url = "$TWiki::urlHost$url";
-            } else {
-                $url = "$TWiki::urlHost$scriptUrlPath/$viewauthFile/$webName/$topic";
-            }
-            TWiki::redirect( $query, $url );
-            exit;
-        }
-    }
+    my $viewAccessOK = &TWiki::Func::checkAccessPermission( "view", $wikiUserName, $text, $topic, $webName );
     if( ! $viewAccessOK ) {
-        my $url = &TWiki::getOopsUrl( $webName, $topic, "oopsaccessview" );
-        TWiki::redirect( $query, $url );
-        exit;
+        my $url = &TWiki::Func::getOopsUrl( $webName, $topic, "oopsaccessview" );
+        TWiki::Func::redirectCgiQuery( $query, $url );
+	exit;
     }
 
+    # Remove TOC, since we put one in the left bar anyway
+    $text =~ s/%TOC(\{.*?\})?%//g;
 
-    if( ! $viewRaw ) {
-        $text = &TWiki::handleCommonTags( $text, $topic );
-        $text = &TWiki::Render::getRenderedVersion( $text );
-    }
+    $text = &TWiki::Func::expandCommonVariables( $text, $topic, $webName );
+    $text = &TWiki::Func::renderText( $text );
 
-    if( $TWiki::doLogTopicView ) {
-        # write log entry
-        &TWiki::Store::writeLog( "view", "$webName.$topic", $extra );
-    }
-
-    my( $mirrorSiteName, $mirrorViewURL, $mirrorLink, $mirrorNote ) = &TWiki::readOnlyMirrorWeb( $webName );
-
-    if( $mirrorSiteName ) {
-        # disable edit and attach
-        $tmpl =~ s/%EDITTOPIC%/$mirrorLink | <strike>Edit<\/strike>/o;
-        $tmpl =~ s/<a [^>]*?>Attach<\/a>/<strike>Attach<\/strike>/oi;
-        if( $topicExists ) {
-            # remove the NOINDEX meta tag
-            $tmpl =~ s/<meta name="robots"[^>]*>//goi;
-        } else {
-            $text = "";
-        }
-        $tmpl =~ s/%REVTITLE%//go;
-
-    } elsif( $rev < $maxrev ) {
-        # disable edit of previous revisions - FIXME consider change to use two templates
-        $tmpl =~ s/%EDITTOPIC%/<strike>Edit<\/strike>/o;
-        $tmpl =~ s/<a [^>]*?>Attach<\/a>/<strike>Attach<\/strike>/oi;
-        $tmpl =~ s|<a [^>]*?>Rename/move<\/a>|<strike>Rename/move<\/strike>|oi;
-        $tmpl =~ s/%REVTITLE%/\(r1.$rev\)/go;
-        $tmpl =~ s/%REVARG%/&rev=1.$rev/go;
-    } else {
-        if( $topicExists ) {
-            my( $sec, $min, $hour, $day, $mon, $year ) = gmtime( time() );
-            my $timestring = sprintf("%.2u%.2u%.2u%.2u%.2u",$mon+1,$day,$hour,$min,$sec);
-            $tmpl =~ s/%EDITTOPIC%/<a href=\"$scriptUrlPath\/edit%SCRIPTSUFFIX%\/%WEB%\/%TOPIC%\?time=$timestring\"><b>Edit<\/b><\/a>/go;
-            # remove the NOINDEX meta tag
-            $tmpl =~ s/<meta name="robots"[^>]*>//goi;
-        } else {
-            $tmpl =~ s/%EDITTOPIC%/<a href=\"$scriptUrlPath\/edit%SCRIPTSUFFIX%\/%WEB%\/%TOPIC%\"><b>Create<\/b><\/a>/go;
-
-        }
-        $tmpl =~ s/%REVTITLE%//go;
-        $tmpl =~ s/%REVARG%//go;
+    my $revTitle = '';
+    if( defined($rev) and $rev < $maxrev ) {
+	$revTitle = "(r$rev)";
     }
+    $tmpl =~ s/%REVTITLE%/$revTitle/g;
 
     my $i = $maxrev;
     my $j = $maxrev;
@@ -441,21 +366,12 @@
     }
     $tmpl =~ s/%REVISIONS%/$revisions/go;
 
-    if( $topicExists ) {
-        $revuser = &TWiki::userToWikiName( $revuser );
-        my $temp = &TWiki::Render::getRenderedVersion( "r1.$rev - $revdate GMT - $revuser" );
-        $tmpl =~ s/%REVINFO%/$temp$mirrorNote/go;
-    } else {
-        $tmpl =~ s/%REVINFO%/$mirrorNote/go;
-    }
+    $revuser = &TWiki::Func::userToWikiName( $revuser );
+    my $temp = &TWiki::Func::renderText( "r1.$rev - $revdate GMT - $revuser" );
+    $tmpl =~ s/%REVINFO%/$temp/go;
 
-    $tmpl = &TWiki::handleCommonTags( $tmpl, $topic );
-    if( $viewRaw ) {
-        $tmpl =~ s/%META{[^}]*}%//go;
-    } else {
-        $tmpl = &TWiki::handleMetaTags( $webName, $topic, $tmpl, $meta, ( $rev == $maxrev ) );
-    }
-    $tmpl = &TWiki::Render::getRenderedVersion( $tmpl, "", $meta ); ## better to use meta rendering?
+    $tmpl = &TWiki::Func::expandCommonVariables( $tmpl, $topic, $webName );
+    $tmpl = &TWiki::Func::renderText( $tmpl, "", $meta ); ## better to use meta rendering?
     $tmpl =~ s/%TEXT%/$text/go;
     $tmpl =~ s/%MAXREV%/1.$maxrev/go;
     $tmpl =~ s/%CURRREV%/1.$rev/go;
