Tuesday, 17 November 2009

If Business Objects...

...was an actor, it would be Sylverster Stallone. It somehow looks slightly impressive with its sleeves rolled up. And then it opens its mouth...


Read more!

Wednesday, 11 November 2009

MediaWiki - Add a tab to everyone's Personal Tools

For a while now, I had adding an extra option to the Personal Tools on my list of things to do. My wiki's main entry point for my users is through my forum (which has a user-bridge to the wiki, meaning it is not neccessary for my users to create seperate logins for the wiki if they already have an account on the forum), but I wanted to add a link back to the main site somewhere.

The logo would have been my choice, but we use that for users to be able to return back to the main wiki-site. So I figured it would be nice to add this to the "Personal Tools" menu, which is the menu in the upper right corner that shows your username, "My talk", "My preferences", etc.

Here's how to do it. In your includes folder, there's a file called SkinTemplate.php. Open that in an editor, and look for the following:

[code]
$personal_urls['userpage'] = array(
'text' => $this->username,
'href' => &$this->userpageUrlDetails['href'],
'class' => $this->userpageUrlDetails['exists']?false:'new',
'active' => ( $this->userpageUrlDetails['href'] == $pageurl )
);[/code]

Directly above that, add the following:

[code]
$personal_urls['myId'] = array(
'text' => 'myText',
'href' => 'myHref'
);[/code]

myId is a unique identifier name for the personal url.
myText is the name you want the link to have
myHref is where the new link should point to.

That's it. You're done.

Note that the method above means the link will be the first link to appear. If you prefer setitng it somewhere inbetween instead, move the snippet of code to the proper location.


Read more!

Tuesday, 20 October 2009

MediaWiki - Help file import, no SVG support, and additional edits

Another MediaWiki post. This time, I ran into some trouble after exporting all help pages from the official wiki, and trying to import them to my own, as described here.

I'd also recommend you to import Manual:LocalSettings.php, as that is referenced in one of the help pages in an admin-only box.

At the bottom of the list of files referenced, there's a whole bunch of images, which you have to save manually. Some include files in .svg format (vector based), but before you can actually use those, you need to install additional software.

My problem is that I have no idea how to install stuff my VPN, as I am not sure my host enabled a shell account for me. So rather than potentially messing up my box, or relying on my host for something I'm not even sure will add that much value, I figured I'd learn something about wiki, and just change the references from .svg to the png format in which I saved all the files.

As you see, the official wiki page is little help. "You might have to edit some pages to fix the link".

Anyway, here's the pages/items that require editing for the images:

Template:Admin_tip
Template:PD_Help_Page (I also removed some conditional IF statement here)

Further edits I did:
All pages: Removed {{Languages}} tags.

Help:Navigation - There's an admin-block halfway down the page that references a bunch of settings in the LocalSettings.php file. However, the link seemed broken. I replaced this:

