Mediawiki Extensions Einbinden

Aus Laub-Home Wiki

Die ist eine kleine Liste von nützlichen Extensions für das MediaWiki inklusive Installations- und Konfigurationsanleitung. Es sind keine Must Have Extensions aber ein Blick darauf lohnt sich sicherlich!

FCKEditor

!!!Achtung!!! Funktioniert seit MediaWiki 1.18 nicht mehr.

cd /path/to/mediawiki/extensions/
wget http://upload.wikimedia.org/ext-dist/FCKeditor-MW1.17-r81394.tar.gz
tar -xzvf FCKeditor-MW1.17-r81394.tar.gz
rm FCKeditor-MW1.17-r81394.tar.gz

LocalSettings.php

# Enable FCKEditor
require_once("$IP/extensions/FCKeditor/FCKeditor.php");

$wgUseAjax = 'true';
$wgFCKEditorToolbarSet   = "Wiki";

Tips:

Bei Debian Squeeze und Ubuntu 11.04 kann der FCKEditor einfach als Extension nachinstalliert werden und aktiviert werden:

aptitude install mediawiki-extensions-fckeditor
mwenext FCKeditor.php

/usr/share/mediawiki/extensions/FCKeditor/fckeditor_config.js
Einkomentieren um auch die Text und Hintergrundfarbe ändern zu können:

['TextColor','BGColor'],

Hinzufügen um das Copy and Paste ohne nervigen PopUp zu erledigen:

FCKConfig.AutoDetectPasteFromWord = true;
FCKConfig.CleanWordKeepsStructure = false;
FCKConfig.ForcePasteAsPlainText = false;

PDFExport

Als erstes muss die Abhängigkeit htmldoc installiert werden:

aptitude install htmldoc

einfach unter extensions einen Ordner Namens PdfExport erstellen und hier die 4 PHP Files ablegen:

-rw-r--r-- 1 root root  11K 2011-06-22 20:17 PdfExport_body.php
-rw-r--r-- 1 root root  190 2011-06-22 20:17 PdfExport.i18n.alias.php
-rw-r--r-- 1 root root 8.7K 2011-06-22 20:17 PdfExport.i18n.php
-rw-r--r-- 1 root root 2.0K 2011-06-22 20:17 PdfExport.php

und einbinden
LocalSettings.php

# Enable PdfExport
require_once("$IP/extensions/PdfExport/PdfExport.php");

WikiEditor

!!!Achtung!!! Seit MediaWiki 1.18 ist dieser standardmäßig dabei und muss nur konfiguriert werden.

cd /path/to/mediawiki/extensions/
svn checkout http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/WikiEditor/

LocalSettings.php

# Enable WikiEditor
require_once( "$IP/extensions/WikiEditor/WikiEditor.php" );
$wgDefaultUserOptions['usebetatoolbar'] = 1;
$wgDefaultUserOptions['usebetatoolbar-cgd'] = 1;
$wgDefaultUserOptions['wikieditor-preview'] = 1;

SyntaxHighlight_GeSHi

Achtung! Ist mittlerweile Standardmäßig bei MediaWiki Neuinstallationen dabei!

cd /path/to/mediawiki/extensions/
svn checkout  http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SyntaxHighlight_GeSHi

LocalSettings.php

# Enable SyntaxHighlight_GeSHi
wfLoadExtension( 'SyntaxHighlight_GeSHi' );

-- Nicht mehr nötig --

damit wie bei pre ein blau gestrichelter Rahmen um den Code erscheint, der Hintergrund Grau und die Schriftgröße genauso groß ist muss die Geshi.css Datei angepasst werden:
http://www.domain.tld/index.php/MediaWiki:Geshi.css

/* This css will override styles used by the GeSHi syntax highlighting,
   such that less awful colors for the highlighting can be chosen. */


/**
 * Language code: "vb"
 * 
 * Overrides colors used for keywords from that horrible gold 
 * to more tolerable blue. Other colors left as default at present time.
 */
.source-vb .kw1 {
	color: #006 !important;
}

/**
 * Language code: "cpp"
 *
 * Color fix for member variables
 */
