Mediawiki Extension

Dari PaloDozen

Daftar isi

Memasang Ekstension Mediawiki

Mediawiki memiliki banyak ekstensi guna memperkaya fitur-fiturnya. Standar mendapatkan dan memasang ekstension adalah:

  • Unduh paketnya dari http://www.mediawiki.org/wiki/Extension:nama_ekstensi
  • Ekstrak ke wiki/extensions/NamaEkstensi
  • Edit LocalSettings.php, tambahkan :
require_once("$IP/extensions/NamaEkstensi/NamaEkstensi.php");

Kalau lancar, semuanya akan beres. Namun, open source tanpa ngoprek bagaikan rendang tanpa cabe ;D


Dynamic Page List

Extensi ini memungkinkan kita membuat daftar halaman secara dinamik, dengan berbagai pilihan yang fleksibel. Namun kalau membaca sejarahnya, cukup membingungkan. Di situs media wiki ada Dynamic Page List, Dynamic Page List (third party) dan Intersection. Kalau mau main aman, pilih yang pertama. Unduh dan pasang ikut cara standar.

Coba

Untuk membuat list halaman kategori tertentu

<DynamicPageList>
category             = Aplikasi
count                = 6
order                = descending
</DynamicPageList>


Dynamic Article List

Ekstensi ini kembangan dari DynamicPageList, khusus untuk membuat list halaman yang paling banyak dilihat, halaman terbaru, suntingan terbaru dan diskusi terbaru.

Unduh

Ekstensi ada di http://www.mediawiki.org/wiki/Extension:DynamicArticleList, ada empat file yang harus di salin tempel.

  • DynamicArticleList.php
  • CategoryNode.php
  • CategoryExplorerBase.php
  • CategoryUtil.php

Pasang

  • Taruh DynamicArticleList.php di wiki/extensions/DynamicArticleList
  • Taruh 3 file lainnya di wiki/includes

Konfigurasi

Edit LocalSettings.php

require_once("extensions/DynamicArticleList/DynamicArticleList.php");


Oprek

Kalau setelah dipasang, halaman anda jadi ada error "header already posted", tandanya di akhir file DynamicArticleList.php ada kelebihan

?>

Hapus saja.

Coba

<DynamicArticleList>
  title=Artikel Populer
  categoryRoot=Utama
  type=hot
  count=3
</DynamicArticleList>

Untuk type, bisa diisi : new, update, discussion, atau hot

NiceCategory2

Ini ekstensi yang bagus untuk membuat daftar kategori dan artikel dengan tampilan yang manis (nice). Mengunduh dan memasangnya sesuai standar.

Coba

<ncl style=compact maxdepth=2 headings=bullet headstart=2 showcats=1 showarts=1>Category:{{PAGENAME}}</ncl>


CategoryTree

Ekstensi ini mampu menampilkan kategori dalam bentuk pohon yang bisa berkembang sesuai pilihan pengguna. Kategori anak akan diambil pakai AJAX, jadi lebih efisien dibanding NiceCategory2. Mengunduh dan memasangnya ikut standar.

Konfigurasi

Pada LocalSettings.php, perlu ditambah:

$wgUseAjax = true;
require_once("{$IP}/extensions/CategoryTree/CategoryTree.php");

Oprek

Setelah lihat tampilan NiceCategory2 dan CategoryTree, tampilan standar Subkategori yang selalu muncul di setiap halaman Kategori: jadi terasa hambar. Inginnya, tampilan itu diganti saja pakai NiceCategory atau CategoryTree. Namun setalah dicari sana-sini, tidak fasilitas untuk mematikan hal itu (seperti halnya __NOTOC__ di halaman artikel). Karena itu, terpaksa main kotor, hack halaman includes/CategoryPage.php, fungsi getHTML() sebagai berikut:

        // Hack supaya halaman kategori tidak menampilkan sub kategori
        // Nanti akan diganti pakai NiceCategory saja

        $r = $this->getCategoryTop() .
           //$this->getSubcategorySection() .    Dua baris ini
           //$this->getPagesSection() .          dikomentar saja
             $this->getImageSection() .
             $this->getCategoryBottom();

        // Give a proper message if category is empty
        /* Dan yang ini, juga tak perlu
        if ( $r == '' ) { 
             $r = wfMsgExt( 'category-empty', array( 'parse' ) ); 
        } 
        */