{{mediawiki|Manual:LocalSettings.php#Upload location|upload location}}


with this:

[[Manual:LocalSettings.php#Upload location]]
, and the same for the other links in the block.

Help:Starting_a_new_page - Similar edit to the one at Help:Navigation. In the admin-tip, replaced:

{{mediawiki|Extension:Inputbox|inputbox extension}}


with

[[Extension:Inputbox|inputbox extension]]


Help:Navigation references LocalSettings.php, which in turn references Template:Caution. Let's tackle that one next. First of all, we need the proper image referenced. The SVG is here, from where you can also download the other formats. I picked sng.

There's also some weird code in the template that I removed. I basically changed the whole top section, which checks the format of the template invocation, and stripped out the ability to use tables (for some reason, the conditional if made my template look all whack):

{{#if: {{{1|}}}|
}}[[Image:Nuvola apps important.svg|18px|Caution!]] '''Caution''': {{#if: {{{1|}}}|{{{1|}}}
}}


with:

[[Image:Nuvola apps important.png|18px|Caution!]] '''Caution''':


More will follow soon :)


Read more!

MediaWiki - Toolbar

Recently, we downloaded and installed MediaWiki. To our surprise, our of the box, the toolbar available when installing is lacking quite a few buttons that are standard available on wikipedia itself.

The MediaWiki helpfiles are less than helpful, though they do contain a description on how to add a single (table) button. For those wanting to replicate the look of the actual wiki, here's the code for the remaining buttons. You'll need to make modifications to two files (make backups first):


/w/EditPage.php

Find the following snippet:

),
array(
'image' => $wgLang->getImageFile('button-hr'),
'id' => 'mw-editbutton-hr',
'open' => "\n----\n",
'close' => '',
'sample' => '',
'tip' => wfMsg('hr_tip'),
'key' => 'R'
)


Below/after that, add the following:


,
array(
'image' => $wgLang->getImageFile('button-redirect'),
'id' => 'mw-editbutton-redirect',
'open' => '#REDIRECT [[',
'close' => ']]',
'sample' => wfMsg('redirect_sample'),
'tip' => wfMsg('redirect_tip'),
'key' => 'V'
),
array(
'image' => $wgLang->getImageFile('button-strike'),
'id' => 'mw-editbutton-strike',
'open' => "",
'close' => "
",
'sample' => wfMsg('strike_sample'),
'tip' => wfMsg('strike_tip'),
'key' => 'S'
),
array(
'image' => $wgLang->getImageFile('button-linebreak'),
'id' => 'mw-editbutton-linebreak',
'open' => "
",
'close' => "",
'sample' => '',
'tip' => wfMsg('linebreak_tip'),
'key' => 'BR'
),
array(
'image' => $wgLang->getImageFile('button-superscript'),
'id' => 'mw-editbutton-superscript',
'open' => "",
'close' => "
",
'sample' => wfMsg('superscript_sample'),
'tip' => wfMsg('superscript_tip'),
'key' => 'I1'
),
array(
'image' => $wgLang->getImageFile('button-subscript'),
'id' => 'mw-editbutton-subscript',
'open' => "",
'close' => "
",
'sample' => wfMsg('subscript_sample'),
'tip' => wfMsg('subscript_tip'),
'key' => 'I2'
),
array(
'image' => $wgLang->getImageFile('button-smalltext'),
'id' => 'mw-editbutton-smalltext',
'open' => "",
'close' => "
",
'sample' => wfMsg('smalltext_sample'),
'tip' => wfMsg('smalltext_tip'),
'key' => 'J1'
),
array(
'image' => $wgLang->getImageFile('button-hidden'),
'id' => 'mw-editbutton-hidden',
'open' => "",
'sample' => wfMsg('hidden_sample'),
'tip' => wfMsg('hidden_tip'),
'key' => 'HC'
),
array(
'image' => $wgLang->getImageFile('button-gallery'),
'id' => 'mw-editbutton-gallery',
'open' => "",
'close' => "
",
'sample' => wfMsg('gallery_sample'),
'tip' => wfMsg('gallery_tip'),
'key' => 'HC'
),
array(
'image' => $wgLang->getImageFile('button-blockquote'),
'id' => 'mw-editbutton-blockquote',
'open' => "
",
'close' => "
",
'sample' => wfMsg('blockquote_sample'),
'tip' => wfMsg('blockquote_tip'),
'key' => 'B1'
),
array(
'image' => $wgLang->getImageFile('button-table'),
'id' => 'mw-editbutton-table',
'open' => "{|",
'close' => "|}",
'sample' => 'class="wikitable sortable border=1 cellpadding=5"
|+ table name
|-
! style="color:#AAB5BE;background-color:#24313F;" | header 1
! style="color:#AAB5BE;background-color:#24313F;" | header 2
! style="color:#AAB5BE;background-color:#24313F;" | header 3
|-
| style="color:#24313F;" | row 1, cell 1
| style="color:#24313F;" | row 1, cell 2
| style="color:#24313F;" | row 1, cell 3
|-
| style="color:#24313F;" | row 2, cell 1
| style="color:#24313F;" | row 2, cell 2
| style="color:#24313F;" | row 2, cell 3
',
'tip' => wfMsg('table_tip'),
'key' => 'A'
),
array(
'image' => $wgLang->getImageFile('button-reference'),
'id' => 'mw-editbutton-reference',
'open' => "",
'close' => "
",
'sample' => wfMsg('reference_sample'),
'tip' => wfMsg('reference_tip'),
'key' => 'R1'
)


For icons, refer to the link above, and find the link at the first option.

Secondly, you need to edit /w/languages/messages/MessagesEn.php. This file will allow us to add both the path to the actual icons (which ought to be placed in /skins/common/images, by the way), and assign a tooltip text (which shows when you hover your mouse over a button) and a sample (which will be put as an example when you click the button. For instance, when you will click the strike-out button, this will show up: Struck out text, and Struck out text is the sample).

Find:

'button-hr' => 'button_hr.png',


Below it, add:

'button-table' => 'button_table.png',
'button-redirect' => 'button_redirect.png',
'button-strike' => 'button_strike.png',
'button-superscript' => 'button_sup_letter.png',
'button-subscript' => 'button_sub_letter.png',
'button-linebreak' => 'button_linebreak.png',
'button-smalltext' => 'button_small_text.png',
'button-hidden' => 'button_hide_comment.png',
'button-gallery' => 'button_gallery.png',
'button-blockquote' => 'button_blockquote.png',
'button-reference' => 'button_reflink.png',


Then find:

'hr_tip' => 'Horizontal line (use sparingly)',


And replace it with:

'table_tip' => 'Insert table (3 by 3)',
'redirect_tip' => 'Redirect',
'redirect_sample' => 'Target page name',
'strike_tip' => 'Strike',
'strike_sample' => 'Strike-through text',
'subscript_tip' => 'Subscript text',
'subscript_sample' => 'Subscript text',
'superscript_tip' => 'Superscript text',
'superscript_sample' => 'Superscript text',
'smalltext_tip' => 'Small text',
'smalltext_sample' => 'Small text',
'hidden_tip' => 'Insert hidden comment',
'hidden_sample' => 'Comment',
'gallery_sample' => 'Image:Example.jpg|Caption1
Image:Example.jpg|Caption2',
'gallery_tip' => 'Insert a picture gallery',
'blockquote_tip' => 'Insert block of quoted text',
'blockquote_sample' => 'Block quote',
'reference_tip' => 'Insert a reference',
'reference_sample' => 'Insert footnote text here',


That's all there really is to it. Your toolbar now reflects the standard one at wiki.


Read more!

Wednesday, 19 August 2009

The ten IKEA commandments

Today, news reported that the bible is no longer the most published book on earth, but that it in fact has been outnumbered in number of copies by the IKEA catalogue.

This calls for ten brand new commandments. The new ten IKEA commandments:

1) Thou shalt not buy assembled furniture, nor shalt thy buy furniture elsewhere.
2) Thou shalt always count thy screws before commencing assembly.
3) Thou shalt eat Swedish meatballs while thy shoppeth.
4) Thou shalt not cut ahead in line.
5) Thou shalt praise the brilliance of the cam screw.
6) Thou shalt be allowed to return thy damaged on delivery products.
7) Thou shalt not expect to be given a time of delivery.
8) Thou shalt make use of the children's playroom while thy shoppeth.
9) Thou shalt secure thy furniture to the wall in order to avoid toppling, and thou cannot sue IKEA in case of non-compliance, neener, neener.
10) The Allen Wrench shalt be the object of nightly worship.


