AbahDoku Custom: Difference between revisions

From AbahDoku Wiki
No edit summary
No edit summary
 
(18 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Menu Sidebar ==
== Menu Sidebar ==
Mediawiki secara default memiliki menu sidebar yang bisa di costum, di tambah atau di kurangi. Penambahan menu sidebar bisa dilakukan dengan beberapa cara.
Mediawiki secara default memiliki menu sidebar yang bisa di costum, di tambah atau di kurangi. Penambahan menu sidebar bisa dilakukan dengan beberapa cara.
1. Melalui MediaWiki:Sidebar
 
2. Melalui LocalSettings.php
# Melalui MediaWiki:Sidebar
# Melalui LocalSettings.php


===Menambah menu Sidebar melalui MediaWiki:Sidebar===
===Menambah menu Sidebar melalui MediaWiki:Sidebar===
Line 10: Line 11:
  http://abahdoku.wiki.gd/index.php/MediaWiki:Sidebar
  http://abahdoku.wiki.gd/index.php/MediaWiki:Sidebar
Jika MediaWiki:Sidebar sudah terbuka, pilih Edit source, tambahkan di baris terakhir navigation :
Jika MediaWiki:Sidebar sudah terbuka, pilih Edit source, tambahkan di baris terakhir navigation :
  ** <nowiki>http://abahdoku.wiki.gd|MenuTambahan</nowiki>
  ** <nowiki>http://abahdoku.wiki.gd|"MenuTambahan"</nowiki>
Maka hasilnya akan tampak seperti ini :
Maka hasilnya akan tampak seperti ini :
  * navigation
  * navigation
Line 21: Line 22:
  * TOOLBOX
  * TOOLBOX
  * LANGUAGES
  * LANGUAGES
Cara pertama ini untuk yang sudah expert menggunakan Mediawiki ada yang melibatkan Java Script yang di custom melalui url berikut :
http://<domain>/index.php?title=MediaWiki:Common.js


===Menambah menu Sidebar melalui LocalSettings.php===
===Menambah menu Sidebar melalui LocalSettings.php===
Line 72: Line 75:
     return true;
     return true;
  };
  };