Awas, oprekan ini akan membuat SEMUA halaman Kategori: tidak menampilkan Subkategori !!!

Coba

Setelah di hack dengan kasar seperti itu, rugi kalau tidak habis-habisan dimanfaatkan. Buat sebuah template, misal Templat:Kategori, isinya:

[[Berkas:{{PAGENAME}}.jpg]]
<categorytree>{{PAGENAME}}</categorytree>

Lalu pada setiap kategori, tinggal tambah

{{Kategori}}


CreateBox

Ekstensi ini menyediakan form untuk membuat halaman baru. Pemakaiannya cukup fleksibel, namun ternyata belum cukup untuk kasus ini, sehingga perlu oprekan cukup banyak.

Unduh

Pasang

  • Ekstrak paket ekstensi MW ke wiki/extensions/CreateBox

Konfigurasi

Edit LocalSettings.php

require_once("extensions/CreateBox/CreateBox.php");

Oprek

Tujuan oprekan ini ingin menambah fitur, supaya halaman yang baru dimuat bisa langsung masuk ke kategori tertentu. Untuk itu file CreateBox.php di hack di dua tempat. Pertama, ubah fungsi acRedirect agar mampu meneruskan parameter category.

function acRedirect($title, $action) {
    global $wgRequest, $wgOut;
    $query = "action={$action}";

    $value = $wgRequest->getVal('section');
    if ( ! empty($value))
        $query = $query . "&section=" . $value;

    $value = $wgRequest->getVal('category');
    //if ( ! empty($value))
        $query = $query . "&category=" . $value;

    $value = $wgRequest->getVal('preload');
    if ( ! empty($value))
        $query = $query . "&preload=" . $value;

    $value = $wgRequest->getVal('editintro');
    if ( ! empty($value))
        $query = $query . "&editintro=" . $value;

    $wgOut->setSquidMaxage( 1200 );
    $wgOut->redirect($title->getFullURL( $query ), '301');
}

Selanjutnya tambahkan hook untuk menambahkan kategori di halaman baru.


$wgHooks['EditFormPreloadText'][] = 'addCategory';
function addCategory(&$text)
{
        $cname = $_GET['category'];
        if ( ! empty($cname)) {
            $text=$text . "\n\n[[category:" . $cname . "]]";
            return true;
        }
        return false;
}


Coba

Nah, kini Templat:Kategori kita bisa dibuat lebih canggih:

{|
|width="120px"|
|[[Berkas:logo_{{PAGENAME}}.jpg]]
|Menambah artikel baru: 
<createbox>
align=left
width=40
buttonlabel=Buat
default=Artikel baru
editintro=Judul artikel
preload=Templat:Artikel_{{PAGENAME}}
category={{PAGENAME}}
</createbox>
|}

Isi kategori
<categorytree>{{PAGENAME}}</categorytree>

Slideshow

Ini ekstensi yang memungkinkan beberapa berkas gambar dilihat bergantian pada satu kotak.

Unduh

Pasang

  • Buat direktori wiki/extensions/Slideshow, salin Slideshow.php dan Slideshow.js ke direktori tersebut.
  • Buat direktori wiki/extensions/common, dari paket scriptaculous, salinkan berkas prototype.js, scriptaculous.js, effect.js

Oh ya, direktori extensions/common itu buatan sendiri, untuk menaruh file file java script (.js), maupun style (.css) pihak ketiga yang dipakai bersama-sama oleh berbagai extensi.

Oprek

Edit file Slideshow.php, ubah posisi script sesuai pemasangan

   if (!$SS_SCRIPT_INCLUDED) {
       $parser->mOutput->addHeadItem("<script src=\"{$wgScriptPath}/extensions/Slideshow/slideshow.js\"></script>\n");
       $parser->mOutput->addHeadItem("<script src=\"{$wgScriptPath}/extensions/common/prototype.js\"></script>\n");
       $parser->mOutput->addHeadItem("<script src=\"{$wgScriptPath}/extensions/common/scriptaculous.js\"></script>\n")
       $SS_SCRIPT_INCLUDED = true;
   }

Konfigurasi

Dari penelusur web, akses http://localhost/Mediawiki:Common.css . Tambahkan:

.slideshow div {
   _position: absolute;
}

.slideshow div div {
  _position: static;
}

Lalu edit LocalSettings.php, tambahkan

require_once("extensions/Slideshow/Slideshow.php");

Coba

Pada artikel tambahkan:

<slideshow sequence="random" transition="fade" refresh="5000">
<div>[[Berkas:HPC-01.JPG|thumb|center|200px|Komponen Dozen 2008]]</div>
<div>[[Berkas:HPC-02.JPG|thumb|center|200px|Modul Dozen 2008]]</div>
<div>[[Berkas:HPC-03.JPG|thumb|center|200px|Dozen 2008 dalam lemari]]</div>
</slideshow>

Smooth Gallery

Ekstensi ini fungsinya mirip seperti Slideshow, namun ada beberapa fitur yang lebih hebat. Tentu saja memasangnya juga lebih ruwet, apalagi petunjuknya tidak begitu jelas.

Mengunduh

Pasang

  • Ekstrak paket ekstensi MW ke wiki/extensions/SmoothGallery
  • Extrak paket SmoothGallery ke wiki/extensions/common/sg

Oprek

Ubah nama tiga file di wiki/extensions/common/sg, hilangkan nomor versinya sbb.:

# ls      
HistoryManager.js  jd.gallery.set.js	      mootools.v1.11.ext.js  mootools.v1.11.uncompressed.js
jd.gallery.js	    jd.gallery.transitions.js  mootools.v1.11.js
# rename .v1.11. . *.js
# ls
HistoryManager.js  jd.gallery.set.js	      mootools.ext.js  mootools.uncompressed.js
jd.gallery.js	    jd.gallery.transitions.js  mootools.js

Konfigurasi

Edit LocalSettings.php

$wgUseImageResize=true;
$wgSmoothGalleryExtensionPath = "/wiki/extensions/common/sg";
$wgSmoothGalleryDelimiter = "\n";
require_once("extensions/SmoothGallery/SmoothGallery.php");

Coba

Setelah rada repot pasang, memakainya lebih mudah dibanding SlideShow

<sgallery>
HPC-01.JPG
HPC-02.JPG
HPC-03.JPG
</sgallery>

JSXGraph

Ini extension keren, bisa menampilkan grafik interaktif di web memakai javascript yang ringan (bukan java applet).