Read more!

Monday, 18 May 2009

To Business Objects or not to Business Objects?

Just out of curiosity. How do others consider Business Objects? My former company, and my current employer use it as a reporting tool on top of their data warehouse. Basically, between the database layer and the end-user, there resides a Business Objects universe that acts as a semantical layer translating database-objects into business entities, which allows endusers without any knowledge of SQL whatsoever to quickly generate their own reports.

That's the theory behind it, anyway. In reality, expecially at my current employer, I have to develop the reports, even after the universe phase, because our client has all kinds of specifications for report layouts (that the Business Objects reporting suite was never intended to be used for, but the client already sold it to their client, and seeing THEY don't have to build it anyway, that's all fine and dandy). Add to that that the existing universe is plain unfit to be consumed by end-users, and I'm seriously wondering why on earth the company is paying top dollars every year for a product that greatly complicates even the most trivial tasks.

I present to you the following theory I came to develop over my time of working with Business Objects: "A properly desgined data warehouse (meaning star schemas using dimensions that make sense to business users) has no need for a translational layer like Business Objects provides". In other words, a proper star-schema makes the universe part of the BI implementation redundant, which will lead to the Business Objects reporting suite becoming at best a limiting (not to mention expensive) engine for making the data look pretty.


My main complaints with Business Objects:

* Pricing
* An engine that greatly complicates even the most trivial tasks
* Poor documentation and error messages
* Reliability is horrible. More than once I experienced things "magically" dissappearing or changing. At first I dismissed these as incidents or failure on my part, but I managed to be able to "reproduce" these anomalies.
* When you're working with a proper data warehouse, the universe layers adds extremely little value.

I'd be interested in hearing other people's opinions.


Read more!

Friday, 19 December 2008

Removing XP from Windows Boot Manager

The other day I figured I'd try installing XP on my Vista lappie. Unfortunately, I did not bother to read properly, and just went ahead and tried. Now one problem I have is that my DVD drive in the laptop has been wonky from the getgo. I also did not bother creating a second partition (d'oh).

Anyway, after starting the installation and going through the initial setup steps, my laptop started showing a new screen called Windows Boot Manager which showed the new XP setup, and was for some reason using that as a default boot. The end result was constant blue screens.

I eventually solved the problem by first having Vista display hidden folders and files, as well as OS files. Having done that, removing the XP entry is as simple as deleting the boot.ini file from the root folder of the drive. You can also remove the XP install folders called $WIN_NT$.~BT and $WIN_NT$.~LS.


Read more!