== Menu Footer ==
Secara default menu footer pada Mediawiki ada 3 yaitu "Privacy policy", "About AbahDoku" dan "WikiDisclaimers". Namun pada barisan menu footer penulis ingin menambahkan satu menu untuk aplikasi seperti pada menu Sidebar atau menu yang lain yang ingin ditambahkan.
Caranya hanya dengan menambahkan kode berikut di akhir file LocalSettings.php adalah :
$wgHooks['SkinAddFooterLinks'][] = function ( Skin $skin, string $key, array &$footerlinks ) {
    // Memeriksa apakah pengguna sudah login
    $user = $skin->getUser();
    if ( $user->isRegistered() && $key === 'places' ) {
        // Menambahkan menu Aplikasi
        $footerlinks['mikhmon'] = Html::rawElement( 'a', [
            'href' => 'http://abahdoku.wiki.gd:9080/aplikasi',
            'target' => '_blank', // Opens in a new tab
            'rel' => 'noreferrer noopener' // not required, but recommended for security reasons
        ], 'Aplikasi' ); // Teks link yang ditampilkan
    }
};
=== Menambah icon di samping menu ===
Sebelumnya perlu di siapkan file gambar (icon) dengan ukuran yang kecil kecil sekitar 16 x 16px. Hanya dengan menambah sedikit dari code di atas.
$wgHooks['SkinAddFooterLinks'][] = function ( Skin $skin, string $key, array &$footerlinks ) {
    // Memeriksa apakah pengguna sudah login
    $user = $skin->getUser();
    if ( $user->isRegistered() && $key === 'places' ) {
        // Menambahkan menu Aplikasi dengan icon
        $iconUrl = 'http://abahdoku.wiki.gd/images/c/c3/Aplikasi.png'; // Ganti dengan URL ikon/logo Anda
        $footerlinks['mikhmon'] = Html::rawElement( 'a', [
            'href' => 'http://abahdoku.wiki.gd:9080/aplikasi',
            'target' => '_blank', // Opens in a new tab
            'rel' => 'noreferrer noopener' // not required, but recommended for security reasons
        ], Html::element('img', [
            'src' => $iconUrl,
            'alt' => 'Aplikasi Icon', // Teks alternatif untuk gambar
            'style' => 'width:16px; height:16px; vertical-align:middle; margin-right:4px;' // Sesuaikan ukuran dan posisi
        ]) . 'Aplikasi'); // Teks link yang ditampilkan
    }
};
== Halaman Tersembunyi ==
MediaWiki memiliki fitur yang dapat menyembunyikan halaman dan hanya dapat di akses oleh oleh user yang sudah melewati proses login.
Secara dafault MediaWiki tidak memiliki fitur ini, namun dapat di tambahkan dengan mengaktifkan extensions "Lockdown".
Secara lengkap fitur ini dapat di tambahkan dengan script berikut pada file LocalSettings.php :
# 1. Buat namespace baru untuk catatan pribadi
define("NS_PRIVATE", 3000);
define("NS_PRIVATE_TALK", 3001);
$wgExtraNamespaces[NS_PRIVATE] = "Private";
$wgExtraNamespaces[NS_PRIVATE_TALK] = "Private_talk";
# 2. Aktifkan ekstensi Lockdown
wfLoadExtension( 'Lockdown' );
# 3. Batasi akses 'read' hanya untuk user login pada namespace Private
$wgNamespacePermissionLockdown[NS_PRIVATE]['read'] = [ 'user' ];
# 5. Whitelist halaman "Main Page" agar bisa diakses walaupun global read dibatasi
$wgWhitelistRead = [
    "Main Page",
    "MediaWiki:Common.css",
    "MediaWiki:Common.js",
    "Special:UserLogin",
    "Special:UserLogout",
];
Penjelasan lebih rinci script di atas adalah :
=== Membuat Namespace Baru untuk Catatan Pribadi ===
define("NS_PRIVATE", 3000);
define("NS_PRIVATE_TALK", 3001);
$wgExtraNamespaces[NS_PRIVATE] = "Private";
$wgExtraNamespaces[NS_PRIVATE_TALK] = "Private_talk";
Penjelasan:
* NS_PRIVATE adalah ID khusus (harus unik dan tidak bentrok dengan ID namespace lain).
* "Private" akan digunakan sebagai prefix artikel, misalnya: Private:CatatanRahasia. Ini membuat area khusus dalam wiki, tempat Anda bisa menyimpan halaman yang ingin dibatasi.
* NS_PRIVATE_TALK adalah untuk halaman diskusi dari artikel Private: — ini otomatis mengikuti namespace utamanya.
=== Mengaktifkan Ekstensi Lockdown ===
wfLoadExtension( 'Lockdown' );
Untuk posisi Non-Aktif
# wfLoadExtension( 'Lockdown' ); (tambahkan tanda pagar (#))
Penjelasan:
* Ini wajib agar MediaWiki bisa membaca konfigurasi pembatasan akses berdasarkan namespace, grup user, dll.
* Pastikan ekstensi Lockdown sudah terpasang di direktori extensions/Lockdown.
=== Membatasi Akses Hanya untuk Pengguna Login di Namespace Private ===
$wgNamespacePermissionLockdown[NS_PRIVATE]['read'] = [ 'user' ];
Penjelasan:
* Ini adalah aturan: Siapa yang boleh membaca (akses read) halaman di dalam namespace Private.'user' berarti hanya user yang sudah login (masuk ke akun MediaWiki).
* Pengunjung anonim tidak bisa melihat halaman seperti Private:CatatanRahasia.
=== Whitelist Halaman Publik Seperti "Main Page" ===
$wgWhitelistRead = [
    "Main Page",
    "MediaWiki:Common.css",
    "MediaWiki:Common.js",
    "Special:UserLogin",
    "Special:UserLogout",
];
Penjelasan:
* Ini daftar halaman yang tetap bisa dibaca tanpa login, walaupun akses umum dibatasi oleh Lockdown.
* "Main Page" bisa diakses siapa pun.
* MediaWiki:Common.css dan MediaWiki:Common.js dibutuhkan untuk styling dan skrip wiki agar tetap bisa dimuat secara umum.
* Special:UserLogin dan Special:UserLogout penting agar pengunjung bisa login/logout.

Latest revision as of 02:50, 2 May 2025

Menu Sidebar[edit]

Mediawiki secara default memiliki menu sidebar yang bisa di costum, di tambah atau di kurangi. Penambahan menu sidebar bisa dilakukan dengan beberapa cara.

  1. Melalui MediaWiki:Sidebar
  2. Melalui LocalSettings.php

Menambah menu Sidebar melalui MediaWiki:Sidebar[edit]

Cara pertama ini dapat dilakukan melalui url berikut :

http://<nama_domain>/index.php/MediaWiki:Sidebar

Contoh :

http://abahdoku.wiki.gd/index.php/MediaWiki:Sidebar

Jika MediaWiki:Sidebar sudah terbuka, pilih Edit source, tambahkan di baris terakhir navigation :

** http://abahdoku.wiki.gd|"MenuTambahan"

Maka hasilnya akan tampak seperti ini :

