Difference between revisions of "Changelog"

From Missouri Academy Wiki
Jump to navigation Jump to search
Line 8: Line 8:
  
 
==Done==
 
==Done==
 +
<post>
 
*Side bar links
 
*Side bar links
 
**Remove 'Community Portal'
 
**Remove 'Community Portal'
 
**Add 'The Forum'
 
**Add 'The Forum'
 
**Add 'All Pages'
 
**Add 'All Pages'
 +
<post>
 +
<pre>
 +
File: $WIKI_ROOT/templates/xhtml_slim.pt
  
 +
-70/71?: (whatever the link for community portal was, it's gone now so I dont know what exactly it said..)
 +
 +
=116:  <li id="t-specialpages"><a href="${nav_urls/specialpages/href}"
 +
=117:    i18n:translate="string:specialpages">Special Pages</a></li>
 +
+118:  <li id="t-allpages"><a href="index.php?title=Special:Allpages">All Pages</a></li>
 +
+119:  <li id="t-forum"><a href="/forum">The Forum</a></li>
 +
=120:  </ul>
 +
=121: </div>
 +
</pre>
 +
</post>
 +
</post>
 +
 +
 +
<post>
 
*Add an extension for use of a <nowiki><code> </code></nowiki> tag to display plain html stuff (for use with form's and such, sorry it doesnt do php).
 
*Add an extension for use of a <nowiki><code> </code></nowiki> tag to display plain html stuff (for use with form's and such, sorry it doesnt do php).
 +
<post>
 +
<pre>
 +
File: $WIKI_ROOT/extensions/RenderHtml.php (new file)
  
 +
      1 <?php
 +
      2 $wgExtensionFunctions[] = "wfRenderHtmlFunction";
 +
      3
 +
      4 function wfRenderHtmlFunction() {
 +
      5    global $wgParser;
 +
      6    $wgParser->setHook( "code", "RenderHtml" );
 +
      7 }
 +
      8
 +
      9 function RenderHtml( $input )
 +
    10 {
 +
    11    return $input;
 +
    12 }
 +
    13 ?>
 +
</pre>
 +
<pre>
 +
File: $WIKI_ROOT/LocalSettings.php
 +
 +
=93: $wgRightsIcon = "${wgStylePath}/images/gnu-fdl.png";
 +
=94: # $wgRightsCode = "gfdl"; # Not yet used
 +
+95: inlcude("extensions/RenderHtml.php");
 +
=96: ?>
 +
=97: (End of file)
 +
</pre>
 +
</post>
 +
</post>
 +
 +
 +
<post>
 
*Add an extension for a <nowiki><post> </post></nowiki> tag to be used in discusions. It will put a arrow next to the post to hide/unhide comments, simmilar to the 'advanced' version of the 'Recent changes' page. (working but not yet complete) check out this topic's discussion for an example of how to use.
 
*Add an extension for a <nowiki><post> </post></nowiki> tag to be used in discusions. It will put a arrow next to the post to hide/unhide comments, simmilar to the 'advanced' version of the 'Recent changes' page. (working but not yet complete) check out this topic's discussion for an example of how to use.
 +
<post>
 +
<pre>
 +
File: $WIKI_ROOT/extensions/Post.php (new file)
  
 +
      1 <?php
 +
      2 $wgExtensionFunctions[] = "wfPostFunctions";
 +
      3
 +
      4 function wfPostFunctions() {
 +
      5        global $wgParser;
 +
      6        $wgParser->setHook( "post", "RenderPost" );
 +
      7 }
 +
      8
 +
      9 function parse_post($to_parse) {
 +
    10        global $wgParser, $wgParserCache, $wgUser, $wgTitle;
 +
    11        $parserOutput = new OutputPage;
 +
    12        $parserOutput = $wgParser->parse( $to_parse, $wgTitle, $parserOutput->mParserOptions, $linestart );
 +
    13        $parserOutput->mLanguageLinks += $parserOutput->getLanguageLinks();
 +
    14        $parserOutput->mCategoryLinks += $parserOutput->getCategoryLinks();
 +
    15        return $parserOutput->getText();
 +
    16 }
 +
    17
 +
    18 function RenderPost( $input )
 +
    19 {
 +
    20        $posts = explode('<post>', $input, 2);
 +
    21        $comments = explode('</post>', $posts[1]);
 +
    22        if ($comments[1] == '') {
 +
    23                $top = "<div>".parse_post($posts[0])."<span style=\"font-size:10pt; font-style:italic; margin-left:0px;\">No Comments</a></span>";
 +
    24                $middle = '';
 +
    25                $bottom = "</div>";
 +
    26        }
 +
    27        else {
 +
    28        global $pn;
 +
    29        $pn++;
 +
    30        $sig = parse_post("--~~~~");
 +
    31        $sig = '';
 +
    32        $post = parse_post($posts[0]);
 +
    33        $top = "
 +
    34                <div>
 +
    35                        $post
 +
    36                        <span id=\"sc$pn\">$sig
 +
    37                                <a href=\"javascript:toggleVisibility('ps$pn', 'sc$pn', 'hc$pn')\" style=\"font-size:10pt; font-style:italic; margin-left:0px;\">
 +
    38                                        Show Comments
 +
    39                                </a>
 +
    40                        </span>
 +
    41                        <span id=\"hc$pn\" style=\"display:none;\">$sig
 +
    42                                <a href=\"javascript:toggleVisibility('ps$pn', 'sc$pn', 'hc$pn')\" style=\"font-size:10pt; font-style:italic; margin-left:0px;\">
 +
    43                                        Hide Comments
 +
    44                                </a>
 +
    45                        </span>
 +
    46                        <div id=\"ps$pn\" style=\"display:none; margin-left:25px;\">
 +
    47                ";
 +
    48
 +
    49        $middle = parse_post("<post>".$posts[1]);
 +
    50
 +
    51        $bottom = "\t</div>
 +
    52                </div>";
 +
    53        }
 +
    54        $output = $top.$middle.$bottom;
 +
    55        return $output;
 +
    56 }
 +
    57 ?>
 +
</pre>
 +
<pre>
 +
File: $WIKI_ROOT/LocalSettings.php
 +
 +
=94: # $wgRightsCode = "gfdl"; # Not yet used
 +
=95: include("extensions/RenderHtml.php");
 +
+96: include("extensions/Post.php");
 +
=97: ?>
 +
=98: (End of file)
 +
</pre>
 +
<pre>
 +
File: $WIKI_ROOT/includes/Parser.php
 +
 +
(For now here's the updated extractTags function (the old one wouldn't allow there to be tag's within tags))
 +
 +
    153        /* static */ function extractTags($tag, $text, &$content, $uniq_prefix = ""){
 +
    154                $rnd = $uniq_prefix . '-' . $tag . Parser::getRandomString();
 +
    155                if ( !$content ) {
 +
    156                        $content = array( );
 +
    157                }
 +
    158                $n = 1;
 +
    159                $stripped = '';
 +
    160
 +
    161                if($tag==STRIP_COMMENTS) {
 +
    162                        while ( '' != $text ) {
 +
    163                                $p = preg_split( '/<!--/i', $text, 2 );
 +
    164                                $stripped .= $p[0];
 +
    165                                if ( ( count( $p ) < 2 ) || ( '' == $p[1] ) ) {
 +
    166                                        $text = '';
 +
    167                                } else {
 +
    168                                        $q = preg_split( '/-->/i', $p[1], 2 );
 +
    169                                        $marker = $rnd . sprintf('%08X', $n++);
 +
    170                                        $content[$marker] = $q[0];
 +
    171                                        $stripped .= $marker;
 +
    172                                        $text = $q[1];
 +
    173                                }
 +
    174                        }
 +
    175                }
 +
    176                else {
 +
    177                        $p = preg_split( "/<\\s*$tag\\s*>/i", $text); // splits everything by start tags
 +
    178                        $stripped .= $p[0]; // takes care of anything before the first tag
 +
    179                        $starts = 1;
 +
    180                        $ends = 0;
 +
    181                        $marker = $rnd . sprintf('%08X', $n++);
 +
    182                        while ( '' != $p[$starts] ) { // loop through tag's finding end's and such
 +
    183                                $q = preg_split( "/<\\/\\s*$tag\\s*>/i", $p[$starts]);
 +
    184                                $ends = $ends + count($q) - 1;
 +
    185                                if ($starts <= $ends) {
 +
    186                                        $cnt = $q[0];
 +
    187                                        for($i = 1; $i < count($q)-1; $i++) {
 +
    188                                                $cnt .= '</'.$tag.'>';
 +
    189                                                $cnt .= $q[$i];
 +
    190                                        }
 +
    191                                        $content[$marker] .= $cnt;
 +
    192                                        $stripped .= $marker . $q[count($q)-1];
 +
    193                                        $text = $q[1];
 +
    194                                        $starts++;
 +
    195                                        $marker = $rnd . sprintf('%08X', $n++);
 +
    196                                }
 +
    197                                else {
 +
    198                                        $content[$marker] .= $p[$starts].'<'.$tag.'>';
 +
    199                                        $starts++;
 +
    200                                }
 +
    201                        }
 +
    202                }
 +
    203
 +
    204                /* ##### Begin Old Code #####
 +
    205                while ( '' != $text ) {
 +
    206                        if($tag==STRIP_COMMENTS) {
 +
    207                                $p = preg_split( '/<!--/i', $text, 2 );
 +
    208                        } else {
 +
    209                                $p = preg_split( "/<\\s*$tag\\s*>/i", $text, 2 );
 +
    210                        }
 +
    211                        $stripped .= $p[0];
 +
    212                        if ( ( count( $p ) < 2 ) || ( '' == $p[1] ) ) {
 +
    213                                $text = '';
 +
    214                        } else {
 +
    215                                if($tag==STRIP_COMMENTS) {
 +
    216                                        $q = preg_split( '/-->/i', $p[1], 2 );
 +
    217                                } else {
 +
    218                                        $q = preg_split( "/<\\/\\s*$tag\\s*>/i", $p[1], 2 );
 +
    219                                }
 +
    220                                $marker = $rnd . sprintf('%08X', $n++);
 +
    221                                $content[$marker] = $q[0];
 +
    222                                $stripped .= $marker;
 +
    223                                $text = $q[1];
 +
    224                        }
 +
    225                }
 +
    226                */
 +
    227                return $stripped;
 +
    228        }
 +
</pre>
 +
</post>
 +
</post>
 +
 +
 +
<post>
 
*Sort the All Pages list vertically rather than horizontally.
 
*Sort the All Pages list vertically rather than horizontally.
 +
<post>
 +
<pre>
 +
File: $WIKI_ROOT/includes/SpecialAllpages.php
 +
 +
(For now here's the updated indexShowChunk function, I think this is all that I changed, (we'll see when this place get supgraded to 1.4.0))
 +
 +
    108 function indexShowChunk( $from )
 +
    109 {
 +
    110        global $wgOut, $wgUser, $indexMaxperpage, $wgLang;
 +
    111        $sk = $wgUser->getSkin();
 +
    112        $maxPlusOne = $indexMaxperpage + 1;
 +
    113
 +
    114        $out = "";
 +
    115        $sql = "SELECT cur_title FROM cur WHERE cur_namespace=0 AND cur_title >= '"
 +
    116                . wfStrencode( $from ) . "' ORDER BY cur_title LIMIT " . $maxPlusOne;
 +
    117        $res = wfQuery( $sql, DB_READ, "indexShowChunk" );
 +
    118
 +
    119        $n = 1;
 +
    120
 +
    121        //bufferer all links
 +
    122        while( ($n < $indexMaxperpage) && ($s = wfFetchObject( $res )) ) {
 +
    123                $t[$n] = Title::makeTitle( 0, $s->cur_title );
 +
    124                if( $t[$n] ) {
 +
    125                        $ll[$n] = $sk->makeKnownLinkObj( $t[$n] );
 +
    126                } else {
 +
    127                        $ll[$n] = "[[" . htmlspecialchars( $s->cur_title ) . "]]";
 +
    128                }
 +
    129                $n++;
 +
    130        }
 +
    131        $n = count($ll);
 +
    132        //packer
 +
    133
 +
    134        $cols = 3; //variable number of coloms to display
 +
    135        $sort_vert='true';
 +
    136        $col = 1;
 +
    137        $row = 1;
 +
    138        $c = 1;
 +
    139
 +
    140        if ($sort_vert == 'true') {
 +
    141                while ( $c<=$n ) {
 +
    142                        for ($row=1; $row-1 < (($n)/$cols); $row++) {
 +
    143                                $link[$row][$col] = $ll[$c];
 +
    144                                $c++;
 +
    145                        }
 +
    146                        $col++;
 +
    147                }
 +
    148        } else {
 +
    149                while ($c<=$n) {
 +
    150                        for ($col=1; $col <= $cols; $col++) {
 +
    151                                $link[$row][$col] = $ll[$c];
 +
    152                                $c++;
 +
    153                        }
 +
    154                        $row++;
 +
    155                }
 +
    156        }
 +
    157
 +
    158        //get ready to output
 +
    159        $row = 1;
 +
    160        $c = 1;
 +
    161        $out = '<table border="0" width="100%">'."\n";
 +
    162
 +
    163        //output
 +
    164        while ($c<=$n) {
 +
    165                $out .= '<tr>';
 +
    166                for ($col=1; ($col<=$cols); $col++) {
 +
    167                        if($link[$row][$col]) {
 +
    168                                $out .= '<td>'.$link[$row][$col].'</td>';
 +
    169                                $c++;
 +
    170                        }
 +
    171                        else {
 +
    172                                $out .= '<td></td>';
 +
    173                                $c++;
 +
    174                        }
 +
    175                }
 +
    176                $out .= "</tr>\n";
 +
    177                $row++;
 +
    178        }
 +
    179
 +
    180        $out .= "</table>\n";
 +
    181
 +
    182        $out2 = "<div style='text-align: right; font-size: smaller; margin-bottom: 1em;'>" .
 +
    183                        $sk->makeKnownLink( $wgLang->specialPage( "Allpages" ),
 +
    184                                wfMsg ( 'allpages' ) );
 +
    185        if ( ($n == $indexMaxperpage) && ($s = wfFetchObject( $res )) ) {
 +
    186                $out2 .= " | " . $sk->makeKnownLink(
 +
    187                        $wgLang->specialPage( "Allpages" ),
 +
    188                        wfMsg ( 'nextpage', $s->cur_title ),
 +
    189                        "from=" . urlencode( $s->cur_title ) );
 +
    190        }
 +
    191        $out2 .= "</div>";
 +
    192
 +
    193        $wgOut->addHtml( $out2 . $out );
 +
    194 }
 +
</pre>
 +
</post>
 +
</post>

Revision as of 01:46, 23 March 2005

This is a list of changes made to the moacad wiki source as opposed to normal wikimedia source.

Planned

  • Make image uploads go to a different server

In Progress

  • Default picture

Done

<post>

  • Side bar links
    • Remove 'Community Portal'
    • Add 'The Forum'
    • Add 'All Pages'

<post>

File: $WIKI_ROOT/templates/xhtml_slim.pt 

-70/71?: (whatever the link for community portal was, it's gone now so I dont know what exactly it said..)

=116:   <li id="t-specialpages"><a href="${nav_urls/specialpages/href}"
=117:     i18n:translate="string:specialpages">Special Pages</a></li>
+118:   <li id="t-allpages"><a href="index.php?title=Special:Allpages">All Pages</a></li>
+119:   <li id="t-forum"><a href="/forum">The Forum</a></li>
=120:  </ul>
=121: </div>

</post> </post>


<post>

  • Add an extension for use of a <code> </code> tag to display plain html stuff (for use with form's and such, sorry it doesnt do php).

<post>

File: $WIKI_ROOT/extensions/RenderHtml.php (new file)

      1 <?php
      2 $wgExtensionFunctions[] = "wfRenderHtmlFunction";
      3 
      4 function wfRenderHtmlFunction() {
      5     global $wgParser;
      6     $wgParser->setHook( "code", "RenderHtml" );
      7 }
      8 
      9 function RenderHtml( $input )
     10 {
     11     return $input;
     12 }
     13 ?>
File: $WIKI_ROOT/LocalSettings.php

=93: $wgRightsIcon = "${wgStylePath}/images/gnu-fdl.png";
=94: # $wgRightsCode = "gfdl"; # Not yet used
+95: inlcude("extensions/RenderHtml.php");
=96: ?>
=97: (End of file)

</post> </post>


<post>

  • Add an extension for a <post> </post> tag to be used in discusions. It will put a arrow next to the post to hide/unhide comments, simmilar to the 'advanced' version of the 'Recent changes' page. (working but not yet complete) check out this topic's discussion for an example of how to use.

<post>

File: $WIKI_ROOT/extensions/Post.php (new file)

      1 <?php
      2 $wgExtensionFunctions[] = "wfPostFunctions";
      3 
      4 function wfPostFunctions() {
      5         global $wgParser;
      6         $wgParser->setHook( "post", "RenderPost" );
      7 }
      8 
      9 function parse_post($to_parse) {
     10         global $wgParser, $wgParserCache, $wgUser, $wgTitle;
     11         $parserOutput = new OutputPage;
     12         $parserOutput = $wgParser->parse( $to_parse, $wgTitle, $parserOutput->mParserOptions, $linestart );
     13         $parserOutput->mLanguageLinks += $parserOutput->getLanguageLinks();
     14         $parserOutput->mCategoryLinks += $parserOutput->getCategoryLinks();
     15         return $parserOutput->getText();
     16 }
     17 
     18 function RenderPost( $input )
     19 {
     20         $posts = explode('<post>', $input, 2);
     21         $comments = explode('</post>', $posts[1]);
     22         if ($comments[1] == '') {
     23                 $top = "<div>".parse_post($posts[0])."<span style=\"font-size:10pt; font-style:italic; margin-left:0px;\">No Comments</a></span>";
     24                 $middle = '';
     25                 $bottom = "</div>";
     26         }
     27         else {
     28         global $pn;
     29         $pn++;
     30         $sig = parse_post("--~~~~");
     31         $sig = '';
     32         $post = parse_post($posts[0]);
     33         $top = "
     34                 <div>
     35                         $post
     36                         <span id=\"sc$pn\">$sig
     37                                 <a href=\"javascript:toggleVisibility('ps$pn', 'sc$pn', 'hc$pn')\" style=\"font-size:10pt; font-style:italic; margin-left:0px;\">
     38                                         Show Comments
     39                                 </a>
     40                         </span>
     41                         <span id=\"hc$pn\" style=\"display:none;\">$sig
     42                                 <a href=\"javascript:toggleVisibility('ps$pn', 'sc$pn', 'hc$pn')\" style=\"font-size:10pt; font-style:italic; margin-left:0px;\">
     43                                         Hide Comments
     44                                 </a>
     45                         </span>
     46                         <div id=\"ps$pn\" style=\"display:none; margin-left:25px;\">
     47                 ";
     48 
     49         $middle = parse_post("<post>".$posts[1]);
     50 
     51         $bottom = "\t</div>
     52                 </div>";
     53         }
     54         $output = $top.$middle.$bottom;
     55         return $output;
     56 }
     57 ?>
File: $WIKI_ROOT/LocalSettings.php

=94: # $wgRightsCode = "gfdl"; # Not yet used
=95: include("extensions/RenderHtml.php");
+96: include("extensions/Post.php");
=97: ?>
=98: (End of file)
File: $WIKI_ROOT/includes/Parser.php

(For now here's the updated extractTags function (the old one wouldn't allow there to be tag's within tags))

    153         /* static */ function extractTags($tag, $text, &$content, $uniq_prefix = ""){
    154                 $rnd = $uniq_prefix . '-' . $tag . Parser::getRandomString();
    155                 if ( !$content ) {
    156                         $content = array( );
    157                 }
    158                 $n = 1;
    159                 $stripped = '';
    160 
    161                 if($tag==STRIP_COMMENTS) {
    162                         while ( '' != $text ) {
    163                                 $p = preg_split( '/<!--/i', $text, 2 );
    164                                 $stripped .= $p[0];
    165                                 if ( ( count( $p ) < 2 ) || ( '' == $p[1] ) ) {
    166                                         $text = '';
    167                                 } else {
    168                                         $q = preg_split( '/-->/i', $p[1], 2 );
    169                                         $marker = $rnd . sprintf('%08X', $n++);
    170                                         $content[$marker] = $q[0];
    171                                         $stripped .= $marker;
    172                                         $text = $q[1];
    173                                 }
    174                         }
    175                 }
    176                 else {
    177                         $p = preg_split( "/<\\s*$tag\\s*>/i", $text); // splits everything by start tags
    178                         $stripped .= $p[0]; // takes care of anything before the first tag
    179                         $starts = 1;
    180                         $ends = 0;
    181                         $marker = $rnd . sprintf('%08X', $n++);
    182                         while ( '' != $p[$starts] ) { // loop through tag's finding end's and such
    183                                 $q = preg_split( "/<\\/\\s*$tag\\s*>/i", $p[$starts]);
    184                                 $ends = $ends + count($q) - 1;
    185                                 if ($starts <= $ends) {
    186                                         $cnt = $q[0];
    187                                         for($i = 1; $i < count($q)-1; $i++) {
    188                                                 $cnt .= '</'.$tag.'>';
    189                                                 $cnt .= $q[$i];
    190                                         }
    191                                         $content[$marker] .= $cnt;
    192                                         $stripped .= $marker . $q[count($q)-1];
    193                                         $text = $q[1];
    194                                         $starts++;
    195                                         $marker = $rnd . sprintf('%08X', $n++);
    196                                 }
    197                                 else {
    198                                         $content[$marker] .= $p[$starts].'<'.$tag.'>';
    199                                         $starts++;
    200                                 }
    201                         }
    202                 }
    203 
    204                 /* ##### Begin Old Code #####
    205                 while ( '' != $text ) {
    206                         if($tag==STRIP_COMMENTS) {
    207                                 $p = preg_split( '/<!--/i', $text, 2 );
    208                         } else {
    209                                 $p = preg_split( "/<\\s*$tag\\s*>/i", $text, 2 );
    210                         }
    211                         $stripped .= $p[0];
    212                         if ( ( count( $p ) < 2 ) || ( '' == $p[1] ) ) {
    213                                 $text = '';
    214                         } else {
    215                                 if($tag==STRIP_COMMENTS) {
    216                                         $q = preg_split( '/-->/i', $p[1], 2 );
    217                                 } else {
    218                                         $q = preg_split( "/<\\/\\s*$tag\\s*>/i", $p[1], 2 );
    219                                 }
    220                                 $marker = $rnd . sprintf('%08X', $n++);
    221                                 $content[$marker] = $q[0];
    222                                 $stripped .= $marker;
    223                                 $text = $q[1];
    224                         }
    225                 }
    226                 */
    227                 return $stripped;
    228         }

</post> </post>


<post>

  • Sort the All Pages list vertically rather than horizontally.

<post>

File: $WIKI_ROOT/includes/SpecialAllpages.php

(For now here's the updated indexShowChunk function, I think this is all that I changed, (we'll see when this place get supgraded to 1.4.0))

    108 function indexShowChunk( $from )
    109 {
    110         global $wgOut, $wgUser, $indexMaxperpage, $wgLang;
    111         $sk = $wgUser->getSkin();
    112         $maxPlusOne = $indexMaxperpage + 1;
    113 
    114         $out = "";
    115         $sql = "SELECT cur_title FROM cur WHERE cur_namespace=0 AND cur_title >= '"
    116                 . wfStrencode( $from ) . "' ORDER BY cur_title LIMIT " . $maxPlusOne;
    117         $res = wfQuery( $sql, DB_READ, "indexShowChunk" );
    118 
    119         $n = 1;
    120 
    121         //bufferer all links
    122         while( ($n < $indexMaxperpage) && ($s = wfFetchObject( $res )) ) {
    123                 $t[$n] = Title::makeTitle( 0, $s->cur_title );
    124                 if( $t[$n] ) {
    125                         $ll[$n] = $sk->makeKnownLinkObj( $t[$n] );
    126                 } else {
    127                         $ll[$n] = "[[" . htmlspecialchars( $s->cur_title ) . "]]";
    128                 }
    129                 $n++;
    130         }
    131         $n = count($ll);
    132         //packer
    133 
    134         $cols = 3; //variable number of coloms to display
    135         $sort_vert='true';
    136         $col = 1;
    137         $row = 1;
    138         $c = 1;
    139 
    140         if ($sort_vert == 'true') {
    141                 while ( $c<=$n ) {
    142                         for ($row=1; $row-1 < (($n)/$cols); $row++) {
    143                                 $link[$row][$col] = $ll[$c];
    144                                 $c++;
    145                         }
    146                         $col++;
    147                 }
    148         } else {
    149                 while ($c<=$n) {
    150                         for ($col=1; $col <= $cols; $col++) {
    151                                 $link[$row][$col] = $ll[$c];
    152                                 $c++;
    153                         }
    154                         $row++;
    155                 }
    156         }
    157 
    158         //get ready to output
    159         $row = 1;
    160         $c = 1;
    161         $out = '<table border="0" width="100%">'."\n";
    162 
    163         //output
    164         while ($c<=$n) {
    165                 $out .= '<tr>';
    166                 for ($col=1; ($col<=$cols); $col++) {
    167                         if($link[$row][$col]) {
    168                                 $out .= '<td>'.$link[$row][$col].'</td>';
    169                                 $c++;
    170                         }
    171                         else {
    172                                 $out .= '<td></td>';
    173                                 $c++;
    174                         }
    175                 }
    176                 $out .= "</tr>\n";
    177                 $row++;
    178         }
    179 
    180         $out .= "</table>\n";
    181 
    182         $out2 = "<div style='text-align: right; font-size: smaller; margin-bottom: 1em;'>" .
    183                         $sk->makeKnownLink( $wgLang->specialPage( "Allpages" ),
    184                                 wfMsg ( 'allpages' ) );
    185         if ( ($n == $indexMaxperpage) && ($s = wfFetchObject( $res )) ) {
    186                 $out2 .= " | " . $sk->makeKnownLink(
    187                         $wgLang->specialPage( "Allpages" ),
    188                         wfMsg ( 'nextpage', $s->cur_title ),
    189                         "from=" . urlencode( $s->cur_title ) );
    190         }
    191         $out2 .= "</div>";
    192 
    193         $wgOut->addHtml( $out2 . $out );
    194 }

</post> </post>