.source-cpp .me1 { color:#499; }
.source-cpp .me2 { color:#499; }


/* Reinstating borders */
body.skin-monobook div.mw-geshi {
	padding: 1em;
	border: 1px dashed #2f6fab;
	color: black;
	background-color: #f9f9f9;
	line-height: 1.1em;
}

body.skin-modern div.mw-geshi {
	border: solid 1px #3c78b5;
	padding: 0.4em;
	background-color: #f0f0f0;
}

body.skin-simple div.mw-geshi {
	margin: 2em;
	border: solid 1px black;
}

body.skin-chick div.mw-geshi {
	padding: 1em;
	border: 1px dashed #2f6fab;
	color: black;
	background-color: #f9f9f9;
	line-height: 1.1em;
}

body.skin-vector div.mw-geshi {
	padding: 1em;
	border: 1px dashed #2f6fab;
	color: black;
	background-color: #f9f9f9;
	line-height: 1.1em;
}


/* Fix so <syntaxhighlight> tags, and .css and .js pages, get normal text size 
   also in some versions of Firefox, Safari, Konqueror, Chrome etc. */
div.mw-geshi div,
pre {
	font-family: monospace, "Courier New" !important;
}

/* Geshi's colourscheme for MySQL is absolutely hideous. */
.mysql.source-mysql .kw1,
.mysql.source-mysql .kw2,
.mysql.source-mysql .kw3,
.mysql.source-mysql .kw6,
.mysql.source-mysql .kw10 {
	color: #993333;
}

.mysql.source-mysql .coMULTI,
.mysql.source-mysql .sy1 {
	color: #808080;
}

.mysql.source-mysql .br0 {
	color: #66cc66;
}

Lockdown

cd /path/to/mediawiki/extensions/
git clone "https://gerrit.wikimedia.org/r/mediawiki/extensions/Lockdown"

LocalSettings.php

# Enable Lockdown
wfLoadExtension( 'Lockdown' );
$wgSpecialPageLockdown['Version'] = array('user', 'bureaucrat', 'sysop');
$wgSpecialPageLockdown['Export'] = array('user', 'bureaucrat', 'sysop');
$wgSpecialPageLockdown['Listfiles'] = array('user', 'bureaucrat', 'sysop');
$wgSpecialPageLockdown['Listusers'] = array('user', 'bureaucrat', 'sysop');
$wgSpecialPageLockdown['Statistics'] = array('user', 'bureaucrat', 'sysop');
$wgSpecialPageLockdown['Booksources'] = array('user', 'bureaucrat', 'sysop');
$wgSpecialPageLockdown['Protectedpages'] = array('user', 'bureaucrat', 'sysop');
$wgActionLockdown['history'] = array('user', 'bureaucrat', 'sysop');
$wgActionLockdown['edit'] = array('user', 'bureaucrat', 'sysop');

SimpleSecurity

Achtung: Funktioniert nicht mehr!!!

cd /path/to/mediawiki/extensions/
wget http://upload.wikimedia.org/ext-dist/SimpleSecurity-MW1.17-r76413.tar.gz
tar -xzf SimpleSecurity-MW1.17-r76413.tar.gz
rm SimpleSecurity-MW1.17-r76413.tar.gz

LocalSettings.php

# Enable SimpleSecurity
$wgSecurityUseDBHook = true; #Bei MW 1.17 weglassen!
include_once("$IP/extensions/SimpleSecurity/SimpleSecurity.php");
$wgSecurityRenderInfo = true;
$wgSecurityAllowUnreadableLinks = false;

damit Die Sicherheitsbenachrichtigung besser erkennbar ist, folgendes in der Common.css eintragen:
http://wiki.domain.tld/index.php/MediaWiki:Common.css

/* Das folgende CSS wird für alle Benutzeroberflächen geladen. */
#security-info-toggle {
    background: transparent url(/wiki/skins/monobook/lock_icon.gif) no-repeat scroll left center;
    padding-left: 16px;
}
#security-info {
    border: 1px solid #ccc;
    background: #eee;
}

Vector

!!!Achtung!!! Der Vector Skin ist seit MediaWiki 1.18 standardmäßig dabei.

cd /path/to/mediawiki/extensions/
wget http://upload.wikimedia.org/ext-dist/Vector-MW1.17-r87170.tar.gz
tar -xzf Vector-MW1.17-r87170.tar.gz
rm Vector-MW1.17-r87170.tar.gz

LocalSettings.php

# Enable Vector Extension
require_once( "$IP/extensions/Vector/Vector.php" );
$wgVectorUseSimpleSearch = true;

Collection

