I have finished a skin for Mediawiki:

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.