From: <de...@de...> - 2012-05-13 07:11:56
|
Author: PeterThoeny Date: 2012-05-13 02:11:49 -0500 (Sun, 13 May 2012) New Revision: 22927 Trac url: http://develop.twiki.org/trac/changeset/22927 Modified: twiki/trunk/core/lib/TWiki.pm Log: Item6875: New TOPICTITLE variable feature - performance improvement of TOPICTITLE: Avoid re-reading meta data for base topic Modified: twiki/trunk/core/lib/TWiki.pm =================================================================== --- twiki/trunk/core/lib/TWiki.pm 2012-05-13 04:47:14 UTC (rev 22926) +++ twiki/trunk/core/lib/TWiki.pm 2012-05-13 07:11:49 UTC (rev 22927) @@ -3537,9 +3537,22 @@ ( $web, $topic ) = $this->normalizeWebTopicName( $web, $topic ); my $text = $topic; if( $this->{store}->topicExists( $web, $topic )) { - $text = $this->renderer->renderFORMFIELD( { _DEFAULT => "Title" }, $topic, $web ) - || $this->{prefs}->getTopicPreferencesValue( "TITLE", $web, $topic ) - || $topic; + my $meta = $this->inContext( 'can_render_meta' ); + if( $meta && $web eq $this->{SESSION_TAGS}{BASEWEB} && + $topic eq $this->{SESSION_TAGS}{BASETOPIC} ) { + # use meta data of base topic + $text = $meta->topicTitle(); + } else { + # not base topic, need to read meta data to get topic title + try { + my $dummyText; + ( $meta, $dummyText ) = $this->{store}->readTopic( + $this->{session}->{user}, $web, $topic ); + $text = $meta->topicTitle() if( $meta ); + } catch TWiki::AccessControlException with { + # Ignore access exceptions + }; + } } if( $params->{encode} ) { $text = $this->ENCODE( { _DEFAULT => $text, type => $params->{encode} } ); |