Gsoc 2016 Neverland #7

I have finished a skin for Mediawiki:

Neverland   Neverland(1)

I dont feel it like a Mediawiki skin for some reasons. But it works.

When I was working with Mediawiki, I realized its source code isnt good. My mentor said:

hence i wanted you to see it 🙂

But Wikipedia is one of the biggest websites in the world and it’s using Mediawiki.

There are some awkward moments when working with MW. Here is an example:

<ul>
<?php foreach ( $this->getPersonalTools() as $key => $item ): ?>
<?php echo $this->makeListItem( $key, $item); ?>
<?php endforeach; ?>
</ul>

Source (I modified a little bit)

It renders something like this:

<ul>
<li id="pt-userpage">
    <a href="/mediawiki/index.php/User:Minhchu" class="new" dir="auto" title="Your user page [Alt+Shift+.]" accesskey=".">Minhchu</a>
</li>
<li id="pt-mytalk">
    <a href="/mediawiki/index.php/User_talk:Minhchu" class="new" title="Your talk page [Alt+Shift+n]" accesskey="n">Talk</a>
</li>
<li id="pt-preferences">
    <a href="/mediawiki/index.php/Special:Preferences" title="Your preferences" class="">Preferences</a>
</li>
<!-- ... -->
</ul>

I wanted to add style to <li> tags. I checked the wiki. Nothing here so I looked into source code mediawiki/includes/skins/BaseTemplate.php line 391. So I tried:

<ul>
<?php foreach ( $this->getPersonalTools() as $key => $item ): ?>
<?php echo $this->makeListItem( $key, $item, ['link-class' => 'header__actions--item']); ?>
<?php endforeach; ?>
</ul>

But it rendered:

<ul>
<li id="pt-userpage">
    <a href="/mediawiki/index.php/User:Minhchu" class="new header__actions--item" dir="auto" title="Your user page [Alt+Shift+.]" accesskey=".">Minhchu</a>
</li>
<li id="pt-mytalk">
    <a href="/mediawiki/index.php/User_talk:Minhchu" class="new header__actions--item" title="Your talk page [Alt+Shift+n]" accesskey="n">Talk</a>
</li>
<li id="pt-preferences">
    <a href="/mediawiki/index.php/Special:Preferences" title="Your preferences" class="header__actions--item">Preferences</a>
</li>
</ul>

What !? I feel like something was wrong here. The class header__actions--item went inside the <li> tag not for <li> itself. So I had to read the source code again. Finally I came up with a hacky-way:
<ul class="header__categories">
    <?php foreach ( $this->getPersonalTools() as $key => $item ): ?>
        <?php $item['class'] = 'header__actions--item' ?>
        <?php echo $this->makeListItem( $key, $item, ['link-class' => 'header__categories--link'] ); ?>
    <?php endforeach; ?>
</ul>

It’s awkward but it does work.

There are still some steps to finish Mediawiki builder. Now I have to deal with the documentations for Neverland since Gsoc mentioned it as requirement.

Gsoc 2016 Neverland #6

Now it’s time for Mediawiki.

One of the biggest problem is that Mediawiki skin is so simple. It is actually one file. How we can transfer the look and feel of a static html file to Mediawiki style is a big question.

And in the mean time, I have been refactoring the code, make it cleaner and using ES6 syntax.

refactor1

refactor2

It’s for this week.