cd /path/to/mediawiki/extensions/
wget http://upload.wikimedia.org/ext-dist/Collection-MW1.17-r85033.tar.gz
tar -xzvf Collection-MW1.17-r85033.tar.gz 
rm Collection-MW1.17-r85033.tar.gz 

LocalSettings.php

# Enable Collection Extension
require_once("$IP/extensions/Collection/Collection.php");
$wgCollectionFormats = array(
           'rl' => 'PDF',
           'odf' => 'ODT',
           'xhtml' => 'XHTML',
           'docbook' => 'Docbook XML',
       );

Description2

Diese Extension sorgt dafür das der Meta Tag Description mit den nötigen Beschreibungen gefüttert wird. Dies verbessert das Suchmaschinen Ranking.

Die Installation ist wie immer ziemlich einfach:

cd /path/to/mediawiki/extensions/

Hier dann die heruntergeladene Datei hineinkopieren

tar -xzvf wikimedia-mediawiki-extensions-Description2-3fe7637.tar.gz
rm wikimedia-mediawiki-extensions-Description2-*.tar.gz
mv wikimedia-mediawiki-extensions-Description2-* Description2

LocalSettings.php

# Description2
require_once( "$IP/extensions/Description2/Description2.php" );
$wgEnableMetaDescriptionFunctions = true;

Google Analytics Plugin

cd /path/to/mediawiki/extensions
git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/googleAnalytics.git

LocalSettings.php

# Google Analytics
require_once( "$IP/extensions/googleAnalytics/googleAnalytics.php" );
$wgGoogleAnalyticsAccount = 'UA-9210947-3';

Google Adsense Plugin

cd /path/to/mediawiki/extensions/
git clone "https://gerrit.wikimedia.org/r/mediawiki/extensions/GoogleAdSense"

LocalSettings.php

# Enable Google Adsense
require_once( "$IP/extensions/GoogleAdSense/GoogleAdSense.php" );
$wgGoogleAdSenseClient = 'ca-pub-65629xxx736782828';
$wgGoogleAdSenseSlot = '607xx3096';
$wgGoogleAdSenseID = 'wiki';
$wgGoogleAdSenseWidth  = 120;
$wgGoogleAdSenseHeight = 250;

MediaWiki:Common.css

/* Pad Google AdSense box in portlet in sidebar */
#p-googleadsense-portletlabel .Body {
    padding-top: 10px !important;
    /* text-align:  center; */
}

Here you can change the description of the adsense bar:
MediaWiki:Googleadsense-portletlabel

Sponsored Link

To bring it in the right Position in your Sidebar, just put it in the right place:

  • https://yourwikiurl/wiki/MediaWiki:Sidebar

googleadsense-portletlabel

* navigation
** mainpage|mainpage
* googleadsense-portletlabel
* Quicklinks

Since MediaWiki 1.35 and with the Vector Skin, Sidebar Gadgets are not shown anymore. But you can enable it again by modifying MediaWiki:Vector.css

just add these lines at the bottom of

  • https://yourwikiurl/MediaWiki:Vector.css
.emptyPortlet {
        display: block;
}