Mengunduh

  • Paket ekstensi ada di http://www.mediawiki.org/wiki/Extension:JSXGraph, salin tempel kode sumber di situ jadi JSXGraph.php
  • Pergi ke situs JSXGraph, unduh plugin buat wordpress. Lho, kok buat wordpress ? Iya, soalnya saya cari-cari paket khusus mediawiki tak ada :(

Pasang

  • Pasang JSXGraph.php ke wiki/extensions/JSXGraph
  • Extrak paket plugin wordpress, salinkan file jsxgraph.css dan jsxgraph.js ke wiki/extensions/common.
  • Kalau belum ada, tambahkan prototype.js ke wiki/extensions/common (ini dipakai juga oleh Slideshow).

Oprek

Edit file JSXGraph.php, edit bagian ini agar script dan css termuat dengan benar:

  // Load necessary stylesheet und scripts
  global $wgScriptPath;                              // tambah baris 1
  $outputURI = $wgScriptPath . "/extensions/common"; // tambah baris 2
  if ($markercount==0) {
    $output .= "<link rel='stylesheet' type='text/css' href='".$outputURI."/jsxgraph.css' />";
    $output .= "<script src='".$outputURI."/prototype.js' type='text/javascript'></script>";
    $output .= "<script src='".$outputURI."/jsxgraphcore.js' type='text/javascript'></script>";
  }

Konfigurasi

Edit LocalSettings.php

$wgFileExtensions[] = 'gxt';
$wgVerifyMimeType = false;
require_once("$IP/extensions/JSXGraph/JSXGraph.php");

Coba

Buat satu artikel, ketikkan contoh dari situs JSXGraph ini:

<jsxgraph height="500" width="600" board="board"  box="jxgbox2">
board = JXG.JSXGraph.initBoard('jxgbox2', {originX: 250, originY: 250, unitX: 25, unitY: 25});
var a = board.createElement('slider', [[1,8],[5,8],[0,1,4]]);
var b = board.createElement('slider', [[1,9],[5,9],[0,0.25,4]]);
var c = board.createElement('curve', [function(phi){return a.Value()+b.Value()*phi; }, [0, 0], 0, 8*Math.PI],
{curveType:'polar', strokewidth:4});      
</jsxgraph>


Jmol

Jmol adalah program berbasis Java untuk menampilkan molekul secara 3D, dan interaktif. Karena Java, tentu saja dia punya applet yang bisa dipadukan ke web. Paket ini ada di http://www.mediawiki.org/wiki/Extension:Jmol, petunjukkan cukup jelas, dan bisa diikuti dengan lancar.

Coba

Buat artikel dengan isi :

== Inlined MDL Molfile ==

<jmol>
 <jmolApplet>
<size>150</size>
<color>green</color>
 <inlineContents>chair.mol
Conformational analysis
0
 18 18  0  0  0                 1 V2000
    1.6881    2.1572   -3.0193 C   0  0  0  0  0
    2.1484    3.6217   -2.9797 C   0  0  0  0  0
    2.9361    3.9126   -1.6942 C   0  0  0  0  0
    2.0927    3.5769   -0.4557 C   0  0  0  0  0
    1.6329    2.1120   -0.4898 C   0  0  0  0  0
    0.8532    1.8102   -1.7778 C   0  0  0  0  0
    2.5807    1.4887   -3.0652 H   0  0  0  0  0
    1.0897    1.9711   -3.9430 H   0  0  0  0  0
    1.2578    4.2927   -3.0282 H   0  0  0  0  0
    2.7791    3.8474   -3.8727 H   0  0  0  0  0
    3.8725    3.3053   -1.6844 H   0  0  0  0  0
    3.2413    4.9861   -1.6685 H   0  0  0  0  0
    1.2005    4.2467   -0.4224 H   0  0  0  0  0
    2.6835    3.7700    0.4714 H   0  0  0  0  0
    0.9957    1.8928    0.4002 H   0  0  0  0  0
    2.5240    1.4426   -0.4294 H   0  0  0  0  0
    0.5642    0.7322   -1.8031 H   0  0  0  0  0
   -0.0919    2.4039   -1.7878 H   0  0  0  0  0
  1  2  1  0  0  0
  1  6  1  1  0  0
  1  7  1  0  0  0
  1  8  1  6  0  0
  2  3  1  1  0  0
  2  9  1  0  0  0
  2 10  1  6  0  0
  3  4  1  1  0  0
  3 11  1  0  0  0
  3 12  1  0  0  0
  4  5  1  0  0  0
  4 13  1  0  0  0
  4 14  1  1  0  0
  5  6  1  6  0  0
  5 15  1  1  0  0
  5 16  1  0  0  0
  6 17  1  0  0  0
  6 18  1  0  0  0
M  END
</inlineContents>
  </jmolApplet>
</jmol>


MultiUpload

Mediawiki sudah menyediakan form pemuatan yang bisa meng-unggah (upload) satu file. Namun setekah mau upload banyak gambar, repot juga kalau satu-satu. Nah, extensi MultiUpload ini bisa menolong. (Benar-benar menolong, tidak sekedar memberitahu anda untuk mengubah nasib anda sendiri :)

Mengunduh dan memasang ekstensi ini ikut cara standar. Namun, waktu saya pasang di MW 1.14 ada error. Perlu setengah hari untuk mengopreknya :(

Konfigurasi

Pakai browser, akses ke halaman MediaWiki:Sidebar. Tambahkan menu

* navigation
** mainpage|mainpage-description
** portal-url|portal
** currentevents-url|currentevents
** recentchanges-url|recentchanges
** randompage-url|randompage
** helppage|help
* TOOLBOX
** Special:MultipleUpload|multipleupload ("upload files")

Oprek

File SpecialMultipleUpload.body.php adalah asal error-nya, tepatnya di fungsi showSuccess(). Pada akhir oprekan, isi fungsi itu diubah total jadi:

        function showSuccess() {
                global $wgUser, $wgOut, $wgContLang;

                wfLoadExtensionMessages( 'MultiUpload' );
                $msg = wfMsgWikiHtml( 'multiupload-fileuploaded' );
                $dname = $this->mLocalFile->getTitle();
                $iname = $this->mLocalFile->getTitle()->getFullURL();
                $wgOut->addWikiText( "[[{$dname->getFullText()}|left|thumb]]" );
                $text = '</td><td>' . $msg . '<a href="' . $iname  . '">' . $dname  . '</a></td>';
                $wgOut->addHTML( $text );

        }

Karena isi showSuccess sudah komplit, maka pada file SpecialMultipleUpload.php, kita tutup saja hook-nya.

// Hooked functions
// TUTUP saja
// $wgHooks['UploadComplete'][]  = 'wfMultiUploadShowSuccess';

Oprekan ini sebenarnya cuma niat membetulkan error. Mudah-mudahan versi yang lebih baru sudah tidak error, sehingga tak perlu lagi dioprek.

Coba

Klik saja menunya di side bar, lalu unggah beberapa file. Oh ya, extensi ini akan langsung menindis file lama (jika ada) tanpa peringatan. Hati-hati ;)

Keywords

Extension ini buatan sendiri, berguna untuk menaikkan rangking di mbah Google (istilah kerennya untuk SEO, search engine optimization).

Pemasangan

Standar, taruh paketnya di laci extension, lalu edit LocalSettings.php

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

Konfigurasi

Tambahkan ini di LocalSettings.php

$wgKeywords="komputasi,kinerja,tinggi";
$wgGoogleVerification="xxxxxxxxxxxxxxxxx";

Coba

Pada halaman, definisikan kata kunci dengan

{{#keywords:key1,key2 }}

Periksa hasilnya browsing ke halaman tersebut, lalu lihat kode sumbernya. Seharusnya pada bagian head akan ada dua baris meta

<meta name="google-site-verification" content="xxxxxxxxxxxxxxxxxxxxx" />
<meta name="keywords" content="key1,key2,Judul Halaman,komputasi,kinerja,tinggi" />

Syntax Highlight HeSHi

Extension ini berguna untuk menuliskan kode sumber berbagai bahasa (C, Java, BASH, dan masih banyak lagi), dan akan ditampilkan dengan berwarna-warni. Paket ini bisa diunduh dari http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi.

Pemasangan

Ekstrak paket ke laci extension, lalu edit LocalSettings.php, tambahkan

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

Coba

Contoh di atas diketik sebagai

<source lang="php">
require_once("$IP/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php"); 
</source>

ASCIIMathML

ASCIIMathML adalah penulisan rumus matematik yang mudah (relatif terhada LaTeX, atau MathML). Integrasinya ke mediawiki bisa memakai http://www.mediawiki.org/wiki/Extension:ASCIIMath4Wiki. Sayangnya extension ini memaksa penggunaan skin XML-compatible, yang setelah dicoba, tidak cocok dengan extension SlideShow. Karena itu dipakai jalan pintas saja, dengan memasangnya langsung ke theme.

Unduh

Ambil file ASCIIMathML.js dari http://www1.chapman.edu/~jipsen/mathml/asciimath.html.

Pasang

  • Letakkan file ASCIIMathML.js di laci skins/common
  • Edit file utama skin (misal monobook.php), tambahkan baris berikut di bagian head
<head>
........
<script type="text/javascript" src="<?php $this->text('stylepath' ) ?>/common/ASCIIMathML.js"></script> 
.....
</head>

Coba

Lihat contohnya di ASCII MathML.

MATH

Fitur math sudah termasuk sediaan asli mediawiki, berguna untuk menulis rumus matematika dengan gaya penulisan latex. Hanya saja untuk mengaktifkannya perlu usaha cukup keras.

Installasi

Di sistem operasi, harus disediakan paket LaTeX, dvips, ImageMagick, and Ghostscript, serta ocaml. Kalau di ubuntu, bisa dengan sekali pukul

apt-get install mediawiki-math
apt-get install ocaml
apt-get install make

Setelah itu perlu mengkompilasi texvc, ada di direktori instalasi mediawiki/math

cd /home/www/htdocs/wiki/math
make

Lalu siapkan direktori untuk gambar

cd /home/www/htdocs/wiki
mkdir -p images/math
mkdir -p /images/tmp
chmod 755 images/*

Langkah terakhir, edit LocalSettings dengan menambahkan

## If you have the appropriate support software installed
## you can enable inline LaTeX equations:
$wgUseTeX           = true;

# Additional settings
$wgUploadPath = "images";
$wgUploadDirectory = "images";
$wgMathPath = "{$wgUploadPath}/math";
$wgMathDirectory = "{$wgUploadDirectory}/math";
$wgTmpDirectory = "{$wgUploadDirectory}/tmp"; 


Coba

Buat saja sebuah halaman dan, tuliskan

<math>
C_{ij} = \sum_{k=1}^n (A_{ik} * B_{kj})
</math>

Mestinya akan nampak menjadi C_{ij} = \sum_{k=1}^n (A_{ik} * B_{kj})


Kontributor: Mursito