Hi Kaseluris Nikos! Since 2011 we decided to document skin and pay more attention to them. I'm pretty sure that beautiful skins will boost mediawiki popularity. Can you finalize the description of your skin here? I've created the initial version but I don't know some fields, like example of usage, version, etc. http://www.mediawiki.org/wiki/Skin:Synagonism ----- Yury Katkov, WikiVote
On Mon, May 20, 2013 at 8:14 PM, Kaseluris-Nikos-1959 kaseluris.nikos@gmail.com wrote:
At the end of 2011 I have created the synagonism-mw skin [1] with similar FUNCTIONALITY (no coding) but got NO attention of the community.
[1] http://synagonism-mw.sourceforge.net/
On Mon, May 20, 2013 at 6:56 PM, Jason Lewis jason.lewis1991@gmail.comwrote:
Hello,
Let me start off by introducing myself. My name is Jason Lewis and I'm a developer and (some kind of) designer from Australia. I play a role in the community side of things for a PHP framework called Laravel.
Over the last few days I've developed a skin for the Laravel community wiki that fits in with the overall theme of the other community sites. The idea was to make it blend, but to also keep some sort of wiki "feel" to it. On the surface it looks very fresh but at its core it is still very much Media Wiki. You can check the skin out here: http://wiki.laravel.io
The purpose of this thread is to give you an overview of how I went about skinning Media Wiki from the point of view of someone who has never attempted it before. I've used Media Wiki in the past but never done anything besides changing the default logo.* *During the process of skinning I used the following tutorial as a reference for some of the inner-workings of Media Wiki: http://www.mediawiki.org/wiki/Manual:Skinning/Tutorial
*The Design
Before I even started looking at how to skin Media Wiki I drafted up a design with just standard HTML/CSS. I used the Wikipedia site as a reference here for some of the required elements but also referred to the linked tutorial above as it mentions some design considerations. During this designing stage I didn't used my own markup and gave my classes my own names. I didn't think of the Media Wiki class names or IDs, that would come later. Once I was happy with my design I begun the skinning process.
*The Skinning
This wasn't as hard as I was imagining it to be. There aren't a lot of quality resources out there that go through skinning Media Wiki. Most just say copy "MonoBook" and change it to fit your needs. I don't like that. That, to me, feels very hacky. It was good to see the tutorial linked above actually go through the setup procedure and the required files. What's even better about this tutorial is that everything seemed separated. There were a few tutorials that I briefly skimmed over that seemed to do everything in the actual "skin" file.
I essentially copied the first part of that tutorial word-for-word, as I had no idea how Media Wiki handled it all.
Once I got to the meat of my skin I only focused on the main elements. The first part was the navigation bar. The only dynamically generated part of that navigation bar is the "Toolbox" and the user section ("request account", "login", then the actual user navigation). Everything else uses static links and text. This was my first hurdle. How do I make a link with Media Wiki? Luckily I got some help in the #mediawiki IRC. The "Linker" and "Title" classes were what I was after. Here's an example.
<?php echo Linker::link(Title::newFromText('Laracon')); ?>
Next up I need to get the logged in user. I can't remember where but I managed to stumble upon the $wgUser global variable (shudders). Using this variable I could check if the user was logged in, if so output the users menu, or if not show the login or register links.
After the navigation bar I went straight to the content and got that all sorted. Once I had both these main sections completed I moved on to other sections, like the "new talk" notifications and search box. There were a few things I had to adjust slightly, such as the "action links" that appear above a page ("edit", "discussion", etc). But for the most part it was pretty easy.
The last little hurdle I had to jump was pulling the table of contents from the page and sticking it to the left so that it scrolls with you. Originally I wanted to somehow pull it on the server side and do it that way. After a little trial and error and trawling through the API (plus some tips from the IRC guys, thanks!) I decided to just use a jQuery approach. Using jQuery I just pull the ToC out, and insert it before the main content then use CSS for the rest.
That pretty much covers my experience and case study. The source of the skin is available on GitHub for those interested: https://github.com/jasonlewis/laravel-io-wiki-skin
Thanks for reading. I'd be happy to answer any further questions.
Jason _______________________________________________ MediaWiki-l mailing list MediaWiki-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
-- Kaseluris-Nikos-1959 Synagonism = ALL winners, Antagonism = ONE winner _______________________________________________ MediaWiki-l mailing list MediaWiki-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-l