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.

Advertisements

2 thoughts on “Gsoc 2016 Neverland #7

  1. gianlucarigoletti says:

    Really nice skin! I am working on Neverland for Wikitolearn and I feel this skin a big step towards a moderna webpage design. I know your struggles on make list items; the php methods for generating html and text aren’t agnostic at all. Thank you for the showcase and Keep up the good work!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s