Difference between revisions of "MediaWikiDoc:Code"

From HypertWiki
Jump to navigation Jump to search
(moved "how to add another nav link box" to its own page)
(moved to htyp)
 
Line 1: Line 1:
[[Techniques]]: [[MediaWiki]]: [[MediaWikiDoc:Code|Code]]
{{to htyp}}
==Where the Nav Links Come From==
In [[MediaWikiDoc:SkinTemplate.php|SkinTemplate.php]], function outputPage seems to be building a massive hierarchical array ($tpl) of all the various components needed to display a wiki page, which is then converted to HTML (etc.) by the code in the applicable (skin name).php file.
 
Significant lines for generating the navigation links would appear to be these:
<pre>
$tpl->set( 'navigation_urls', $this->buildNavigationUrls() );
$tpl->set( 'nav_urls', $this->buildNavUrls() );
</pre>
Both of these return arrays which are added to the $tpl array. Function buildNavigationUrls() uses $wgNavigationLinks as a source for its list of links. Function buildNavUrls(), however, has a hard-coded list; it's not clear what the relationship is between those two.
 
$wgNavigationLinks is defined in [[MediaWikiDoc:DefaultSettings.php|DefaultSettings.php]], and presumably can be redefined in [[MediaWikiDoc:LocalSettings.php|LocalSettings.php]] (if, say, you wanted to add more lines to the "navigation" linkbox):
<pre>
$wgNavigationLinks = array (
array( 'text'=>'mainpage', 'href'=>'mainpage' ),
array( 'text'=>'portal', 'href'=>'portal-url' ),
array( 'text'=>'currentevents', 'href'=>'currentevents-url' ),
array( 'text'=>'recentchanges', 'href'=>'recentchanges-url' ),
array( 'text'=>'randompage', 'href'=>'randompage-url' ),
array( 'text'=>'help', 'href'=>'helppage' ),
array( 'text'=>'sitesupport', 'href'=>'sitesupport-url' ),
);
</pre>
Each of the strings (except "text" and "href") refers to a value which is settable via the wiki, e.g. the value of "mainpage" can be set by editing the contents of [[MediaWiki:mainpage]].
 
From there, I was able to figure out how to [[MediaWikiDoc:Add a New Navigation Box|Add a New Navigation Box]].
==How A Page is Built==
''(From [[User:Woozle|Woozle]] 21:59, 15 Jun 2005 (EDT).)''
*Everything obviously starts with [[MediaWikiDoc:index.php|index.php]]
*For the purpose of displaying a page (not saving changes or doing anything else), this calls $wgArticle->view(), in [[MediaWikiDoc:Article.php|Article.php]] (line 699)
*$wgArticle->view() appears to be able to provide a few other formats besides the regular view (including difference engine and displaying redirections as subtitles), but I'm ignoring that for now
*$wgOut seems to be the object which accumulates text to be output. It is created in [[MediaWikiDoc:Setup.php|Setup.php]]:
**$wgOut = new OutputPage();
*OutputPage() is defined in [[MediaWikiDoc:OutputPage.php|OutputPage.php]]
*After being created, $wgOut accumulates output via various class methods:
**$wgOut->[[MediaWikiDoc:OutputPage.php#function addWikiText|addWikiText]](...)
**$wgOut->[[MediaWikiDoc:OutputPage.php#function addHTML|addHTML]](...)
**$wgOut->[[MediaWikiDoc:OutputPage.php#function addPrimaryWikiText|addPrimaryWikiText]]() # Display content and save to parser cache
**$wgOut->[[MediaWikiDoc:OutputPage.php#function addWikiText|addWikiText]]() # Display content, don't attempt to save to parser cache
**$wgOut->[[MediaWikiDoc:OutputPage.php#function setPageTitle|setPageTitle]]()
**$wgOut->[[MediaWikiDoc:OutputPage.php#function transformBuffer|transformBuffer]](); # Put link titles into the link cache
**$wgOut->[[MediaWikiDoc:OutputPage.php#function addMetaTags|addMetaTags]](); # Add link titles as META keywords
*...and then it does these two lines:
**$this->viewUpdates(); ''(found at line 1926 -- doesn't do much)''
**wfProfileOut( $fname );
*It's not clear whether the navbar has already been pulled in by the time we hit viewUpdates -- possibly transformBuffer does it? The comment makes it sound like that, but the name "transformBuffer" in that case is not very descriptive. The code in there should probably be examined.

Latest revision as of 16:11, 7 December 2005

VYPLGO2.64pxh.png This page has been moved to HTYP, the HyperTwin Yellow Pages.