Here is a hack to uncollapse google Adsense bar by default (not needed anymore):
skins/Vector/collapsibleNav.js (near Line 170)

                        // In the case that we are not showing the new version, let's show the languages by default
                        if (
                                state == 'true' || id == "p-googleadsense" ||
                                ( state == null && i < 1 ) ||
                                ( state == null && version == 1 && id == 'p-lang' )
                        ) {

For further instructions see:

SelectCategory

Diese Extension ermöglicht es am unteren Ende des Editors eine oder mehrere Kategorien für einen Artikel festzulegen.

cd /path/to/mediawiki/extensions/
git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/SelectCategory.git

LocalSettings.php

require_once( "$IP/extensions/SelectCategory/SelectCategory.php" );

Um die Liste, der Kategorien etwas kleiner und scrollbar zu machen kann folgender Code in die MediaWiki:Common.css eingetragen werden:

/* verkleinert die Kategorie Liste */
#SelectCategoryList 
{
list-style-image: none;
list-style-type: none;
background-color:#EEEEEE;
height: 250px;
width: 50%;
overflow: scroll 
}

WikiCategoryTagCloud

Mit diesem Plugin ist es Möglich eine Category Cloud auf einer beliebigen Seite zu positionieren. Somit kann man zum Beispiel auf der Startseite eine Kategorie Wolke sichtbar machen, um so einen schnellen Einstieg in die Kategorien zu ermöglichen.

cd /path/to/mediawiki/extensions/
git clone "https://gerrit.wikimedia.org/r/mediawiki/extensions/WikiCategoryTagCloud"

LocalSettings.php

require_once( "$IP/extensions/WikiCategoryTagCloud/WikiCategoryTagCloud.php" );

Um die Cloud in einem Artikel zu aktivieren kann zum Beispiel folgende Zeile eingefügt und angepasst werden. Man kann hier ganz normale css Parameter verwenden!

<tagcloud style="width:220px;height:auto;text-align:center;margin-left:5px;margin-right:5px;margin-top:5px;margin-bottom:5px;">min_size=65</tagcloud>

Patch für folgende Fehlermeldung:

Warning: Illegal offset type in isset or empty in (...)/includes/Title.php on line 117
Warning: trim() expects parameter 1 to be string, array given in (...)/includes/Title.php on line 2286

Notice: Undefined index: linkstyle in $IP\extensions\WikiCategoryTagCloud\WikiCategoryTagCloud.php on line 66

extensions/WikiCategoryTagCloud/WikiCategoryTagCloud.php

function invalidateCache() {
        //$titles[0] = explode( "\n", wfMsg( 'tagcloudpages' ) );
        $titles = explode( "\n", wfMsg( 'tagcloudpages' ) );


/*$link_style = $params['linkstyle'];*/
        $link_style = '';
        if (isset($params) && isset($params['linkstyle'])) {
                $link_style = $params['linkstyle'];
        }

Seit MediaWiki 1.35 und dem damit aktualisierten Vector Skin werden Sidebar Gadgets nicht mehr angezeigt. Man kann dies jedoch wieder aktivieren in dem man die MediaWiki:Vector.css bearbeitet.

dafür einfach die folgenden Zeilen der CSS Konfiguration anhängen:

  • https://yourwikiurl/MediaWiki:Vector.css
.emptyPortlet {
        display: block;
}

CategoryTagCloud

Diese Extension ist änlich wie die oben beschriebene WikiCategoryTagCloud Extension. Nur das diese eine Category Cloud in die Sidebar einfügt. Die Installation erfolgt folgendermaßen:

cd /path/to/mediawiki/extensions/
wget http://cat-tagcloud.svn.sourceforge.net/svnroot/cat-tagcloud/trunk/trunk/CategoryTagCloud.tar.gz
tar -xzvf CategoryTagCloud.tar.gz
rm CategoryTagCloud.tar.gz

LocalSettings.php

require_once( "$IP/extensions/CategoryTagCloud/CategoryTagCloud.php" );

Konfiguriert wird die Extension hier:
CategoryTagCloud.body.php

                $MIN_SIZE               = 30;
                $INCREASE_FACTOR        = 70;

                // Build up an array and keep track of mins and maxes
                $minCount               = -1;
                $maxCount               = -1;
                $categories             = array();              
                //

und den Style ändert man im css File:
css/style.css

.tagcloud {
        width: 98%;
        text-align: center;
        //background-color: #FDFDFD;
        padding: 10px 5px 10px 3px;
}
.tagcloud a {
        //color: #0052CB;
        margin-left: 0px;
        margin-right: 10px;
        font-weight: bold;
}

Problem mit DB_SLAVE bei MW >= 1.34

Nach einem Update auf MediaWiki 1.34 kommt es bei der Verwendung dieser leider nicht mehr wirklich aktuellen Extension zu einem Fehler:

MediaWiki internal error.

Original exception: [87704f0380f80aabaced53ad] /wiki/Test UnexpectedValueException from line 462 of /var/www/html/includes/libs/rdbms/loadbalancer/LoadBalancer.php: Invalid server index index #DB_SLAVE
Backtrace:
#0 /var/www/html/includes/libs/rdbms/loadbalancer/LoadBalancer.php(896): Wikimedia\Rdbms\LoadBalancer->getConnectionIndex(string, array, string)
#1 /var/www/html/includes/libs/rdbms/loadbalancer/LoadBalancer.php(1043): Wikimedia\Rdbms\LoadBalancer->getConnection(string, array, string, integer)
#2 /var/www/html/includes/GlobalFunctions.php(2576): Wikimedia\Rdbms\LoadBalancer->getMaintenanceConnectionRef(string, array, string)
#3 /var/www/html/extensions/CategoryTagCloud/CategoryTagCloud.body.php(39): wfGetDB(string)
#4 /var/www/html/extensions/CategoryTagCloud/CategoryTagCloud.body.php(89): CategoryTagCloud::countCategoryOcurrences(array, integer, integer)
#5 /var/www/html/includes/Hooks.php(174): CategoryTagCloud::renderTagCloudBox(SkinVector, array)
#6 /var/www/html/includes/Hooks.php(202): Hooks::callHook(string, array, array, NULL)
#7 /var/www/html/includes/skins/Skin.php(1325): Hooks::run(string, array)
#8 /var/www/html/includes/skins/Skin.php(1352): Skin->{closure}()
#9 /var/www/html/includes/skins/SkinTemplate.php(452): Skin->buildSidebar()
#10 /var/www/html/includes/skins/SkinTemplate.php(215): SkinTemplate->prepareQuickTemplate()
#11 /var/www/html/includes/OutputPage.php(2574): SkinTemplate->outputPage()
#12 /var/www/html/includes/MediaWiki.php(907): OutputPage->output(boolean)
#13 /var/www/html/includes/MediaWiki.php(919): MediaWiki->{closure}()
#14 /var/www/html/includes/MediaWiki.php(527): MediaWiki->main()
#15 /var/www/html/index.php(44): MediaWiki->run()
#16 {main}

...

Dieser kommt davon das DB_SLAVE durch DB_REPLICA ersetzt wurde. Um das Ganze zu fixen einfach in der Datei CategoryTagCloud/CategoryTagCloud.body.php die Zeile mit DB_SLAVE anpassen:

                $db             = &wfGetDB(DB_REPLICA);

Danach sollte alles wieder wunderbar funktionieren!

Debugging RSS Feed & CategoryTagCloud Problem

Nachdem man die Extension aktiviert hat, wird man schnell merken, dass die RSS Feeds des Mediawikis nicht mehr funktionieren und folgenden Fehler auspuckt:

XML-Verarbeitungsfehler: XML- oder Text-Deklaration nicht am Beginn der Entität
Adresse: http://twiki.laub-home.de/index.php?title=Spezial:Letzte_%C3%84nderungen&feed=atom
Zeile Nr. 2, Spalte 1:

<?xml version="1.0"?>
^

Ich konnte diesen Fehler dadurch beheben, in dem ich in allen php Dateien der Extension den PHP End Tag am Ende entfernt habe:

?>

dies kann mit folgendem Befehl durchgeführt werden:

cd /path/to/extensions/CategoryTagCloud
sed -i 's@^?>@@g' *.php

CookieWarning

Da nach neuem Gesetz in vielen Ländern nun der Betreiber einer Webseite verpflichtet ist auf Cookies hinzuweisen, hier eine Extension die ich in diesem Wiki verwende.

Installation:

cd /path/to/mediawiki/extensions
git clone "https://gerrit.wikimedia.org/r/mediawiki/extensions/CookieWarning"

LocalSettings.php

# Cookie Warning Extension
wfLoadExtension( 'CookieWarning' );
$wgCookieWarningEnabled = true;

RelatedArticles

Die Extension RelatedArticles lässt es zu, das im Footer passende andere Seiten angezeigt werden.

Installation:

cd /path/to/mediawiki/extensions
git clone "https://gerrit.wikimedia.org/r/mediawiki/extensions/RelatedArticles"

LocalSettings.php

# Related Articles
wfLoadExtension( 'RelatedArticles' );
$wgRelatedArticlesFooterWhitelistedSkins = ['minerva', 'vector'];
$wgRelatedArticlesDescriptionSource = 'pagedescription';

Ist die Extension richtig installiert, dann kann man in jede Seite mit dem Tag {{#related:SITENAME}} mit einer anderen verbinden.

Um einen Button im WikiEditor zu bekommen, sollte man das folgende Code Schnipsel in der MediaWiki:Common.js einfügen

$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
        'section': 'main',
        'group': 'insert',
        'tools': {
            'sourcetext': {
                label: 'RelatedArticle',
                type: 'button',
                icon: '/images/buttons/article.png',
                action: {
                    type: 'encapsulate',
                    options: {
                        pre: "{{#related:",
                        periMsg: "insert sitename here",
                        post: "}}"
                    }
                }
            }
        }
	});