* navigation
** mainpage|mainpage-description
** recentchanges-url|recentchanges
** randompage-url|randompage
** helppage|help-mediawiki
** http://abahdoku.wiki.gd|MenuTambahan
* SEARCH
* TOOLBOX
* LANGUAGES

Cara pertama ini untuk yang sudah expert menggunakan Mediawiki ada yang melibatkan Java Script yang di custom melalui url berikut :

http://<domain>/index.php?title=MediaWiki:Common.js

Menambah menu Sidebar melalui LocalSettings.php[edit]

Cara kedua ini adalah dengan menambah sedikit code pada file LocalSettings.php.

Code yang di tambahkan pada LocalSettings.php adalah :

$wgHooks['SkinBuildSidebar'][] = function ( $skin, &$bar ) {
    // Mendapatkan user context
    $user = RequestContext::getMain()->getUser();

    // Menambahkan menu "AbahDoku Costum"
      $bar['navigation'][] = [
          'text' => 'AbahDoku Custom',
          'href' => '/index.php/AbahDoku_Custom',  // Link ke halaman baru
          'id'   => 'n-abahdoku_custom',  // Optional ID
          'target' => '_self'  // Membuka di tab yang sama
      ];  
    }
    return true;
};

Berikut ini adalah contoh code menu untuk mengakses url external di luar Mediawiki, code dibawah ini hanya akan terlihat jika user sudah melakukan login di Mediawiki, jika user belum melakukan login, menu ini tidak akan terlihat. Menu ini akan membuka tab browser baru jika di klik.

    // Memeriksa apakah pengguna sudah login
    if ( $user->isRegistered() ) {
        $bar['navigation'][] = [
            'text' => 'Aplikasi',
            'href' => 'http://abahdoku.wiki.gd:9080/aplikasi',
            'id'   => 'n-aplikasi',  // Optional ID for styling or JS manipulati$
            'target' => '_blank'   // Opens in a new tab
        ];

jika digabungkan menu AbahDoku Custom dan menu Aplikasi, maka hasilnya akan seperti berikut ini :

$wgHooks['SkinBuildSidebar'][] = function ( $skin, &$bar ) {
    // Mendapatkan user context
    $user = RequestContext::getMain()->getUser();

    // Menambahkan menu "AbahDoku Costum"
        $bar['navigation'][] = [
            'text' => 'AbahDoku Custom',
            'href' => '/index.php/AbahDoku_Custom',  // Link ke halaman baru
            'id'   => 'n-abahdoku_custom',  // Optional ID
            'target' => '_self'  // Membuka di tab yang sama
        ];
    // Memeriksa apakah pengguna sudah login
    if ( $user->isRegistered() ) {
        $bar['navigation'][] = [
            'text' => 'Aplikasi',
            'href' => 'http://abahdoku.wiki.gd:9080/aplikasi',
            'id'   => 'n-aplikasi',  // Optional ID for styling or JS manipulati$
            'target' => '_blank'   // Opens in a new tab
        ];
    }
    return true;
};

Menu Footer[edit]

Secara default menu footer pada Mediawiki ada 3 yaitu "Privacy policy", "About AbahDoku" dan "WikiDisclaimers". Namun pada barisan menu footer penulis ingin menambahkan satu menu untuk aplikasi seperti pada menu Sidebar atau menu yang lain yang ingin ditambahkan. Caranya hanya dengan menambahkan kode berikut di akhir file LocalSettings.php adalah :

$wgHooks['SkinAddFooterLinks'][] = function ( Skin $skin, string $key, array &$footerlinks ) {
    // Memeriksa apakah pengguna sudah login
    $user = $skin->getUser();
    if ( $user->isRegistered() && $key === 'places' ) {
        // Menambahkan menu Aplikasi
        $footerlinks['mikhmon'] = Html::rawElement( 'a', [
            'href' => 'http://abahdoku.wiki.gd:9080/aplikasi',
            'target' => '_blank', // Opens in a new tab
            'rel' => 'noreferrer noopener' // not required, but recommended for security reasons
        ], 'Aplikasi' ); // Teks link yang ditampilkan
    }
};

Menambah icon di samping menu[edit]

Sebelumnya perlu di siapkan file gambar (icon) dengan ukuran yang kecil kecil sekitar 16 x 16px. Hanya dengan menambah sedikit dari code di atas.

$wgHooks['SkinAddFooterLinks'][] = function ( Skin $skin, string $key, array &$footerlinks ) {
    // Memeriksa apakah pengguna sudah login
    $user = $skin->getUser();
    if ( $user->isRegistered() && $key === 'places' ) {
        // Menambahkan menu Aplikasi dengan icon
        $iconUrl = 'http://abahdoku.wiki.gd/images/c/c3/Aplikasi.png'; // Ganti dengan URL ikon/logo Anda
        $footerlinks['mikhmon'] = Html::rawElement( 'a', [
            'href' => 'http://abahdoku.wiki.gd:9080/aplikasi',
            'target' => '_blank', // Opens in a new tab
            'rel' => 'noreferrer noopener' // not required, but recommended for security reasons
        ], Html::element('img', [
            'src' => $iconUrl,
            'alt' => 'Aplikasi Icon', // Teks alternatif untuk gambar
            'style' => 'width:16px; height:16px; vertical-align:middle; margin-right:4px;' // Sesuaikan ukuran dan posisi
        ]) . 'Aplikasi'); // Teks link yang ditampilkan
    }
};

Halaman Tersembunyi[edit]

MediaWiki memiliki fitur yang dapat menyembunyikan halaman dan hanya dapat di akses oleh oleh user yang sudah melewati proses login. Secara dafault MediaWiki tidak memiliki fitur ini, namun dapat di tambahkan dengan mengaktifkan extensions "Lockdown". Secara lengkap fitur ini dapat di tambahkan dengan script berikut pada file LocalSettings.php :

# 1. Buat namespace baru untuk catatan pribadi
define("NS_PRIVATE", 3000);
define("NS_PRIVATE_TALK", 3001);
$wgExtraNamespaces[NS_PRIVATE] = "Private";
$wgExtraNamespaces[NS_PRIVATE_TALK] = "Private_talk";

# 2. Aktifkan ekstensi Lockdown
wfLoadExtension( 'Lockdown' );

# 3. Batasi akses 'read' hanya untuk user login pada namespace Private
$wgNamespacePermissionLockdown[NS_PRIVATE]['read'] = [ 'user' ];

# 5. Whitelist halaman "Main Page" agar bisa diakses walaupun global read dibatasi
$wgWhitelistRead = [
    "Main Page",
    "MediaWiki:Common.css",
    "MediaWiki:Common.js",
    "Special:UserLogin",
    "Special:UserLogout",
];

Penjelasan lebih rinci script di atas adalah :

Membuat Namespace Baru untuk Catatan Pribadi[edit]

define("NS_PRIVATE", 3000);
define("NS_PRIVATE_TALK", 3001);
$wgExtraNamespaces[NS_PRIVATE] = "Private";
$wgExtraNamespaces[NS_PRIVATE_TALK] = "Private_talk";

Penjelasan:

  • NS_PRIVATE adalah ID khusus (harus unik dan tidak bentrok dengan ID namespace lain).
  • "Private" akan digunakan sebagai prefix artikel, misalnya: Private:CatatanRahasia. Ini membuat area khusus dalam wiki, tempat Anda bisa menyimpan halaman yang ingin dibatasi.
  • NS_PRIVATE_TALK adalah untuk halaman diskusi dari artikel Private: — ini otomatis mengikuti namespace utamanya.

Mengaktifkan Ekstensi Lockdown[edit]

wfLoadExtension( 'Lockdown' );

Untuk posisi Non-Aktif

# wfLoadExtension( 'Lockdown' ); (tambahkan tanda pagar (#))

Penjelasan:

  • Ini wajib agar MediaWiki bisa membaca konfigurasi pembatasan akses berdasarkan namespace, grup user, dll.
  • Pastikan ekstensi Lockdown sudah terpasang di direktori extensions/Lockdown.

Membatasi Akses Hanya untuk Pengguna Login di Namespace Private[edit]

$wgNamespacePermissionLockdown[NS_PRIVATE]['read'] = [ 'user' ];

Penjelasan:

  • Ini adalah aturan: Siapa yang boleh membaca (akses read) halaman di dalam namespace Private.'user' berarti hanya user yang sudah login (masuk ke akun MediaWiki).
  • Pengunjung anonim tidak bisa melihat halaman seperti Private:CatatanRahasia.

Whitelist Halaman Publik Seperti "Main Page"[edit]

$wgWhitelistRead = [
    "Main Page",
    "MediaWiki:Common.css",
    "MediaWiki:Common.js",
    "Special:UserLogin",
    "Special:UserLogout",
];

Penjelasan:

  • Ini daftar halaman yang tetap bisa dibaca tanpa login, walaupun akses umum dibatasi oleh Lockdown.
  • "Main Page" bisa diakses siapa pun.
  • MediaWiki:Common.css dan MediaWiki:Common.js dibutuhkan untuk styling dan skrip wiki agar tetap bisa dimuat secara umum.
  • Special:UserLogin dan Special:UserLogout penting agar pengunjung bisa login/logout.