Wikisumber
idwikisource
https://id.wikisource.org/wiki/Halaman_Utama
MediaWiki 1.47.0-wmf.3
first-letter
Media
Istimewa
Pembicaraan
Pengguna
Pembicaraan Pengguna
Wikisumber
Pembicaraan Wikisumber
Berkas
Pembicaraan Berkas
MediaWiki
Pembicaraan MediaWiki
Templat
Pembicaraan Templat
Bantuan
Pembicaraan Bantuan
Kategori
Pembicaraan Kategori
Pengarang
Pembicaraan Pengarang
Indeks
Pembicaraan Indeks
Halaman
Pembicaraan Halaman
Portal
Pembicaraan Portal
TimedText
TimedText talk
Modul
Pembicaraan Modul
Acara
Pembicaraan Acara
MediaWiki:Gadgets-definition
8
3474
296743
295986
2026-05-24T13:48:09Z
Rachmat04
3937
296743
wikitext
text/x-wiki
== general ==
* exlinks[ResourceLoader]|exlinks.js
* UTCLiveClock[ResourceLoader|dependencies=mediawiki.util]|UTCLiveClock.js
* HotCat[ResourceLoader|rights=edit]|HotCat.js
* NavPopups[ResourceLoader|dependencies=mediawiki.user]|NavPopups.js
== editing-tools-for-Index-namespace ==
* Fill_Index[ResourceLoader|targets=desktop,mobile]|Fill_Index.js
* ImportPagelist[ResourceLoader|dependencies=mediawiki.util|targets=desktop,mobile]|ImportPagelist.js
== editing-tools-for-Page-namespace ==
* NopInserter[ResourceLoader|default|dependencies=mediawiki.util]|NopInserter.js
* mark-proofread[ResourceLoader|dependencies=mediawiki.util]|mark-proofread.js|mark-proofread.css
* ocr[ResourceLoader]|ocr.js
* pilcrowMarkers[ResourceLoader]|pilcrowMarkers.css
* ImageUploader[ResourceLoader|dependencies=mediawiki.util]|ImageUploader.js
* Easy_LST[ResourceLoader]|Easy_LST.js
* Preload_Page_Images[ResourceLoader]|Preload_Page_Images.js
<!--* ShortUrlLink|ShortUrlLink.js-->
== interface ==
* PageNumbers[ResourceLoader]|PageNumbers.js
* PageNumbers-core[ResourceLoader|hidden|dependencies=mediawiki.util,user,mediawiki.cookie]|PageNumbers-core.js|PageNumbers-core.css
* Site-styles[hidden|type=styles]|Site.css|SiteHeader.css|enwp-boxes.css|enwp-lists.css|enws-tweaks.css
== development ==
* TemplatePreloader[ResourceLoader]|TemplatePreloader.js
== admin-gadget ==
* DiscussionArchiverjs[ResourceLoader|dependencies=mediawiki.api,mediawiki.util,mediawiki.user|rights=block,protect]|DiscussionArchiver-core.js|DiscussionArchiver-idwikisource.js
aozuddwfsnawb2gu429xfck9azsrnc9
Templat:RunningHeader
10
7649
296735
93577
2026-05-24T12:49:12Z
Mnam23
12152
mencoba update
296735
wikitext
text/x-wiki
<includeonly><templatestyles src="RunningHeader/styles.css" />{{#invoke:Running header|running_header}}</includeonly><noinclude>{{documentation}}</noinclude>
pzoka6coyscy6849exq6zyccy0w499z
Templat:RunningHeader/styles.css
10
31595
296737
93579
2026-05-24T12:50:44Z
Mnam23
12152
296737
sanitized-css
text/css
/* Base style */
.wst-rh {
display:flex;
width:100%;
text-align:center;
justify-content:space-between;
}
.wst-rh > div {
flex:auto;
}
.wst-rh > div:first-of-type {
text-align:left;
}
.wst-rh > div:last-of-type {
text-align:right;
}
.wst-rh > div > p {
margin:0;
}
/* 1 cell */
.wst-rh.wst-rh-1 {
justify-content:center;
}
.wst-rh.wst-rh-1 > div:first-of-type {
text-align:center;
}
1k625u3rtdr1wm35g7ni741qwblviih
Halaman:Tiongkok Baru.pdf/59
104
35880
296744
105887
2026-05-25T00:28:41Z
Link PB
26772
/* Telah diuji baca */
296744
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Link PB" /></noinclude>sederhanaan dan perbahasaan jang menundjukkan keluhuran budi dan didalamnja terkandung rasa tanggung jawab jang besar dalam memikirkan dan mengusahakan perbaikan{{2}} bagi negara dan rakjat!?
Dalam pada itu orang jang melihat hasil kerdja mereka semua sudah kagum, dalam tempo dua tahun telah dapat mentjapai hasil jang begitu rupa. Lebih{{2}} lagi kalau diingat, betapa keridlaan para kaum hartawan jang mempunjai bermatjam{{2}} paberik itu. Segala usaha sosial dikerdjakan untuk pemeliharaan buruhnja, lahir dan bathin. Ketjuali jang sudah disebut diatas, pemilik paberik atau Pemerintah, harus pula mengadakan: pemeliharan anak{{2}} jang ibunja bekerdja, polikliniek tempat berobat buat seluruh keluarga sadja, akan tetapi ada djuga jang lama, opname), dokter dan djururawat, banjaknja menurut besar ketjilnja djumlah buruh jang bekerdja disitu. Bagi jang tidak berkeluarga disediakan pula asrama, baik laki{{2}} maupun perempuan, kalau mau. Kamar mandi, tempat berenang dll. Di Tiongkok jang belakangan ini penting, sebab ada kalanja mandi dengan air dingin dan ada musimnja jang harus dengan air panas. Itu semua disediakan oleh pegusaha karena buruh tak sanggup menjediakan itu. Begitulah banjaknja hal{{2}} jang harus disediakan, namun dalam kalkulasi perusahaan harus mendapat keuntungan jang pantas. Bila pengeluaran untuk usaha{{2}} sosial itu terlalu banjak menurut kapasiteit paberik, maka Pemerintah akan memberi bantuan, atau donasi buruh sendiri, tapi sjarat{{2}} jang telah ditentukan itu harus ada dan tersedia, sehingga keadaan perburuhan diseluruh Tiongkok tidak berbeda{{2}}. Menurut tempat tidak, menurut pemilik pun tidak, sebab kewadjiban jang di letakkan. Pemerintah kepada orang (umpamanja menurut undang{{2}}) maka Pemerintah sendirilah jang lebih dulu memberi tjontoh. Kapitalisme tetap ada akan tetapi pengaruhnja jang buruk{{2}} dan mengombang-ambingkan nasib buruh dan masjarakat telah dikikis dengan djalan{{2}} tersebut diatas. Inilah suatu tanda adanja dan perlunja tuntunan dari State Economy, sehingga kapitalisme itu tidak meradjalela dengan sifat{{2}}nja jang angkara murka, akan tetapi dituntun kearah jang baik, mempunjai tugas dalam pembangunan dan pembinaan masjarakat baru, agar dengan begitu dapat diperoleh sendi{{2}} jang kuat bagi keamanan dan kedamaian, pergaulan hidup antara manusia dan diantara bangsa{{2}}, suatu sjarat bagi mempertinggi dan memelihara keluhuran budi dan peri kemanusiaan umumnja. Diluar organisasi buruh dan perusahaan{{2}}, ada lagi di Tiongkok jang dinamakan ,,Kindergarten", jaitu tempat{{2}} dimana anak{{2}} boleh tinggal sampai seminggu lamanja, bertjerai dari ibu dan orang tua, diambil hari Sabtu sore dan diantar lagi pada hari Senin pagi. Djadi dalam seminggu anak itu tinggal 2 malam pada orang tuanja. Selebihnja di ,,Kindergarten", jang diurus oleh organisasi{{2}} wanita sendiri.
Apakah perkembangan itu semua akan menudju kearah sosialistis, komunistis, religieus atau lainnja, itu soal nanti. Sebab tiap{{2}} perobahan jang akan datang baru bisa kuat bila didukung dan dilahirkan oleh kodrat jang ada didalam ma-<noinclude>
{{rh|58}}</noinclude>
65natcs1329oydys75ewjz8q97lrh2t
Halaman:Tiongkok Baru.pdf/60
104
35881
296745
105888
2026-05-25T00:33:37Z
Link PB
26772
/* Telah diuji baca */
296745
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Link PB" /></noinclude>sjarakat itu, menurut perbandingan kekuatan jang ada, mana jang akan menang dan menentukan Tidak bisa umpamanja tertjapai tjorak perobahan perobahan itu. masjarakat kearah jang berwatak dan bertjorak Islam, bila didalam kalangan orang{{2}} Islam itu sendiri tidak ada kekuatan jang njata, melebihi kekuatan{{2}} lain jang djuga ada dalam masjarakat. Kekuatan jang reëel dan njata, bukan sekedar kebenaran ajat atau hadits atau sekedar memudja mudji tarich Islam dan kebesaran jang telah pernah ditjapai orang dan bangsa asing dinegerinja. Merk dan tjap Islam sadja tidak berdaja apa{{2}}, bila didalamnja tidak ada isi, hampa atau kosong belaka. Inilah satu kebenaran jang telah diudji dan dibuktikan oleh sedjarah dan bukti sedjarah ini mendjadi perhatian dan tauladan bagi orang di Tiongkok. Mereka tidak gila untuk memaksakan masjarakat komunis, karena tahu, bahwa kodrat, watak dân djiwa komunisme itu belum meliputi tubuh masjarakat sekarang, belum mendalam berpikiran dan tjara hidup sehari{{2}}. Tentang usaha dan ichtiar, itu adalah wadjibnja tiap{{2}} orang jang mau hidup terus. Siapa sadja. Sampai tidaknja, itu tergantung pada keadaan dan sjarat{{2}}. Manusia adalah berichtiar, sedang jang menentukan pasti adalah Tuhan.........
Pada tempatnja, dibawah ini kita tuturkan perkataan Liu Shao-chi, orang jang nomor dua dalam Partai Komunis Tiongkok, tentang ilmu dan teori kommunisme, kata{{2}} jang dihadapkan kepada para burdjuis dan kapitalis nasional sbb. :
,,Sebagai komunis kami harus menganggap dan pertjaja bahwa tuan{{2}} menarik keuntungan dari tenaga buruh. Kami insjaf bahwa pada tingkat dewasa ini keadaan seperti itu tak dapat dihindarkan sekarang, malahan masih perlu. Jang kami inginkan ialah, supaja tuan{{2}} berusaha sekuat tenaga untuk mendapat kemadjuan, memperbesar produksi selekas mungkin sampai setinggi{{2}}nja dan kami berdjandji akan berbuat segala sesuatunja untuk dapat menolong tuan{{2}}.
Mungkin djuga bahwa mulai sekarang tuan{{2}} sudah takut pada sosialisasi, akan tetapi kechawatiran itu tidaklah pada tempatnja. Bila tuan{{2}} berbuat pekerdjaan jang bermanfa'at bagi masjarakat dengan memadjukan perusahaan tuan{{2}}, dan anak{{2}} tuan{{2}} dididik dan dilatih agar mendjadi kaum technici jang ulung, maka tuan{{2}} akan tetap mendjadi orang jang utama dilapangan industri, dan tuan{{2}} akan mengalami dan mejakini nanti bahwa tuan{{2}} sebagai pemimpin dari perusahaan{{2}} negara jang disosilisir akan lebih beruntung daripada tetap mendjadi pemiliknja, jang harus bertanggung djawab atas segala{{2}}nja, atas kemungkinan{{2}} jang akan datang, atas nasib perusahaan seluruhnja, atas ,,ups and downs" jang mungkin akan dialami dimasa datang".
Demikianlah keterangan pemuka Partai Komunis itu, jang dengan tidak pakai tedeng aling{{2}}, membukakan duduknja perkara setjara terus terang, setjara persaudaraan dan ini dapatlah dipandang sebagai pendirian partai komunis dalam soal perindustrian dan pembangunan di Tiongkok, sekarang dan untuk seterusnja. Djadi tidaklah main rampok atau sita{{2}}an atas harta dan milik orang.<noinclude>
{{rh|||59}}</noinclude>
7d8cy8vt171zm78565wphnk0n9rcidz
Halaman:Tiongkok Baru.pdf/61
104
35882
296746
105889
2026-05-25T03:15:02Z
Link PB
26772
/* Telah diuji baca */
296746
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Link PB" /></noinclude>{{c|'''3. PERHUBUNGAN, PENGANGKUTAN DAN LAIN2.'''}}
Soal pengangkutan di Tiongkok masih menghendaki pembangunan jang terus menerus, karena luasnja daerah negara, mulai dari Port Arthur (Dairen) disebelah Timur sampai ke lembah sungai Tarim diutara Tibet dekat perbatasan Sovjet dan India, jang djaraknja tidak kurang dari 6.000 km garis lurus. Dan dari sungai Amur disebelah Utara sampai keperbatasan Birma disebelah Selatan jang djuga tidak kurang dari 5.000 km garis lurus. Luasnja daerah daratan negara Tiongkok diluar Tibet adalah 9.997.000 kilometer persegi. Djumlah djalan kereta api sebelum perang adalah 25.000 km. Dan sekarang sudah bertambah dengan kira{{2}} 4.800 km. Tahun jang akan datang dan seterusnja djalan kereta api ini akan diperluas terus. Maklumlah jang ada sekarang baru sedikit bila dibandingkan dengan luasnja daerah negara. Terutama disebelah Utara dan Baratlaut, pembikinan djalan kereta api sangat berat, mahal dan berbahaja, tapi sungguhpun begitu, daerah{{2}} jang paling sukarpun telah dimulai dengan meneruskan djalan kereta api baru, seperti dipropinsi Szechuan, dari Chungking ke Chengtu, dipropinsi Kansu, dua daerah jang sangat sukar, berbukit{{2}} dan penuh djurang, sehingga penggalian teroowngan tidak sedikit djumlahnja. Dipropinsi Kwangsi dan Yunnan jang berbatas ke Viet-nam dan Birma, usaha itu berdjalan terus djuga.
Mengenai djalan{{2}} pos sekarang djumlahnja sudah melebihi 900.000 km. djumlah mana berarti sudah 60% melebihi pandjang djalan pos dari tahun 1937 (permulaan agresi Djepang). Perhubungan telipon sekarang sudah mentjapai duaseperempat kali dari djumlah sebelum perang. Begitu juga perhubungan kawat sudah sampai ke Sovjet. Dalam pada itu penerbangan sipil semakin madju dan sangat diandjurkan dan dilapangan ini bantuan Sovjet tidak dapat dilupakan. Waktu kita berada disalah satu lapangan terbang, maka kelihatan beberapa puluh pesawat jang sedang dikerdjakan, dibuka semua mesin{{2}}nja. Diantara jang bekerdja itu kelihatan beberapa orang kulit putih, mungkin orang Rus dan beratus{{2}} orang Tionghoa. Rupanja tjaranja mereka itu beladjar bukan dengan beramai{{2}} pergi ke Moskow atau lain tempat di Sovjet, akan tetapi tetap tinggal dinegeri sendiri. Pesawat ada, instruktur ada, beladjar terbang dapat, sambil memahirkan segala tehnik mengenai mesin{{2}}. Berbondong{{2}} pergi ke Moskow, tak perlu, tidak guna, membuang tempo dan ongkos. Inilah perhitungan jang tepat dan hemat, sesuai dengan keperluan dan kebutuhan zaman dan keadaan dimasa pembangunan, hemat dalam waktu, hemat dalam ongkos dan hemat dalam tenaga, effektif dan effisien senantiasa. Sebab propaganda jang terbaik bukanlah pidato atau teori-rentjana muluk{{2}} akan tetapi hasil kerdja dan kenjataan. Ini jang dapat dilihat oleh mata dan dirasakan oleh rakjat, sedang hocus pocus belum tentu orang mengerti atau mau dengar udjung dan pangkalnja.<noinclude>
{{rh|60}}</noinclude>
1whi47vr39adcg08my5ai6iehfnd4i8
Halaman:Tiongkok Baru.pdf/62
104
35883
296747
105890
2026-05-25T03:17:36Z
Link PB
26772
/* Telah diuji baca */
296747
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Link PB" /></noinclude>Melihat soal dan lapangan perhubungan dan lalu lintas ini sadja, bukan main banjaknja dan beratnja pekerjaan jang harus diselesaikan, sehingga tidak ada pikiran orang untuk bertengkar dan berdebat, tak ada tempo untuk gembar-gembor dan berteori tentang ideologie, partai dll. Segala soal ini mendjadi ketjil bila mengingat dan berhadapan dengan soal{{2}} di lapangan pembangunan jang harus dibereskan, setjepat mungkin. Apakah arti partai, ideologie, bertengkar tentang kiri dan kanan, tentang merah, hidjau, kuning dsb. kalau perut sadja tak dapat diisi dengan hasil usaha sendiri, tubuh akan telandjang bila tidak dengan belas kasihan orang/modal asing?? Faham dan kejakinan haruslah dilatih dan dibentuk mendjadi watak, dengan lambat laun tak dapat diburu{{2}}kan dalam 2 à 3 minggu, sedang keperluan hidup harus diusahakan saban djam, saban hari.
Dan soal{{2}} hidup jang dihadapi Tiongkok bukan soal perhubungan sadja, lebih besar dari itu ada lagi, perobahan tanah dan pertaniannja jang akan menudju kearah mechanisasi, industri jang harus meningkat pada dewasa, mentjukupi keperluan rakjat dan masjarakat, perdagangan dalam dan luar negeri, perkapalan dan......... pertahanan, sebab dizaman kaum imperialis dan agressor sudah dihinggapi oleh demam perang, karena hasutan dan desakan pebrik{{2}} sendjatanja sendiri, tidaklah tjukup orang menghendaki dan ingin perdamaian dengan menjatakan dengan mulut sadja, akan tetapi perdamaian itu harus ditjapai, diperdjuangkan dengan tenaga dan kekuatan jang reëel dan njata. Pemimpin harus tahu merasakan dan membuktikan tanggung djawab, tidak tjukup hanja sekedar pandai pidato, bitjara dan pintar lidah sadja.
Soal pengangkutan dan lalu lintas ini sangat erat hubungannja dengan soal perdagangan. Sampai sekarang jang terpenting bagi Tiongkok ialah soal perdagangan dalam negeri, sedang soal dagang keluar belum dapat diharapkan, melihat situasi sekarang. Hanja India, Eropah Timur dan Sovjetlah terutama jang berdagang dengan Tiongkok, tapi itupun tidak sedikit artinja, sebab negeri{{2}} tersebut adalah negara{{2}} raksasa, luasnja daerah dan djumlah rakjalt jang ratusan djuta.
Djadi pertukaran barang jang diutamakan dan harus beres dulu ialah antara kota dan desa dan antara daerah dengan daerah. Diluar Republik Rakjat Mongolia (Mongolia Luar) di Tiongkok terdapat 8 daerah besar jang mempunjai pemerintah atau kabinet sendiri, langsung dibawah Pemerintah Pusat di Peking, jaitu: 1. Daerah Baratlaut 2. Tibet, 3. Daerah Baratdaja, 4. Daerah Tiongkok Selatan dan Tengah, 5. Daerah Tiongkok Timur, 6. Daerah Tiongkok Utara, 7. Daerah Timurlaut (Tungpei) dan 8. Daerah Otonom Mongolia Dalam. Sungguhpun hanja dalam negeri sadja, perdagangan jang meliputi daerah jang begitu luas bukanlah soal ketjil.
Pertukaran dan perputaran barang antara kota dan desa tidak melulu hanja mengenai segi dagangnja akan tetapi penting pula bagi ekonomi desa dan kota, sebab paberik{{2}} dikota mendapat bahan mentah sekarang dari desa, bukan dari luar<noinclude>
{{rh|||61}}</noinclude>
45n19kiiojjqqn4i3ajb5x1tdu0nofw
Halaman:Madilog.pdf/64
104
90967
296760
260438
2026-05-25T11:41:03Z
Najla Khairani Siregar
23893
296760
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Empat Tilda" />{{rh||'''MADILOG, Tan Malaka (1943)#'''}}
{{rule|15em}}</noinclude>Begitulah definisi tentang bidang, garis, dan titik contoh dengan sains, jadi sainstifik.
Tetapi akan terlalu panjang kalau saya mesti periksa satu persatunya. Terserah kepada
pembaca untuk memeriksanya sendiri. untuk menerapkan yang sudah dipelajari.
Sesudah menerangkan tentang geometri dan bukti yang dipakainya, sesudah mengingatkan
bahwa definisi itu cocok dengan definisi pertama yang saya kemukakan tentang sains, yaitu
akurat, maka saya ingatkan definisi kedua dan ketiga. Sains itu ialah ''organization of facts'',
penyusunan segala bukti dan ''simplification by generalisation'', penyederhanaan dengan
generalisasi bukti. Kedua definisi ini pun kena mengena, isi mengisi dan keduanya berdasar
atas ''facts'', bukti.
Organisasi atau generalisasi dalam matematika berupa teori dan dalam ilmu bintang atau
ilmu alam berupa law atau hukum. Kita bisa dengar teorema Fermat dan Euler, Binomium of
''Newton, Laws of Motion'' (Hukum Gerak) Newton, ''Daltons Law'' (Hukum Kimia Dalton), dll.
Teori atau hukum tadi keduanya hasil dari penyusunan dan generalisasi beberapa bukti,
berdasarkan atas bukti. Tetapi bukti yang kita pakai dalam geometri, seperti isi, bidang, garis,
dan titik berlainan dengan bukti yang diladeni oleh ahli bintang, tumbuhan, binatang,
manusia, dan zat.
Isi bisa kita pastikan dengan panca indera kita, tetapi bidang, garis, dan titik cuma bisa kita
"hampiri" keadaanya dengan gambaran. Bidang itu tidak bisa berdiri sendiri. Bidang peti
tidak bisa kita potong jadi peti tadi. Kalau kita potong berapapun tipisnya, maka jadilah
badanlah dia dan mengambil "sebagian dari ruang alam". Selain itu, maka mesti kita pikirkan
sifat yang lekat pada bidang yakni dua dimensi, dua ukuran, dua besaran: panjang dan lebar.
Sedang badan itu mempunyai tiga dimensi panjang, lebar, dan tinggi.
Garis ialah batas bidang. Garis hanya mempunyai satu dimensi, yakni panjang. Jadi ia tak
punya lebar. Berapa pun runcingnya pena kita, garis yang kita bikin itu mesti masih punya
lebar. Kita tahu yang punya lebar dan panjang ialah bidang. Garis cuma satu dimensi saja
yaitu panjang.
Titik ialah batas garis, satu titik berada di ujung dan yang lain berada di pangkal garis.
Suatu titik tak punya ukuran, besaran. Bagaimanapun halusnya ujung pensil kita, titik yang
kita bikin di atas kertas tadi masih punya 3 dimensi panjang, lebar dan tinggi.<noinclude>{{rh|||63}}</noinclude>
1r176thqhlzdl1cwy8fzlzhe9s2rygw
296761
296760
2026-05-25T11:42:27Z
Najla Khairani Siregar
23893
/* Tervalidasi */
296761
proofread-page
text/x-wiki
<noinclude><pagequality level="4" user="Najla Khairani Siregar" />{{rh||'''MADILOG, Tan Malaka (1943)#'''}}
{{rule|25em}}</noinclude>Begitulah definisi tentang bidang, garis, dan titik contoh dengan sains, jadi sainstifik. Tetapi akan terlalu panjang kalau saya mesti periksa satu persatunya. Terserah kepada pembaca untuk memeriksanya sendiri. untuk menerapkan yang sudah dipelajari.
Sesudah menerangkan tentang geometri dan bukti yang dipakainya, sesudah mengingatkan bahwa definisi itu cocok dengan definisi pertama yang saya kemukakan tentang sains, yaitu akurat, maka saya ingatkan definisi kedua dan ketiga. Sains itu ialah ''organization of facts'',
penyusunan segala bukti dan ''simplification by generalisation'', penyederhanaan dengan generalisasi bukti. Kedua definisi ini pun kena mengena, isi mengisi dan keduanya berdasar atas ''facts'', bukti.
Organisasi atau generalisasi dalam matematika berupa teori dan dalam ilmu bintang atau ilmu alam berupa law atau hukum. Kita bisa dengar teorema Fermat dan Euler, Binomium of ''Newton, Laws of Motion'' (Hukum Gerak) Newton, ''Daltons Law'' (Hukum Kimia Dalton), dll.
Teori atau hukum tadi keduanya hasil dari penyusunan dan generalisasi beberapa bukti, berdasarkan atas bukti. Tetapi bukti yang kita pakai dalam geometri, seperti isi, bidang, garis, dan titik berlainan dengan bukti yang diladeni oleh ahli bintang, tumbuhan, binatang, manusia, dan zat.
Isi bisa kita pastikan dengan panca indera kita, tetapi bidang, garis, dan titik cuma bisa kita "hampiri" keadaanya dengan gambaran. Bidang itu tidak bisa berdiri sendiri. Bidang peti tidak bisa kita potong jadi peti tadi. Kalau kita potong berapapun tipisnya, maka jadilah
badanlah dia dan mengambil "sebagian dari ruang alam". Selain itu, maka mesti kita pikirkan sifat yang lekat pada bidang yakni dua dimensi, dua ukuran, dua besaran: panjang dan lebar. Sedang badan itu mempunyai tiga dimensi panjang, lebar, dan tinggi.
Garis ialah batas bidang. Garis hanya mempunyai satu dimensi, yakni panjang. Jadi ia tak punya lebar. Berapa pun runcingnya pena kita, garis yang kita bikin itu mesti masih punya lebar. Kita tahu yang punya lebar dan panjang ialah bidang. Garis cuma satu dimensi saja
yaitu panjang.
Titik ialah batas garis, satu titik berada di ujung dan yang lain berada di pangkal garis. Suatu titik tak punya ukuran, besaran. Bagaimanapun halusnya ujung pensil kita, titik yang kita bikin di atas kertas tadi masih punya 3 dimensi panjang, lebar dan tinggi.<noinclude>{{rh|||63}}</noinclude>
1vbua94w3qexb0vgxaowq0de0vfydlr
Indeks:BUKU PUTIH PERTAHANAN INDONESIA 2015.pdf
102
100863
296738
281627
2026-05-24T12:54:29Z
Mnam23
12152
296738
proofread-index
text/x-wiki
{{:MediaWiki:Proofreadpage_index_template
|Type=book
|wikidata_item=Q139677718
|Title=Buku Putih Pertahanan Indonesia 2015
|Subtitle=
|Language=id
|Volume=
|Edition=
|Author=
|Co-author1=
|Co-author2=
|Co-author3=
|Translator=
|Co-translator1=
|Co-translator2=
|Editor=
|Co-editor1=
|Co-editor2=
|Illustrator=
|Publisher=Kementerian Pertahanan Republik Indonesia
|Address=
|Printer=
|Year=
|Key=
|ISBN=978-979-8878-04-6
|Source=PDF
|Image=1
|Progress=V
|Pages=<pagelist
1="Cover"
2="–"
3="Cover"
4to5="Title"
6="Img"
7=3
7to9="roman"
10to11="ToC"
12="Img"
13=1
143to144="–"
/>
|Volumes=
|Remarks=
|Notes=
|Header=
|Footer=
}}
pm5ezv9x5bpw1lg159n0mvdt2kfeyaa
MediaWiki:Gadget-DiscussionArchiver-idwikisource.js
8
104658
296740
296048
2026-05-24T13:46:53Z
Rachmat04
3937
Rachmat04 memindahkan halaman [[MediaWiki:Gadget-DiscussionArchiver.js]] ke [[MediaWiki:Gadget-DiscussionArchiver-idwikisource.js]]
296048
javascript
text/javascript
/**
* [DISCUSSIONARCHIVER.JS — GADGET PENGARSIP DISKUSI — WIKISUMBER]
*
* •==============================================•
* > Tipe: JavaScript (MediaWiki Gadget)
* > Target: Ruang nama Wikisumber: (Wikisumber:)
* > Fungsi: Mengarsipkan utas diskusi yang komentar
* terakhirnya sudah >= 2 bulan dari sekarang
* > Hak: Hanya sysop
* •==============================================•
*/
// <nowiki>
(function () {
const cfg = mw.config.get();
const api = new mw.Api();
const page = cfg.wgPageName;
const groups = cfg.wgUserGroups || [];
const isSysop = groups.includes('sysop');
// Hanya aktif untuk sysop
if (!isSysop) return;
// Hanya aktif di ruang nama Wikisumber: (namespace 4)
if (cfg.wgNamespaceNumber !== 4) return;
// Jangan jalankan di halaman diff, history, atau arsip
if (
cfg.wgAction === 'history' ||
cfg.wgDiffNewId ||
cfg.wgDiffOldId ||
cfg.wgCurRevisionId !== cfg.wgRevisionId
) return;
const excludedPatterns = ['/Arsip/', '/Arsip'];
if (excludedPatterns.some(p => page.includes(p))) return;
// ── CSS ───────────────────────────────────────────────────────────────
//
// Strategi dark mode yang benar untuk Vector 2022 & Minerva:
// 1. Default (light): variabel --da-* didefinisikan di .da-dialog
// 2. Night mode paksa : html.skin-theme-clientpref-night .da-dialog
// 3. Night mode otomatis (ikut OS): @media (prefers-color-scheme:dark)
// html.skin-theme-clientpref-os .da-dialog
//
// Token Codex yang benar (MediaWiki 1.42+):
// --background-color-base → latar konten utama
// --background-color-neutral → latar header/footer/box
// --background-color-neutral-subtle → latar hover ringan
// --color-base → teks utama
// --color-subtle → teks sekunder
// --color-placeholder → teks muted/placeholder
// --color-progressive → biru aksi utama (#36c)
// --color-progressive--hover → biru hover
// --color-destructive → merah (#b32424)
// --border-color-base → border standar
// --border-color-subtle → border ringan
mw.util.addCSS(`
/* ── Variabel lokal: light mode (default) ── */
.da-dialog {
--da-bg: #ffffff;
--da-bg-sub: #f8f9fa;
--da-bg-hover: #eaecf0;
--da-border: #a2a9b1;
--da-border-s: #eaecf0;
--da-text: #202122;
--da-text-s: #54595d;
--da-text-m: #72777d;
--da-link: #3366cc;
--da-prog: #3366cc;
--da-prog-h: #2a4b8d;
--da-dest: #b32424;
--da-badge-bg: #fee7e6;
--da-badge-c: #b32424;
}
/* ── Night mode paksa (Vector 2022 / Minerva) ── */
html.skin-theme-clientpref-night .da-dialog {
--da-bg: #101418;
--da-bg-sub: #1e2328;
--da-bg-hover: #2a3038;
--da-border: #54595d;
--da-border-s: #2e3136;
--da-text: #eaecf0;
--da-text-s: #a2a9b1;
--da-text-m: #72777d;
--da-link: #6699ff;
--da-prog: #6699ff;
--da-prog-h: #4477ee;
--da-dest: #ff8080;
--da-badge-bg: #3a1010;
--da-badge-c: #ff8080;
}
/* ── Night mode otomatis (ikut OS, skin-theme-clientpref-os) ── */
@media screen and (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os .da-dialog {
--da-bg: #101418;
--da-bg-sub: #1e2328;
--da-bg-hover: #2a3038;
--da-border: #54595d;
--da-border-s: #2e3136;
--da-text: #eaecf0;
--da-text-s: #a2a9b1;
--da-text-m: #72777d;
--da-link: #6699ff;
--da-prog: #6699ff;
--da-prog-h: #4477ee;
--da-dest: #ff8080;
--da-badge-bg: #3a1010;
--da-badge-c: #ff8080;
}
}
/* ── Overlay ── */
.da-overlay {
position: fixed;
inset: 0;
background: rgba(0,0,0,0.55);
z-index: 100000;
display: flex;
align-items: center;
justify-content: center;
padding: 12px;
animation: da-fadein .15s ease-out;
}
/* ── Dialog shell ── */
.da-dialog {
background: var(--da-bg);
color: var(--da-text);
border: 1px solid var(--da-border);
border-radius: 2px;
width: min(680px, 96%);
max-height: 88vh;
overflow: hidden;
display: flex;
flex-direction: column;
box-shadow: 0 8px 32px rgba(0,0,0,0.40);
font-family: var(--font-family-base, system-ui, -apple-system, sans-serif);
font-size: 0.9375em;
animation: da-slidein .15s ease-out;
}
/* ── Header ── */
.da-dialog-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
padding: 12px 20px;
border-bottom: 1px solid var(--da-border-s);
background: var(--da-bg-sub);
font-weight: 700;
font-size: 1em;
flex-shrink: 0;
}
.da-dialog-header-title {
display: flex;
align-items: center;
gap: 8px;
color: var(--da-text);
}
.da-dialog-close {
background: none;
border: none;
cursor: pointer;
color: var(--da-text-s);
font-size: 1.2em;
line-height: 1;
padding: 2px 5px;
border-radius: 2px;
transition: background 0.1s, color 0.1s;
}
.da-dialog-close:hover {
background: var(--da-bg-hover);
color: var(--da-text);
}
/* ── Body ── */
.da-dialog-body {
padding: 16px 20px;
overflow-y: auto;
flex: 1;
color: var(--da-text);
line-height: 1.6;
}
/* ── Footer ── */
.da-dialog-footer {
padding: 12px 20px;
border-top: 1px solid var(--da-border-s);
background: var(--da-bg-sub);
display: flex;
justify-content: flex-end;
gap: 8px;
flex-shrink: 0;
}
/* ── Tombol ── */
.da-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
padding: 6px 12px;
border-radius: 2px;
font-size: 0.875em;
font-weight: 700;
font-family: inherit;
cursor: pointer;
border: 1px solid transparent;
transition: background 0.1s, border-color 0.1s, color 0.1s;
white-space: nowrap;
}
.da-btn:focus-visible {
outline: 2px solid var(--da-prog);
outline-offset: 2px;
}
.da-btn-normal {
background: var(--da-bg);
color: var(--da-text);
border-color: var(--da-border);
}
.da-btn-normal:hover {
background: var(--da-bg-hover);
border-color: var(--da-text-s);
}
.da-btn-progressive {
background: var(--da-prog);
color: #fff;
border-color: var(--da-prog);
}
.da-btn-progressive:hover {
background: var(--da-prog-h);
border-color: var(--da-prog-h);
}
.da-btn-destructive {
background: var(--da-bg);
color: var(--da-dest);
border-color: var(--da-dest);
}
.da-btn-destructive:hover {
background: var(--da-dest);
color: #fff;
}
/* ── Daftar utas ── */
.da-thread-list {
list-style: none;
margin: 12px 0;
padding: 0;
max-height: 320px;
overflow-y: auto;
border: 1px solid var(--da-border-s);
border-radius: 2px;
}
.da-thread-item {
display: flex;
align-items: flex-start;
gap: 10px;
padding: 10px 14px;
border-bottom: 1px solid var(--da-border-s);
transition: background 0.1s;
}
.da-thread-item:last-child { border-bottom: none; }
.da-thread-item:hover { background: var(--da-bg-hover); }
.da-thread-title {
font-weight: 700;
font-size: 0.93em;
color: var(--da-text);
}
.da-thread-meta {
font-size: 0.82em;
color: var(--da-text-s);
margin-top: 3px;
}
/* ── Badge ── */
.da-badge {
display: inline-flex;
align-items: center;
background: var(--da-badge-bg);
color: var(--da-badge-c);
border-radius: 2px;
padding: 1px 6px;
font-size: 0.76em;
font-weight: 700;
margin-left: 6px;
vertical-align: middle;
}
/* ── Kotak konfirmasi ── */
.da-confirm-box {
background: var(--da-bg-sub);
border: 1px solid var(--da-border-s);
border-left: 3px solid var(--da-prog);
border-radius: 2px;
padding: 12px 16px;
margin-bottom: 12px;
}
.da-confirm-box strong {
display: block;
margin-bottom: 4px;
color: var(--da-text);
}
.da-confirm-meta {
font-size: 0.85em;
color: var(--da-text-s);
margin: 4px 0 8px;
}
.da-archive-target {
font-size: 0.86em;
color: var(--da-link);
word-break: break-all;
}
/* ── Progress & kosong ── */
.da-progress {
font-size: 0.92em;
color: var(--da-text-s);
margin-top: 8px;
min-height: 1.5em;
line-height: 1.6;
}
.da-empty {
text-align: center;
padding: 32px 0;
color: var(--da-text-m);
font-size: 0.93em;
}
.da-empty-icon {
font-size: 2em;
display: block;
margin-bottom: 8px;
}
.da-hint {
font-size: 0.84em;
color: var(--da-text-s);
margin: 8px 0 0;
}
.da-archive-label {
font-size: 0.86em;
color: var(--da-link);
word-break: break-all;
}
/* ── Animasi ── */
@keyframes da-fadein {
from { opacity: 0; } to { opacity: 1; }
}
@keyframes da-slidein {
from { opacity: 0; transform: translateY(-6px); }
to { opacity: 1; transform: translateY(0); }
}
/* ── Tombol mengambang ── */
#da-float-btn {
position: fixed;
bottom: 130px;
right: 25px;
background: #3366cc;
color: #fff;
border: none;
padding: 8px 14px;
border-radius: 2px;
cursor: pointer;
z-index: 99999;
font-weight: 700;
font-size: 0.875em;
font-family: inherit;
box-shadow: 0 2px 8px rgba(0,0,0,0.22);
transition: background 0.15s, box-shadow 0.15s;
display: flex;
align-items: center;
gap: 6px;
}
#da-float-btn:hover {
background: #2a4b8d;
box-shadow: 0 4px 12px rgba(0,0,0,0.30);
}
#da-float-btn:active {
background: #2a4b8d;
}
`);
// ── Utilitas ──────────────────────────────────────────────────────────
const BULAN_ID = {
'Januari': 0, 'Februari': 1, 'Maret': 2, 'April': 3,
'Mei': 4, 'Juni': 5, 'Juli': 6, 'Agustus': 7,
'September': 8, 'Oktober': 9, 'November': 10, 'Desember': 11
};
/**
* Mengambil timestamp terbaru dari sebuah blok teks wikitext.
* Format yang dideteksi: "12 Januari 2024 12.34 (UTC)"
* @param {string} text
* @returns {Date|null}
*/
function getLatestTimestamp(text) {
// Pola tanda tangan Wikisumber Indonesia:
// "12 Januari 2024 12.34 (UTC)" atau "12 Januari 2024 pukul 12.34 (UTC)"
const pattern = /(\d{1,2})\s+(Januari|Februari|Maret|April|Mei|Juni|Juli|Agustus|September|Oktober|November|Desember)\s+(\d{4})\s+(?:pukul\s+)?(\d{1,2})[.:](\d{2})\s+\(UTC\)/g;
let latest = null;
let m;
while ((m = pattern.exec(text)) !== null) {
const d = new Date(Date.UTC(
parseInt(m[3]),
BULAN_ID[m[2]],
parseInt(m[1]),
parseInt(m[4]),
parseInt(m[5])
));
if (!latest || d > latest) latest = d;
}
return latest;
}
/**
* Format tanggal ke string Indonesia yang ramah baca.
* @param {Date} d
* @returns {string}
*/
function formatTanggal(d) {
const bulanNama = Object.keys(BULAN_ID);
return `${d.getUTCDate()} ${bulanNama[d.getUTCMonth()]} ${d.getUTCFullYear()}`;
}
/**
* Hitung selisih bulan antara dua tanggal.
* @param {Date} dari
* @param {Date} ke
* @returns {number}
*/
function selisihBulan(dari, ke) {
return (ke.getFullYear() - dari.getFullYear()) * 12
+ (ke.getMonth() - dari.getMonth());
}
function notify(msg, type = 'info') {
mw.notify ? mw.notify(msg, { type }) : console.log('[DiscussionArchiver:Wikisumber]', msg);
}
// ── Dialog ────────────────────────────────────────────────────────────
function createDialog(titleHtml, bodyHtml) {
const overlay = document.createElement('div');
overlay.className = 'da-overlay';
const dialog = document.createElement('div');
dialog.className = 'da-dialog';
dialog.setAttribute('role', 'dialog');
dialog.setAttribute('aria-modal', 'true');
dialog.innerHTML = `
<div class="da-dialog-header">
<div class="da-dialog-header-title">${titleHtml}</div>
<button class="da-dialog-close" aria-label="Tutup">✕</button>
</div>
<div class="da-dialog-body">${bodyHtml}</div>
<div class="da-dialog-footer"></div>
`;
overlay.appendChild(dialog);
dialog.querySelector('.da-dialog-close').addEventListener('click', () => overlay.remove());
overlay.addEventListener('click', e => { if (e.target === overlay) overlay.remove(); });
document.body.appendChild(overlay);
return {
overlay,
dialog,
body: dialog.querySelector('.da-dialog-body'),
footer: dialog.querySelector('.da-dialog-footer')
};
}
function addBtn(footer, label, type, onClick) {
const typeClass = {
'mw-ui-progressive': 'da-btn-progressive',
'mw-ui-destructive': 'da-btn-destructive',
'mw-ui-quiet': 'da-btn-normal'
}[type] || 'da-btn-normal';
const btn = document.createElement('button');
btn.className = 'da-btn ' + typeClass;
btn.textContent = label;
btn.addEventListener('click', onClick);
footer.appendChild(btn);
return btn;
}
// ── Logika utama ──────────────────────────────────────────────────────
/**
* Parsing wikitext menjadi array utas level-2.
* @param {string} wikitext
* @returns {Array<{title:string, content:string, start:number, end:number}>}
*/
function parseThreads(wikitext) {
const headerRe = /^==\s*([^=\n][^\n]*?)\s*==\s*$/gm;
const positions = [];
let m;
while ((m = headerRe.exec(wikitext)) !== null) {
positions.push({ title: m[1].trim(), start: m.index });
}
positions.push({ title: null, start: wikitext.length });
const threads = [];
for (let i = 0; i < positions.length - 1; i++) {
const start = positions[i].start;
const end = positions[i + 1].start;
threads.push({
title: positions[i].title,
content: wikitext.substring(start, end),
start,
end
});
}
return threads;
}
/**
* Menjalankan dialog konfirmasi per utas, satu per satu.
* Mengembalikan Promise yang resolve ke array utas yang disetujui.
*/
function confirmPerThread(threads) {
return new Promise(resolve => {
const approved = [];
let idx = 0;
const sourceTitle = page.replace(/_/g, ' ');
function showNext() {
if (idx >= threads.length) {
resolve(approved);
return;
}
const t = threads[idx];
const ts = getLatestTimestamp(t.content);
const usia = ts ? selisihBulan(ts, new Date()) : '?';
const tsTxt = ts ? formatTanggal(ts) : 'Tidak terdeteksi';
const year = ts ? ts.getUTCFullYear() : new Date().getFullYear();
const archiveTitle = `${sourceTitle}/Arsip ${year}`;
const { overlay, footer } = createDialog(
`Konfirmasi Arsip Utas (${idx + 1}/${threads.length})`,
`<div class="da-confirm-box">
<strong>📄 ${mw.html.escape(t.title)}</strong>
<div class="da-confirm-meta">
Komentar terakhir: <b>${tsTxt}</b>
<span class="da-badge">~${usia} bulan lalu</span>
</div>
<div class="da-archive-target">→ Akan diarsipkan ke: <b>${mw.html.escape(archiveTitle)}</b></div>
</div>
<p class="da-hint">
Lewati untuk melewati utas ini tanpa mengarsipkan.
</p>`
);
addBtn(footer, 'Lewati', 'mw-ui-quiet', () => {
overlay.remove();
idx++;
showNext();
});
addBtn(footer, 'Arsipkan', 'mw-ui-progressive', () => {
approved.push(t);
overlay.remove();
idx++;
showNext();
});
}
showNext();
});
}
/**
* Proses pengarsipan: hapus utas dari halaman asal,
* kelompokkan per tahun timestamp, lalu tambahkan ke halaman arsip masing-masing.
* @param {Array} threadsToArchive
* @returns {Object} { archivedCount, archiveTitles }
*/
async function doArchive(threadsToArchive) {
// Ambil ulang wikitext terbaru (hindari konflik edit)
const res = await api.get({
action: 'query',
prop: 'revisions',
rvprop: ['content', 'timestamp'],
titles: page,
formatversion: 2
});
const pageData = res.query.pages[0];
let text = pageData.revisions[0].content;
const baseTimestamp = pageData.revisions[0].timestamp;
// Hapus setiap utas dari teks asal
for (const t of threadsToArchive) {
const escaped = t.content.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
text = text.replace(new RegExp(escaped), '');
}
text = text.replace(/\n{3,}/g, '\n\n').trim();
// Kelompokkan utas berdasarkan tahun timestamp terakhirnya
const byYear = {};
for (const t of threadsToArchive) {
const ts = getLatestTimestamp(t.content);
const year = ts ? ts.getUTCFullYear() : new Date().getFullYear();
if (!byYear[year]) byYear[year] = [];
byYear[year].push(t);
}
const sourceTitle = page.replace(/_/g, ' ');
const archiveTitles = [];
// Simpan ke halaman arsip per tahun
for (const year of Object.keys(byYear).sort()) {
const threads = byYear[year];
const archiveTitle = `${sourceTitle}/Arsip ${year}`;
archiveTitles.push(archiveTitle);
const arsRes = await api.get({
action: 'query',
prop: 'revisions',
rvprop: 'content',
titles: archiveTitle,
formatversion: 2
});
const arsPage = arsRes.query.pages[0];
let arsText = (arsPage.revisions && arsPage.revisions[0].content) || '';
if (!arsPage.revisions) {
arsText = `{{Arsip|${sourceTitle}}}\n__ARCHIVEDTALK__\n__NOINDEX__\n`;
}
const newBlocks = threads.map(t => t.content.trim()).join('\n\n');
arsText = `${arsText.trim()}\n\n${newBlocks}\n`;
await api.postWithToken('csrf', {
action: 'edit',
title: archiveTitle,
text: arsText.trim(),
summary: `Menambahkan ${threads.length} utas dari [[${sourceTitle}]]`
});
}
// Simpan halaman asal (sekali saja, setelah semua arsip selesai)
const archiveList = archiveTitles.map(t => `[[${t}]]`).join(', ');
await api.postWithToken('csrf', {
action: 'edit',
title: page,
text,
summary: `Mengarsipkan ${threadsToArchive.length} utas tidak aktif ke ${archiveList}`,
basetimestamp: baseTimestamp
});
return { archivedCount: threadsToArchive.length, archiveTitles };
}
// ── Alur utama ────────────────────────────────────────────────────────
async function runArchiver() {
// 1. Ambil wikitext halaman
let data;
try {
data = await api.get({
action: 'query',
prop: 'revisions',
rvprop: 'content',
titles: page,
formatversion: 2
});
} catch (e) {
notify('⚠️ Gagal memuat isi halaman.', 'error');
return;
}
const wikitext = (data.query.pages[0] && data.query.pages[0].revisions && data.query.pages[0].revisions[0] && data.query.pages[0].revisions[0].content) || '';
if (!wikitext) {
notify('⚠️ Halaman kosong atau gagal dimuat.', 'warn');
return;
}
// 2. Parse utas level-2
const allThreads = parseThreads(wikitext);
if (!allThreads.length) {
notify('ℹ️ Tidak ditemukan utas level-2 di halaman ini.', 'info');
return;
}
// 3. Filter utas yang komentar terakhirnya >= 2 bulan
const now = new Date();
const staleThreads = allThreads.filter(t => {
const ts = getLatestTimestamp(t.content);
if (!ts) return false;
return selisihBulan(ts, now) >= 2;
});
if (!staleThreads.length) {
// Dialog: tidak ada yang perlu diarsipkan
const { overlay, footer } = createDialog(
'Pengarsip Diskusi — Tidak Ada Utas Kedaluwarsa',
`<div class="da-empty">
<span class="da-empty-icon">✅</span>
Semua utas masih aktif (komentar terakhir < 2 bulan).<br>
Tidak ada yang perlu diarsipkan saat ini.
</div>`
);
addBtn(footer, 'Tutup', 'mw-ui-quiet', () => overlay.remove());
return;
}
// 4. Tentukan arsip tujuan per utas (berdasarkan tahun timestamp)
const sourceTitle = page.replace(/_/g, ' ');
const getArchiveTitle = t => {
const ts = getLatestTimestamp(t.content);
const year = ts ? ts.getUTCFullYear() : now.getFullYear();
return `${sourceTitle}/Arsip ${year}`;
};
// 5. Tampilkan ringkasan dulu sebelum konfirmasi per utas
await new Promise(resolve => {
const listItems = staleThreads.map(t => {
const ts = getLatestTimestamp(t.content);
const usia = ts ? selisihBulan(ts, now) : '?';
const tsTxt = ts ? formatTanggal(ts) : '—';
const archiveTitle = getArchiveTitle(t);
return `<li class="da-thread-item" style="cursor:default">
<div>
<div class="da-thread-title">${mw.html.escape(t.title)}</div>
<div class="da-thread-meta">
Komentar terakhir: ${tsTxt} <span class="da-badge">~${usia} bln</span><br>
<span style="color:var(--da-link)">→ ${mw.html.escape(archiveTitle)}</span>
</div>
</div>
</li>`;
}).join('');
const { overlay, footer } = createDialog(
`Pengarsip Diskusi — ${staleThreads.length} Utas Tidak Aktif`,
`<p style="margin:0 0 8px;font-size:0.93em;color:var(--da-text,#202122)">
Utas berikut memiliki komentar terakhir <b>≥ 2 bulan</b> yang lalu.
Klik <b>Lanjut</b> untuk mengkonfirmasi setiap utas satu per satu.
</p>
<ul class="da-thread-list">${listItems}</ul>`
);
addBtn(footer, 'Batal', 'mw-ui-destructive', () => { overlay.remove(); resolve('cancel'); });
addBtn(footer, 'Lanjut →', 'mw-ui-progressive', () => { overlay.remove(); resolve('ok'); });
}).then(async result => {
if (result === 'cancel') return;
// 6. Konfirmasi per utas
const approved = await confirmPerThread(staleThreads);
if (!approved.length) {
notify('ℹ️ Tidak ada utas yang dipilih untuk diarsipkan.', 'info');
return;
}
// 7. Dialog progres + eksekusi
const { overlay, footer } = createDialog(
`Mengarsipkan ${approved.length} Utas…`,
`<div class="da-progress" id="da-prog-msg">⏳ Memproses…</div>`
);
const progMsg = document.getElementById('da-prog-msg');
try {
progMsg.textContent = '⏳ Menyimpan ke halaman arsip…';
const { archivedCount, archiveTitles } = await doArchive(approved);
const links = archiveTitles.map(t =>
`<a href="/wiki/${encodeURIComponent(t.replace(/ /g, '_'))}" target="_blank">${mw.html.escape(t)}</a>`
).join(', ');
progMsg.innerHTML = `✅ <b>${archivedCount} utas</b> berhasil diarsipkan ke: ${links}.`;
addBtn(footer, 'Tutup & Muat Ulang', 'mw-ui-progressive', () => {
overlay.remove();
location.reload();
});
} catch (e) {
console.error('[DiscussionArchiver:Wikisumber] Error:', e);
progMsg.textContent = '❌ Gagal mengarsipkan. Lihat konsol untuk detail.';
addBtn(footer, 'Tutup', 'mw-ui-destructive', () => overlay.remove());
}
});
}
// ── Tombol mengambang ─────────────────────────────────────────────────
const floatBtn = document.createElement('button');
floatBtn.id = 'da-float-btn';
floatBtn.textContent = '📦 Arsipkan Diskusi';
floatBtn.title = 'DiscussionArchiver.js (Wikisumber) — Arsipkan utas tidak aktif (≥ 2 bulan)';
floatBtn.addEventListener('click', runArchiver);
document.body.appendChild(floatBtn);
})();
// </nowiki>
hek55tiittus6zp10iwvr2wbz13pi4s
Modul:Running header
828
104855
296736
2026-05-24T12:49:56Z
Mnam23
12152
import from en.ws
296736
Scribunto
text/plain
--[=[
Implements [[Template:RunningHeader]]
]=]
require('strict')
local getArgs = require('Module:Arguments').getArgs
local p = {}
function p._running_header(args)
-- holds tracking categories
local tracking_cats = {}
-- aliases for first 3 parameters
if args.left or args.center or args.centre or args.right then
-- this is fine but it's worth keeping track of
table.insert(tracking_cats, '[[Category:' .. 'Running headers using explicit parameter names' .. ']]')
-- check for duplicates (which are a problem)
if (args[1] and args.left) or (args[2] and args.center) or (args[2] and args.centre) or (args.center and args.centre) or (args[3] and args.right) then
table.insert(tracking_cats, '[[Category:' .. 'Pages using duplicate arguments in template calls' .. ']]')
end
-- use aliases
args[1] = args[1] or args.left
args[2] = args[2] or args.center or args.centre
args[3] = args[3] or args.right
end
-- get number of cells (largest-numbered parameter)
-- can't use #args because that doesn't work consistently on tables that aren't sequences
-- table.maxn also seems not to work
local cell_count = 0
for k, v in pairs(args) do
local i = tonumber(k)
if i and i > cell_count then
cell_count = i
end
end
-- track headers which don't set the contents of every cell
local undefined_entries = false
-- track how many cells have content
local content_entries = 0
for i = 1, cell_count do
if not args[i] then
undefined_entries = true
elseif args[i] and args[i] ~= '' then
content_entries = content_entries + 1
end
end
if undefined_entries then
-- track headers with undefined entries (fine but worth keeping track of)
table.insert(tracking_cats, '[[Category:' .. 'Running headers with undefined entries' .. ']]')
end
if content_entries == 1 then
-- track headers with only one non-blank entry
table.insert(tracking_cats, '[[Category:' .. 'Running headers with only one content entry' .. ']]')
end
if cell_count == 0 or content_entries == 0 then
-- track headers with no entries (pointless)
table.insert(tracking_cats, '[[Category:' .. 'Empty running headers' .. ']]')
elseif cell_count == 1 then
-- track 1-cell headers (fine but worth keeping track of)
table.insert(tracking_cats, '[[Category:' .. 'Running headers with one entry' .. ']]')
elseif cell_count == 2 then
-- track 2-cell headers (fine but worth keeping track of)
table.insert(tracking_cats, '[[Category:' .. 'Running headers with two entries' .. ']]')
elseif cell_count > 4 then
-- track headers with more than 4 cells (fine but worth keeping track of)
table.insert(tracking_cats, '[[Category:' .. 'Running headers with more than four entries' .. ']]')
end
-- TEMPORARY FOR MIGRATION: enforce 3-cell minimum
cell_count = math.max(cell_count, 3)
-- assemble header
local base_class = 'wst-rh'
local header_class = table.concat({
base_class,
base_class .. '-' .. cell_count,
args.class or (base_class .. '-default')
}, ' ')
local header_div = mw.html.create('div')
:addClass(header_class)
-- cell classes
local cell_class = base_class .. '-cell'
local extra_cell_classes = {
[3] = {'wst-rh-left', 'wst-rh-center', 'wst-rh-right'}
}
extra_cell_classes = extra_cell_classes[cell_count] or {}
for i = 1, cell_count do
local cell = header_div:tag('div')
:addClass(cell_class)
:wikitext(args[i] or '')
if extra_cell_classes[i] then
cell:addClass(extra_cell_classes[i])
end
end
return tostring(header_div) .. table.concat(tracking_cats)
end
function p.running_header(frame)
local args = getArgs(frame, {trim = true, removeBlanks = false})
return p._running_header(args)
end
return p
82rul6vqvjo1f9yc4d5nav8h515q16h
Templat:Rotate/dok
10
104856
296739
2026-05-24T13:07:57Z
Mnam23
12152
←Membuat halaman berisi '{{Documentation subpage}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE --> === Usage === This template is for producing rotated text. '''Note''': The page layout is '''not''' adjusted to accommodate the rotated text. For this reason the rotated text may overlap with other elements above and below. ===Examples=== <pre> {| border |- | Hello world | Hello world | Hello world |- | {{rotate| 90|Hello world}} | {{rotate|-75|Hello world}} |...'
296739
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE -->
=== Usage ===
This template is for producing rotated text.
'''Note''': The page layout is '''not''' adjusted to accommodate the rotated text. For this reason the rotated text may overlap with other elements above and below.
===Examples===
<pre>
{| border
|-
| Hello world
| Hello world
| Hello world
|-
| {{rotate| 90|Hello world}}
| {{rotate|-75|Hello world}}
| {{rotate|180|Hello world}}
|-
| Hello world
| Hello world
| Hello world
|-
|}
</pre>
{| border
|-
| Hello world
| Hello world
| Hello world
|-
| {{rotate| 90|Hello world}}
| {{rotate|-75|Hello world}}
| {{rotate|180|Hello world}}
|-
| Hello world
| Hello world
| Hello world
|-
|}
To prevent rotated text from overlapping other text, you can manually add space for the text to rotate in:
<pre>
{| border
|height=80px width=80px|{{rotate| 90|Hello world}}
|height=80px width=80px|{{rotate|-90|Hello world}}
|height=80px width=80px|{{rotate|180|Hello world}}
|}
</pre>
{| border
|height=80px width=80px|{{rotate| 90|Hello world}}
|height=80px width=80px|{{rotate|-90|Hello world}}
|height=80px width=80px|{{rotate|180|Hello world}}
|}
===Technical notes===
This template uses the CSS "-webkit-transform:rotate(90deg); -moz-transform:rotate(90deg); -o-transform: rotate(90deg);" to achieve rotation. Older browsers may not see this effect, but it is [http://scottgale.com/blog/css-vertical-text/2010/03/01/ reported to work] on IE 6+, Opera 10.5+, Firefox and Webkit-based browsers like Safari.
To wrap a block of text (i.e. to use a div tag instead of an in-line span tag), use {{para|ele|div}}.
=== See also ===
* {{tl|vrl}} - to display vertical paragraphs
<includeonly>
[[Category:Formatting templates|{{PAGENAME}}]]
[[Category:Experimental templates|{{PAGENAME}}]]
</includeonly>
5ssxjanu97yndtopnjwixzfvm2f35t0
MediaWiki:Gadget-DiscussionArchiver.js
8
104857
296741
2026-05-24T13:46:53Z
Rachmat04
3937
Rachmat04 memindahkan halaman [[MediaWiki:Gadget-DiscussionArchiver.js]] ke [[MediaWiki:Gadget-DiscussionArchiver-idwikisource.js]]
296741
javascript
text/javascript
/* #REDIRECT */mw.loader.load("//id.wikisource.org/w/index.php?title=MediaWiki:Gadget-DiscussionArchiver-idwikisource.js&action=raw&ctype=text/javascript");
6gg7bvznvd9q4zczdc9hzqm9tl05au6
MediaWiki:Gadget-DiscussionArchiver-core.js
8
104858
296742
2026-05-24T13:47:24Z
Rachmat04
3937
baru
296742
javascript
text/javascript
/**
* [DISCUSSIONARCHIVER-CORE.JS — INTI GADGET PENGARSIP DISKUSI]
*
* •==============================================•
* > Tipe : JavaScript (MediaWiki Gadget — shared core)
* > Versi : 2.0.0
* > Fungsi: Logika bersama untuk mengarsipkan utas
* diskusi yang tidak aktif.
*
* Cara pakai:
* Muat file ini lebih dulu, lalu muat salah satu
* file konfigurasi wiki:
* • DiscussionArchiver-idwikisource.js
* • DiscussionArchiver-gorwiki.js
* • DiscussionArchiver-acewiki.js
*
* File konfigurasi memanggil:
* window.DiscussionArchiverCore.init(CONFIG)
* •==============================================•
*/
// <nowiki>
(function () {
'use strict';
// Tolak jika sudah dimuat sebelumnya
if (window.DiscussionArchiverCore) return;
// ── CSS — Codex Wikimedia Design System ──────────────────────────────
//
// Token mengacu pada:
// https://doc.wikimedia.org/codex/latest/design-tokens/overview.html
//
// Strategi dark mode:
// 1. Light (default) : variabel di .da-dialog
// 2. Night mode paksa : html.skin-theme-clientpref-night .da-dialog
// 3. Night mode OS : @media (prefers-color-scheme:dark)
// html.skin-theme-clientpref-os .da-dialog
mw.util.addCSS(`
/* ── Token: light mode (default) ── */
.da-dialog {
--cdx-color-base: #202122;
--cdx-color-subtle: #54595d;
--cdx-color-placeholder: #72777d;
--cdx-color-inverted: #ffffff;
--cdx-color-progressive: #3366cc;
--cdx-color-progressive--hover: #2a4b8d;
--cdx-color-progressive--active: #2a4b8d;
--cdx-color-destructive: #d73333;
--cdx-color-destructive--hover: #b32424;
--cdx-background-color-base: #ffffff;
--cdx-background-color-neutral: #f8f9fa;
--cdx-background-color-neutral--hover: #eaecf0;
--cdx-background-color-destructive--subtle: #fee7e6;
--cdx-border-color-base: #a2a9b1;
--cdx-border-color-subtle: #eaecf0;
--cdx-border-color-progressive: #3366cc;
--cdx-font-family-sans: system-ui, -apple-system, sans-serif;
--cdx-font-size-small: 0.8125rem;
--cdx-font-size-medium: 0.875rem;
--cdx-font-size-large: 1rem;
--cdx-font-weight-bold: 700;
--cdx-line-height-medium: 1.5;
--cdx-border-radius-base: 2px;
--cdx-spacing-25: 2px;
--cdx-spacing-50: 4px;
--cdx-spacing-75: 6px;
--cdx-spacing-100: 8px;
--cdx-spacing-150: 12px;
--cdx-spacing-200: 16px;
--cdx-spacing-300: 24px;
}
/* ── Token: night mode paksa (Vector 2022 / Minerva) ── */
html.skin-theme-clientpref-night .da-dialog {
--cdx-color-base: #eaecf0;
--cdx-color-subtle: #a2a9b1;
--cdx-color-placeholder: #72777d;
--cdx-color-inverted: #101418;
--cdx-color-progressive: #6699ff;
--cdx-color-progressive--hover: #99b3ff;
--cdx-color-progressive--active: #99b3ff;
--cdx-color-destructive: #ff8080;
--cdx-color-destructive--hover: #ffb3b3;
--cdx-background-color-base: #101418;
--cdx-background-color-neutral: #1e2228;
--cdx-background-color-neutral--hover: #2a3040;
--cdx-background-color-destructive--subtle: #3a1010;
--cdx-border-color-base: #54595d;
--cdx-border-color-subtle: #2a3040;
--cdx-border-color-progressive: #6699ff;
}
/* ── Token: night mode otomatis (ikut OS) ── */
@media screen and (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os .da-dialog {
--cdx-color-base: #eaecf0;
--cdx-color-subtle: #a2a9b1;
--cdx-color-placeholder: #72777d;
--cdx-color-inverted: #101418;
--cdx-color-progressive: #6699ff;
--cdx-color-progressive--hover: #99b3ff;
--cdx-color-progressive--active: #99b3ff;
--cdx-color-destructive: #ff8080;
--cdx-color-destructive--hover: #ffb3b3;
--cdx-background-color-base: #101418;
--cdx-background-color-neutral: #1e2228;
--cdx-background-color-neutral--hover: #2a3040;
--cdx-background-color-destructive--subtle: #3a1010;
--cdx-border-color-base: #54595d;
--cdx-border-color-subtle: #2a3040;
--cdx-border-color-progressive: #6699ff;
}
}
/* ── Overlay ── */
.da-overlay {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.65);
z-index: 100000;
display: flex;
align-items: center;
justify-content: center;
padding: var(--cdx-spacing-150);
animation: da-fadein .15s ease-out;
}
/* ── Dialog — mengikuti pola cdx-dialog ── */
.da-dialog {
background: var(--cdx-background-color-base);
color: var(--cdx-color-base);
border: 1px solid var(--cdx-border-color-base);
border-radius: var(--cdx-border-radius-base);
width: min(672px, 96%);
max-height: 88vh;
overflow: hidden;
display: flex;
flex-direction: column;
box-shadow: 0 2px 2px 0 rgba(0,0,0,.2), 0 0 2px 0 rgba(0,0,0,.1);
font-family: var(--cdx-font-family-sans);
font-size: var(--cdx-font-size-medium);
line-height: var(--cdx-line-height-medium);
animation: da-slidein .15s ease-out;
}
/* ── Header ── */
.da-dialog-header {
padding: var(--cdx-spacing-150) var(--cdx-spacing-200);
border-bottom: 1px solid var(--cdx-border-color-subtle);
background: var(--cdx-background-color-neutral);
font-size: var(--cdx-font-size-large);
font-weight: var(--cdx-font-weight-bold);
color: var(--cdx-color-base);
display: flex;
align-items: center;
gap: var(--cdx-spacing-100);
flex-shrink: 0;
}
/* ── Body ── */
.da-dialog-body {
padding: var(--cdx-spacing-200);
overflow-y: auto;
flex: 1;
color: var(--cdx-color-base);
}
/* ── Footer ── */
.da-dialog-footer {
padding: var(--cdx-spacing-150) var(--cdx-spacing-200);
border-top: 1px solid var(--cdx-border-color-subtle);
background: var(--cdx-background-color-neutral);
display: flex;
justify-content: flex-end;
gap: var(--cdx-spacing-100);
flex-shrink: 0;
}
/* ── Tombol — cdx-button ── */
.da-btn {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 32px;
padding: 5px var(--cdx-spacing-150);
border-radius: var(--cdx-border-radius-base);
font-family: var(--cdx-font-family-sans);
font-size: var(--cdx-font-size-medium);
font-weight: var(--cdx-font-weight-bold);
line-height: 1.4286rem;
cursor: pointer;
transition: background-color 100ms, color 100ms, border-color 100ms;
white-space: nowrap;
border: 1px solid transparent;
text-decoration: none;
}
.da-btn:focus-visible {
outline: 2px solid var(--cdx-color-progressive);
outline-offset: 2px;
}
.da-btn--normal {
background: var(--cdx-background-color-base);
color: var(--cdx-color-base);
border-color: var(--cdx-border-color-base);
}
.da-btn--normal:hover {
background: var(--cdx-background-color-neutral--hover);
border-color: var(--cdx-color-base);
}
.da-btn--progressive {
background: var(--cdx-color-progressive);
color: var(--cdx-color-inverted);
border-color: var(--cdx-color-progressive);
}
.da-btn--progressive:hover {
background: var(--cdx-color-progressive--hover);
border-color: var(--cdx-color-progressive--hover);
}
.da-btn--destructive {
background: var(--cdx-color-destructive);
color: var(--cdx-color-inverted);
border-color: var(--cdx-color-destructive);
}
.da-btn--destructive:hover {
background: var(--cdx-color-destructive--hover);
border-color: var(--cdx-color-destructive--hover);
}
/* ── Daftar utas ── */
.da-thread-list {
list-style: none;
margin: var(--cdx-spacing-100) 0;
padding: 0;
max-height: 320px;
overflow-y: auto;
border: 1px solid var(--cdx-border-color-subtle);
border-radius: var(--cdx-border-radius-base);
}
.da-thread-item {
display: flex;
align-items: flex-start;
gap: var(--cdx-spacing-100);
padding: var(--cdx-spacing-100) var(--cdx-spacing-150);
border-bottom: 1px solid var(--cdx-border-color-subtle);
transition: background 100ms;
}
.da-thread-item:last-child { border-bottom: none; }
.da-thread-item:hover { background: var(--cdx-background-color-neutral--hover); }
.da-thread-title {
font-weight: var(--cdx-font-weight-bold);
font-size: var(--cdx-font-size-medium);
color: var(--cdx-color-base);
}
.da-thread-meta {
font-size: var(--cdx-font-size-small);
color: var(--cdx-color-subtle);
margin-top: var(--cdx-spacing-25);
}
/* ── Badge — cdx-message status ── */
.da-badge {
display: inline-flex;
align-items: center;
background: var(--cdx-background-color-destructive--subtle);
color: var(--cdx-color-destructive);
border-radius: var(--cdx-border-radius-base);
padding: 0 var(--cdx-spacing-75);
font-size: var(--cdx-font-size-small);
font-weight: var(--cdx-font-weight-bold);
margin-left: var(--cdx-spacing-75);
vertical-align: middle;
line-height: 18px;
}
/* ── Kotak konfirmasi ── */
.da-confirm-box {
background: var(--cdx-background-color-neutral);
border: 1px solid var(--cdx-border-color-subtle);
border-left: 3px solid var(--cdx-color-progressive);
border-radius: var(--cdx-border-radius-base);
padding: var(--cdx-spacing-100) var(--cdx-spacing-150);
margin-bottom: var(--cdx-spacing-150);
}
.da-confirm-box strong {
display: block;
margin-bottom: var(--cdx-spacing-50);
font-weight: var(--cdx-font-weight-bold);
color: var(--cdx-color-base);
}
.da-confirm-meta {
font-size: var(--cdx-font-size-small);
color: var(--cdx-color-subtle);
margin: var(--cdx-spacing-50) 0 var(--cdx-spacing-100);
}
.da-archive-target {
font-size: var(--cdx-font-size-small);
color: var(--cdx-color-progressive);
word-break: break-all;
}
/* ── Progres & status kosong ── */
.da-progress {
font-size: var(--cdx-font-size-medium);
color: var(--cdx-color-subtle);
margin-top: var(--cdx-spacing-100);
min-height: 1.4em;
}
.da-empty {
text-align: center;
padding: var(--cdx-spacing-300) 0;
color: var(--cdx-color-placeholder);
font-size: var(--cdx-font-size-medium);
}
.da-hint {
font-size: var(--cdx-font-size-small);
color: var(--cdx-color-subtle);
margin: var(--cdx-spacing-75) 0 0;
}
/* ── Animasi ── */
@keyframes da-fadein {
from { opacity: 0; } to { opacity: 1; }
}
@keyframes da-slidein {
from { opacity: 0; transform: translateY(-6px); }
to { opacity: 1; transform: translateY(0); }
}
/* ── Tombol mengambang ── */
#da-float-btn {
position: fixed;
bottom: 130px;
right: 25px;
background: #3366cc;
color: #ffffff;
border: 1px solid #3366cc;
padding: 5px 12px;
border-radius: 2px;
cursor: pointer;
z-index: 99999;
font-family: system-ui, -apple-system, sans-serif;
font-size: 0.875rem;
font-weight: 700;
line-height: 1.4286rem;
box-shadow: 0 2px 2px 0 rgba(0,0,0,.2);
transition: background-color 100ms, border-color 100ms;
}
#da-float-btn:hover {
background: #2a4b8d;
border-color: #2a4b8d;
}
#da-float-btn:focus-visible {
outline: 2px solid #3366cc;
outline-offset: 2px;
}
`);
// ── Utilitas bersama ──────────────────────────────────────────────────
/**
* Hitung selisih bulan antara dua Date.
* @param {Date} dari
* @param {Date} ke
* @returns {number}
*/
function selisihBulan(dari, ke) {
return (ke.getFullYear() - dari.getFullYear()) * 12
+ (ke.getMonth() - dari.getMonth());
}
/**
* Tampilkan notifikasi MediaWiki.
* @param {string} msg
* @param {'info'|'warn'|'error'} type
*/
function notify(msg, type) {
type = type || 'info';
if (mw.notify) {
mw.notify(msg, { type: type });
} else {
console.log('[DiscussionArchiver]', msg);
}
}
// ── UI ────────────────────────────────────────────────────────────────
/**
* Buat dialog modal.
* @param {string} titleHtml
* @param {string} bodyHtml
* @returns {{ overlay, dialog, body, footer }}
*/
function createDialog(titleHtml, bodyHtml) {
var overlay = document.createElement('div');
overlay.className = 'da-overlay';
var dialog = document.createElement('div');
dialog.className = 'da-dialog';
dialog.setAttribute('role', 'dialog');
dialog.setAttribute('aria-modal', 'true');
dialog.innerHTML =
'<div class="da-dialog-header">\uD83D\uDCE6 ' + titleHtml + '</div>' +
'<div class="da-dialog-body">' + bodyHtml + '</div>' +
'<div class="da-dialog-footer"></div>';
overlay.appendChild(dialog);
overlay.addEventListener('click', function (e) {
if (e.target === overlay) overlay.remove();
});
document.body.appendChild(overlay);
return {
overlay: overlay,
dialog: dialog,
body: dialog.querySelector('.da-dialog-body'),
footer: dialog.querySelector('.da-dialog-footer')
};
}
/**
* Tambahkan tombol ke footer dialog.
* @param {HTMLElement} footer
* @param {string} label
* @param {'normal'|'progressive'|'destructive'} weight
* @param {Function} onClick
* @returns {HTMLButtonElement}
*/
function addBtn(footer, label, weight, onClick) {
var btn = document.createElement('button');
btn.className = 'da-btn da-btn--' + weight;
btn.textContent = label;
btn.addEventListener('click', onClick);
footer.appendChild(btn);
return btn;
}
// ── Logika bersama ────────────────────────────────────────────────────
/**
* Parse wikitext menjadi array utas level-2.
* @param {string} wikitext
* @returns {Array<{title:string, content:string, start:number, end:number}>}
*/
function parseThreads(wikitext) {
var headerRe = /^==\s*([^=\n][^\n]*?)\s*==\s*$/gm;
var positions = [];
var m;
while ((m = headerRe.exec(wikitext)) !== null) {
positions.push({ title: m[1].trim(), start: m.index });
}
positions.push({ title: null, start: wikitext.length });
var threads = [];
for (var i = 0; i < positions.length - 1; i++) {
var start = positions[i].start;
var end = positions[i + 1].start;
threads.push({
title: positions[i].title,
content: wikitext.substring(start, end),
start: start,
end: end
});
}
return threads;
}
/**
* Konfirmasi pengarsipan per utas, satu per satu.
* Mengembalikan Promise yang resolve ke array utas yang disetujui.
*
* @param {Array} threads - Utas yang perlu dikonfirmasi
* @param {Object} cfg - Konfigurasi wiki (lihat init())
* @returns {Promise<Array>}
*/
function confirmPerThread(threads, cfg) {
return new Promise(function (resolve) {
var approved = [];
var idx = 0;
function showNext() {
if (idx >= threads.length) {
resolve(approved);
return;
}
var t = threads[idx];
var ts = cfg.getLatestTimestamp(t.content);
var resolved = cfg.isResolved ? cfg.isResolved(t.content) : false;
var usia = ts ? selisihBulan(ts, new Date()) : (resolved ? 'resolved' : '?');
var tsTxt = ts
? cfg.formatTanggal(ts)
: (resolved ? 'Terdeteksi: {{section resolved}}' : 'Tidak terdeteksi');
var tgtTitle = cfg.getArchiveTitle(t);
var ui = createDialog(
'Konfirmasi Arsip Utas (' + (idx + 1) + '/' + threads.length + ')',
'<div class="da-confirm-box">' +
'<strong>\uD83D\uDCC4 ' + mw.html.escape(t.title) + '</strong>' +
'<div class="da-confirm-meta">' +
'Komentar terakhir: <b>' + tsTxt + '</b>' +
'<span class="da-badge">~' + usia + ' bulan lalu</span>' +
'</div>' +
'<div class="da-archive-target">\u2192 Akan diarsipkan ke: <b>' +
mw.html.escape(tgtTitle) + '</b></div>' +
'</div>' +
'<p class="da-hint">Klik <b>Lewati</b> untuk melewati utas ini tanpa mengarsipkan.</p>'
);
addBtn(ui.footer, 'Lewati', 'normal', function () {
ui.overlay.remove();
idx++;
showNext();
});
addBtn(ui.footer, 'Arsipkan', 'progressive', function () {
approved.push(t);
ui.overlay.remove();
idx++;
showNext();
});
}
showNext();
});
}
/**
* Hapus utas dari halaman asal, lalu simpan ke halaman arsip yang sesuai.
*
* @param {Array} threadsToArchive - Utas yang sudah disetujui
* @param {Object} cfg - Konfigurasi wiki
* @param {mw.Api} api
* @param {string} page - Nama halaman asal (wgPageName)
* @returns {Promise<{archivedCount:number, archiveTitles:string[]}>}
*/
async function doArchive(threadsToArchive, cfg, api, page) {
// Ambil ulang wikitext terbaru agar tidak bentrok dengan edit lain
var res = await api.get({
action: 'query',
prop: 'revisions',
rvprop: ['content', 'timestamp'],
titles: page,
formatversion: 2
});
var pageData = res.query.pages[0];
var text = pageData.revisions[0].content;
var baseTimestamp = pageData.revisions[0].timestamp;
// Hapus setiap utas dari teks asal
for (var i = 0; i < threadsToArchive.length; i++) {
var escaped = threadsToArchive[i].content.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
text = text.replace(new RegExp(escaped), '');
}
text = text.replace(/\n{3,}/g, '\n\n').trim();
// Kelompokkan utas berdasarkan halaman arsip tujuannya
var groupMap = {};
for (var j = 0; j < threadsToArchive.length; j++) {
var t = threadsToArchive[j];
var archiveTitle = cfg.getArchiveTitle(t);
if (!groupMap[archiveTitle]) groupMap[archiveTitle] = [];
groupMap[archiveTitle].push(t);
}
var archiveTitles = Object.keys(groupMap);
var sourceTitle = page.replace(/_/g, ' ');
var archiveList = archiveTitles.map(function (t) { return '[[' + t + ']]'; }).join(', ');
// Simpan halaman asal
await api.postWithToken('csrf', {
action: 'edit',
title: page,
text: text,
summary: 'Mengarsipkan ' + threadsToArchive.length + ' utas tidak aktif ke ' + archiveList,
basetimestamp: baseTimestamp
});
// Simpan setiap halaman arsip
for (var archiveTitle in groupMap) {
var threads = groupMap[archiveTitle];
var arsRes = await api.get({
action: 'query',
prop: 'revisions',
rvprop: 'content',
titles: archiveTitle,
formatversion: 2
});
var arsPage = arsRes.query.pages[0];
var arsText = (arsPage.revisions && arsPage.revisions[0].content) || '';
if (!arsPage.revisions) {
arsText = cfg.archiveHeader(sourceTitle, archiveTitle);
}
var newBlocks = threads.map(function (t) { return t.content.trim(); }).join('\n\n');
arsText = arsText.trim() + '\n\n' + newBlocks + '\n';
await api.postWithToken('csrf', {
action: 'edit',
title: archiveTitle,
text: arsText.trim(),
summary: 'Menambahkan ' + threads.length + ' utas dari [[' + sourceTitle + ']]'
});
}
return { archivedCount: threadsToArchive.length, archiveTitles: archiveTitles };
}
// ── Alur utama ────────────────────────────────────────────────────────
/**
* Jalankan alur pengarsipan lengkap.
*
* @param {Object} cfg - Konfigurasi wiki (lihat init())
* @param {mw.Api} api
* @param {string} page - wgPageName
*/
async function runArchiver(cfg, api, page) {
// 1. Ambil wikitext
var data;
try {
data = await api.get({
action: 'query',
prop: 'revisions',
rvprop: 'content',
titles: page,
formatversion: 2
});
} catch (e) {
notify('\u26A0\uFE0F Gagal memuat isi halaman.', 'error');
return;
}
var wikitext = (
data.query.pages[0] &&
data.query.pages[0].revisions &&
data.query.pages[0].revisions[0] &&
data.query.pages[0].revisions[0].content
) || '';
if (!wikitext) {
notify('\u26A0\uFE0F Halaman kosong atau gagal dimuat.', 'warn');
return;
}
// 2. Parse utas level-2
var allThreads = parseThreads(wikitext);
if (!allThreads.length) {
notify('\u2139\uFE0F Tidak ditemukan utas level-2 di halaman ini.', 'info');
return;
}
// 3. Filter utas tidak aktif
var now = new Date();
var staleThreads = allThreads.filter(function (t) {
var ts = cfg.getLatestTimestamp(t.content);
var resolved = cfg.isResolved ? cfg.isResolved(t.content) : false;
if (resolved) return true;
if (!ts) return false;
return selisihBulan(ts, now) >= cfg.staleMonths;
});
// 4. Tidak ada yang kedaluwarsa
if (!staleThreads.length) {
var ui0 = createDialog(
'Pengarsip Diskusi \u2014 Tidak Ada Utas Kedaluwarsa',
'<div class="da-empty">' +
'\u2705 Semua utas masih aktif (komentar terakhir < ' + cfg.staleMonths + ' bulan).' +
(cfg.isResolved ? ' Tidak ada templat {{section resolved}}.' : '') +
'<br>Tidak ada yang perlu diarsipkan saat ini.</div>'
);
addBtn(ui0.footer, 'Tutup', 'normal', function () { ui0.overlay.remove(); });
return;
}
// 5. Ringkasan sebelum konfirmasi per utas
var proceed = await new Promise(function (resolve) {
var listItems = staleThreads.map(function (t) {
var ts = cfg.getLatestTimestamp(t.content);
var resolved = cfg.isResolved ? cfg.isResolved(t.content) : false;
var usia = ts ? selisihBulan(ts, now) : (resolved ? 'resolved' : '?');
var tsTxt = ts ? cfg.formatTanggal(ts) : (resolved ? 'Terdeteksi: {{section resolved}}' : '\u2014');
var tgtTitle = cfg.getArchiveTitle(t);
return '<li class="da-thread-item" style="cursor:default">' +
'<div>' +
'<div class="da-thread-title">' + mw.html.escape(t.title) + '</div>' +
'<div class="da-thread-meta">' +
'Komentar terakhir: ' + tsTxt +
'<span class="da-badge">~' + usia + ' bln</span><br>' +
'<span style="color:var(--cdx-color-progressive)">\u2192 ' +
mw.html.escape(tgtTitle) + '</span>' +
'</div>' +
'</div>' +
'</li>';
}).join('');
var resolvedNote = cfg.isResolved
? ' atau mengandung templat <code>{{section resolved}}</code>'
: '';
var ui = createDialog(
'Pengarsip Diskusi \u2014 ' + staleThreads.length + ' Utas Tidak Aktif',
'<p style="margin:0 0 8px;font-size:var(--cdx-font-size-medium);color:var(--cdx-color-base)">' +
'Utas berikut memiliki komentar terakhir <b>\u2265 ' + cfg.staleMonths + ' bulan</b>' +
' yang lalu' + resolvedNote + '.' +
' Klik <b>Lanjut</b> untuk mengkonfirmasi setiap utas satu per satu.' +
'</p>' +
'<ul class="da-thread-list">' + listItems + '</ul>'
);
addBtn(ui.footer, 'Batal', 'destructive', function () {
ui.overlay.remove();
resolve(false);
});
addBtn(ui.footer, 'Lanjut \u2192', 'progressive', function () {
ui.overlay.remove();
resolve(true);
});
});
if (!proceed) return;
// 6. Konfirmasi per utas
var approved = await confirmPerThread(staleThreads, cfg);
if (!approved.length) {
notify('\u2139\uFE0F Tidak ada utas yang dipilih untuk diarsipkan.', 'info');
return;
}
// 7. Dialog progres + eksekusi
var targetPages = approved
.map(function (t) { return cfg.getArchiveTitle(t); })
.filter(function (v, i, a) { return a.indexOf(v) === i; });
var uiProg = createDialog(
'Mengarsipkan ' + approved.length + ' Utas\u2026',
'<div class="da-progress" id="da-prog-msg">\u23F3 Memproses\u2026</div>'
);
var progMsg = document.getElementById('da-prog-msg');
try {
progMsg.textContent = '\u23F3 Menyimpan ke ' + targetPages.join(', ') + '\u2026';
var result = await doArchive(approved, cfg, api, page);
var links = result.archiveTitles.map(function (t) {
return '<a href="/wiki/' + encodeURIComponent(t.replace(/ /g, '_')) +
'" target="_blank" style="color:var(--cdx-color-progressive)">' +
mw.html.escape(t) + '</a>';
}).join(', ');
progMsg.innerHTML = '\u2705 <b>' + result.archivedCount + ' utas</b> berhasil diarsipkan ke: ' + links + '.';
addBtn(uiProg.footer, 'Tutup & Muat Ulang', 'progressive', function () {
uiProg.overlay.remove();
location.reload();
});
} catch (e) {
console.error('[DiscussionArchiver] Error:', e);
progMsg.textContent = '\u274C Gagal mengarsipkan. Lihat konsol untuk detail.';
addBtn(uiProg.footer, 'Tutup', 'destructive', function () { uiProg.overlay.remove(); });
}
}
// ── API publik ────────────────────────────────────────────────────────
/**
* Inisialisasi gadget untuk satu wiki.
*
* @param {Object} cfg - Konfigurasi wiki dengan properti berikut:
*
* === Guard ===
* cfg.isAllowedPage(mwConfig)
* → Function(mwConfig): boolean
* Kembalikan true jika gadget boleh berjalan di halaman ini.
*
* === Timestamp ===
* cfg.getLatestTimestamp(text)
* → Function(string): Date|null
* Cari dan kembalikan timestamp terbaru dalam blok wikitext.
*
* cfg.formatTanggal(date)
* → Function(Date): string
* Format Date ke string yang ditampilkan di UI.
*
* === Arsip ===
* cfg.getArchiveTitle(thread)
* → Function({content:string, title:string, ...}): string
* Kembalikan judul halaman arsip untuk sebuah utas.
*
* cfg.archiveHeader(sourceTitle, archiveTitle)
* → Function(string, string): string
* Kembalikan konten awal halaman arsip baru (jika belum ada).
*
* === Opsional ===
* cfg.staleMonths {number} - Ambang batas bulan tidak aktif (default: 2)
*
* cfg.isResolved(text)
* → Function(string): boolean
* Deteksi apakah utas punya tanda "resolved" (misal templat).
* Jika tidak didefinisikan, fitur ini tidak aktif.
*
* cfg.floatBtnTitle {string} - Tooltip tombol mengambang (opsional)
*/
function init(cfg) {
var mwCfg = mw.config.get();
var api = new mw.Api();
var page = mwCfg.wgPageName;
// Validasi konfigurasi minimum
if (typeof cfg.isAllowedPage !== 'function') {
console.error('[DiscussionArchiver] cfg.isAllowedPage harus berupa fungsi.');
return;
}
if (typeof cfg.getLatestTimestamp !== 'function') {
console.error('[DiscussionArchiver] cfg.getLatestTimestamp harus berupa fungsi.');
return;
}
if (typeof cfg.formatTanggal !== 'function') {
console.error('[DiscussionArchiver] cfg.formatTanggal harus berupa fungsi.');
return;
}
if (typeof cfg.getArchiveTitle !== 'function') {
console.error('[DiscussionArchiver] cfg.getArchiveTitle harus berupa fungsi.');
return;
}
if (typeof cfg.archiveHeader !== 'function') {
console.error('[DiscussionArchiver] cfg.archiveHeader harus berupa fungsi.');
return;
}
cfg.staleMonths = cfg.staleMonths || 2;
// Guard: izin akses sysop
var groups = mwCfg.wgUserGroups || [];
if (!groups.includes('sysop')) return;
// Guard: kondisi spesifik wiki
if (!cfg.isAllowedPage(mwCfg)) return;
// Guard: jangan jalan di diff / history / revisi lama
if (
mwCfg.wgAction === 'history' ||
mwCfg.wgDiffNewId ||
mwCfg.wgDiffOldId ||
mwCfg.wgCurRevisionId !== mwCfg.wgRevisionId
) return;
// Tombol mengambang
var floatBtn = document.createElement('button');
floatBtn.id = 'da-float-btn';
floatBtn.textContent = '\uD83D\uDCE6 Arsipkan Diskusi';
floatBtn.title = cfg.floatBtnTitle || 'DiscussionArchiver — Arsipkan utas tidak aktif';
floatBtn.addEventListener('click', function () { runArchiver(cfg, api, page); });
document.body.appendChild(floatBtn);
}
// ── Ekspor ────────────────────────────────────────────────────────────
window.DiscussionArchiverCore = { init: init };
})();
// </nowiki>
1lsztshzzcqzzwbrwetgdjtuokphdib
Indeks:057a Hawu Savu.djvu
102
104859
296748
2026-05-25T04:25:35Z
Thersetya2021
15831
←Membuat halaman berisi ''
296748
proofread-index
text/x-wiki
{{:MediaWiki:Proofreadpage_index_template
|Type=book
|wikidata_item=
|Title=057a Hawu Savu
|Subtitle=
|Language=id
|Volume=
|Edition=
|Author=Karel Frederik Holle
|Co-author1=
|Co-author2=
|Co-author3=
|Translator=
|Co-translator1=
|Co-translator2=
|Editor=Stokhof, W. A. L.
|Co-editor1=
|Co-editor2=
|Illustrator=
|Publisher=
|Address=
|Printer=
|Year=1983
|Key=
|ISBN=
|Source=djvu
|Image=1
|Progress=X
|Pages=<pagelist />
|Volumes=
|Remarks=
|Notes=
|Header=
|Footer=
}}
a6grl7efx1cojffwqa7hfftndu25nel
Halaman:057a Hawu Savu.djvu/3
104
104860
296749
2026-05-25T04:34:57Z
Thersetya2021
15831
/* Telah diuji baca */
296749
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Thersetya2021" /></noinclude>'''2. HAWU/SAVU LIST'''
{{multicol}}
1. Ngīoe<br>
2. Kǎtoe<br>
3. Tàngāmādā<br>
4. Tàngārē<br>
5. Wŏkōlō<br>
6. Roekǎtoe<br>
8. Ketàdoe<br>
9. Wōdīloe<br>
11. Nāmādā<br>
15. Roe'kewoekoe<br>
17. Ei nāmādā<br>
18. Hèwǎngā<br>
21. Kābāràngā<br>
22. Oebā<br>
25. Koerī njŏrŏ<br>
27. Roe'oeba<br>
28. Roewī<br>
29. Pǎgāwī<br>
30. Roewī<br>
31. We'ŏ<br>
32. Dārā ngārā<br>
33. Ngoetoe<br>
34. Rī'è<br>
35. Hèngīdī<br>
37. Lādā görŏ<br>
38. Lākŏkŏ<br>
41. Hoehoe<br>
42. Hoehoe<br>
46. Ei' hoehoe<br>
47. Ei' hoehoe<br>
50. Roel loe'ā<br>
52. Oehoe<br>
53. Kèbǎkè<br>
54. Dèloe<br>
56. Ādě<br>
61. Mādā'àhoe<br>
62. Dārī'àhoe<br>
63. Kedjoengā<br>
68. Īhī wōrē<br>
69. Wōrē<br>
70. Roei roepè heroe
{{multicol-break}}
72. Po'è<br>
73. Dē'i<br>
75. Pàhoe<br>
77. Woetā<br>
78. Oe'ī<br>
82. Penoro<br>
83. Penoro<br>
84. Roebèbŏ<br>
86. Kabādjelā<br>
88. Wōpǎkāla'e<br>
89. Wōdéhŏ<br>
90. Roetoegā <Roetoegà ?><br>
91. Roetoe<br>
93. Děloe manoe<br>
94. Wōpākāla'e<br>
95. Roekè' mǎkoe<br>
97. Roe'ai<br>
99. Dārā bŏrŏ<br>
100. Wōhī'oe<br>
102. Dārā wōlā'àbā<br>
105. Kòlòkoe'oe<br>
107. Koe'oe<br>
108. Ai'a'e<br>
109. Ai djoedjoe<br>
110. Ai tèlōrā<br>
111. Hŏlŏ ai<br>
112. Ai'īkī<br>
115. Roei<br>
116. Rā<br>
117. Ihī<br>
121. Koerī<br>
122/<br>
123. Roengioe<br>
124. Eē kèbàhoe<br>
125. Īloe<br>
127. Hèngā<br>
128. Ngā'ā<br>
129. Měngāngā<br>
130. Ngīnoe<br>
132. Haihŏhŏ<br>
133. Bàhoe
{{multicol-end}}<noinclude></noinclude>
fmsx6lxs6a3fgb24ncihzv0q7k24y7j
Indeks:057b Sumba.djvu
102
104861
296750
2026-05-25T07:08:00Z
Thersetya2021
15831
←Membuat halaman berisi ''
296750
proofread-index
text/x-wiki
{{:MediaWiki:Proofreadpage_index_template
|Type=book
|wikidata_item=
|Title=057b Sumba
|Subtitle=
|Language=id
|Volume=
|Edition=
|Author=Karel Frederik Holle
|Co-author1=
|Co-author2=
|Co-author3=
|Translator=
|Co-translator1=
|Co-translator2=
|Editor=Stokhof, W. A. L.
|Co-editor1=
|Co-editor2=
|Illustrator=
|Publisher=
|Address=
|Printer=
|Year=1983
|Key=
|ISBN=
|Source=djvu
|Image=1
|Progress=X
|Pages=<pagelist />
|Volumes=
|Remarks=
|Notes=
|Header=
|Footer=
}}
8tnbgqccu579x78ntt4v8cxergpufnr
Halaman:057a Hawu Savu.djvu/4
104
104862
296751
2026-05-25T07:20:18Z
Thersetya2021
15831
/* Telah diuji baca */
296751
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Thersetya2021" /></noinclude>{{multicol}}
137. Dèlā<br>
138. Bǎdjī<br>
139. Tānī<br>
140. Nī<br>
144. Tātītoe<br>
145. Tākàkò<br>
146. Pèkèbelā'ǎnī<br>
147. Pèhègoeroe'ǎnī<br>
148. Tābǎdjī <Tǎbǎdjī ?><br>
149. Mèdjèdī<br>
150. Mèdjèdī làkoe'al<br>
151. Mèdjèdī làkoe roetoe<br>
152. Mèdjèdī hèboegoe<br>
153. Nàngī<br>
154. Djī'oe'ei<br>
156. Kèwèlo wè'Ŏ, pèkàkālī <pèkàkā lī ?><br>
158. Lī<br>
160. <1><br>
161. Tāmārī<br>
163. Tātàngī<br>
165. Mārī pēhègī ngoetoe<br>
166. Hèngā<br>
167. Pènjī'oe Iloe<br>
169. Tākèhoe<br>
170. Tāmē'ā<br>
176. Měgau<br>
177. Pengǎtoe<br>
182. Moerī<br>
183. Mādě<br>
184. Mādè<br>
185. Mādè<br>
188. Dou dō mādë<br>
191. Rà'è darè<br>
192. Pètàbŏ<br>
193. Tāòhā<br>
194. Ōhā<br>
196. Nŏ'è<br>
197. WIhoe<br>
198. Belò īhī<br>
199. Pèdā<br>
200. Tāpèdā
{{multicol-break}}
201. Tāpèdā<br>
202. Ihī dō roei><br>
203. Wīhoe<br>
205. Emŏ<br>
207. Pèdā deloe<br>
209. Poepoe dē'ī<br>
210. Lǎkàtī<br>
214. Wōgoetè<br>
219. Kèbŏ'ŏ kǎtoe<br>
220. Nòhò<br>
222. Mē'a<br>
223. Mèdi<br>
224. Kèpàngī<br>
225. Dōkai<br>
227. Dōbàngā<br>
228. Hō'è<br>
229. Wōkè'ŏ<br>
231. Hèlē'ŏ pètīgi<br>
232. Tapèī'jè<br>
233/<br>
234. Roe'adjoe<br>
236-<br>
238. Dou<br>
239. Ngārā<br>
241. Mōmŏnè<br>
242. Mōbǎnī<br>
243. Mŏnè<br>
244. Mŏnè<br>
245. Mōbǎnī<br>
246. Rēnā<br>
248. Dōngǎroe<br>
250. Ānāmōmonè<br>
252. Ānā mōbǎnī<br>
255. Āmā<br>
256. Īnā<br>
257. Anā mōnī'a'a<br>
258. Anā mōnī'ari<br>
257/<br>
258. Ānā<br>
261. Ānā mōmŏnè<br>
262. Ānā mōbǎnī<br>
263. Àpoe mŏnè<br>
264. Àpoe bǎnī
{{multicol-end}}<noinclude></noinclude>
cgqgm3szf8gwn4ibqo14z9x5irxmvtj
Halaman:057a Hawu Savu.djvu/5
104
104863
296752
2026-05-25T07:30:39Z
Thersetya2021
15831
/* Telah diuji baca */
296752
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Thersetya2021" /></noinclude>{{multicol}}
265. Àpoe kèdjākoe<br>
266. Àpoe noehī<br>
267. Medā'ā doekoe<br>
268. Nāmŏnè<br>
269. Nawènī<br>
270. Ā'ā mŏnè<br>
271. Ā'ā bằng<br>
272. Ārī mŏnè<br>
273. Ārī bànī<br>
274. Àpoe mǎtānā<br>
275/<br>
276. Mōkèmŏnè<br>
277/<br>
279. Mā'e<br>
278/<br>
280. Mā'īkī<br>
283/<br>
285. Nā'e<br>
284/<br>
286. Nākoe'è<br>
287-<br>
290/<br>
295. Ā'ā, ārī<br>
291-<br>
294/<br>
296. Nawǎnī<br>
299. Ānā<br>
300. Ānā<br>
302. Ānā<br>
303. Ānā<br>
304. Īnā, Āmā<br>
305. Ānā pèloedjā<br>
310. Nāmŏnè<br>
311-<br>
314. Nāwǎnī<br>
315. Pèwīnī<br>
317. Dōpāmoe<br>
318. Dōpāmoe<br>
325. Rae wonaiki<br>
326. Pèrēdā<br>
327. Rae<br>
330. Oedoe<br>
331. Douměnīdoe<br>
337. Wordwoe Dē'ō dō hèwàlā<br>
339. Hèmàngā
{{multicol-break}}
341. Wàngò djoe <2><br>
343/<br>
344. Hèmàngā<br>
345. Moerī Dē'ō <3><br>
346. Eigàmā<br>
347. Mèdjoerā<br>
353. Hoerī<br>
354. Hoerī<br>
355. Boekoe<br>
356. Pèdiri<br>
357. Lī pědīrī<br>
358. Lī pātò<br>
359. Āloe<br>
360. Līroe<br>
361. Rā'ŏ ai<br>
365. Dou īhī rà'è<br>
366. Tāwèkā rā'ě<br>
367. Woi'je<br>
368. Pāhàlā<br>
369. Dō rā'ī<br>
370. Dō pānā<br>
371. Dē'ō rā'è <4><br>
374. Àmoe arēdjā<br>
375. Dō pānā<br>
376. Ēra mě mědjèdi<br>
378. Doe'ae<br>
382. Dō pānā<br>
389. Dŏkěpai<br>
390. Dau pèmoehoe<br>
391. Mǎngī<br>
392. Hīlākā<br>
393. Mōnīāhā<br>
394. Dō ǎnoe<br>
396. Hādā<br>
397. Dou dō hàlā<br>
398. Wolo<br>
399. Wolo<br>
400. Dēdǎ<br>
401. Hàkàhī<br>
402. Kǎtoe<br>
403. Dō ǎnoe<br>
404. Tao le'o
{{multicol-end}}<noinclude></noinclude>
ghngsy2lfy3k5u54i75x3aq5lb7rbb4
Halaman:057a Hawu Savu.djvu/16
104
104864
296753
2026-05-25T07:55:09Z
Thersetya2021
15831
/* Tanpa teks */
296753
proofread-page
text/x-wiki
<noinclude><pagequality level="0" user="Thersetya2021" /></noinclude><noinclude></noinclude>
30jx1lygruprj5alacv96idkwiji99b
Halaman:057a Hawu Savu.djvu/15
104
104865
296754
2026-05-25T07:58:53Z
Thersetya2021
15831
/* Telah diuji baca */
296754
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Thersetya2021" /></noinclude># <li value="16"> sun above the horizon = Dīdā<br>
# clouds<br>
# small (trader, shop)<br>
# Dārè = to run aground (ship); Tābārī = to be shipwrecked<br>
# Dou do wōkěroe = dwarf<br>wōkĕroe = dwarfish<br>
# Dokai, dō boekoe, dō kèlàgi<br>
# ami, měnèngi, kěrei <kĕrai ?><br>
# 9 a.m. : Nětoe lŏdŏ demoe<br>noon : Netoe lŏdŏ mira<br>
# midnight: Télora meddha<br>
'''4. ADDITIONAL DATA'''
# tubers : wò'àdjoe<br>
# palm tree : Kèpoewè doe'è<br>
# bag for rice : Hòkā<br>
# pineapple : Nànà<br>
# war chief : Kǎtoe moehoe<br><noinclude></noinclude>
4og9x69kvsy48ool9mnctl69p6sr2na
Halaman:057a Hawu Savu.djvu/14
104
104866
296755
2026-05-25T08:05:44Z
Thersetya2021
15831
/* Telah diuji baca */
296755
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Thersetya2021" /></noinclude>'''3. NOTES'''
# Pěkŏ, pèkā, pètòdā<br>
# An evil spirit looks like a human being but is as tall and thin as a sugar palm. When he encounters a human being he stabs him/her to death ({{...|5}}) <information relating to the Sumba list is left out here>.<br>
#The Supreme Being of the Hawunese is the creator of all things. He is the source of life; therefore his name is Moeri (life). He has no definite shape but is thought to have human senses. He does not take notice of the actions of his human creations, so he does not punish nor does he give rewards after death. Now and then he makes his wishes known to the Lord of the Land tuan tanah who has to pass them on to the people ({{...|5}}).<br>
# The Hawunese priest makes the wishes of the gods known. He stands
in rank between them and the king. He guards the oral tradition,
decides when the time for planting has come, determines how people
are to be punished. He is dressed like an ordinary man but is
maintained by the people ({{...|5}}).<br>
# a seat<br>
# ladle<br>
# Hopè : large; Hŏdi : small<br>
# als mand: as basket < (used) as (a) basket? like a basket?<br> Dutch = original als mand><br>
#Hedai dō māmī = cooked<br>
# betelnut : kē ēlā<br>
# calf ānā hàpī<br>foal : ānā djārā<br>chick : ānā mānoe<br>
# Rōmā, tèwōrā, dènò<br>
# red ant<br>
# ola, dō bòhò, kètāroe měngĕroe, kètāroe awoe<br>
#
{|
|January : Hàngā dīmoe||July Kélila wādoe
|-
|February: Dābā ěkī||August: Toenoe mānoe
|-
|March: Dābā a'e||September : Pěgàroe <Rěgàroe ?>
|-
|April: Bàngà Līwoe <Bàngā Līwoe ?>|| October : Köö keboei
|-
|May: a'ä||November: Naiki keboei
|-
|June : arī||December : wilā kolo
|}<noinclude></noinclude>
hoo4lgsl67pidjp4m7w7mgtq13nmi1b
296756
296755
2026-05-25T08:09:03Z
Thersetya2021
15831
296756
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Thersetya2021" /></noinclude>'''3. NOTES'''
# Pěkŏ, pèkā, pètòdā<br>
# An evil spirit looks like a human being but is as tall and thin as a sugar palm. When he encounters a human being he stabs him/her to death ({{...|5}}) <information relating to the Sumba list is left out here>.<br>
#The Supreme Being of the Hawunese is the creator of all things. He is the source of life; therefore his name is Moeri (life). He has no definite shape but is thought to have human senses. He does not take notice of the actions of his human creations, so he does not punish nor does he give rewards after death. Now and then he makes his wishes known to the Lord of the Land tuan tanah who has to pass them on to the people ({{...|5}}).<br>
# The Hawunese priest makes the wishes of the gods known. He stands in rank between them and the king. He guards the oral tradition, decides when the time for planting has come, determines how people are to be punished. He is dressed like an ordinary man but is maintained by the people ({{...|5}}).<br>
# a seat<br>
# ladle<br>
# Hopè : large; Hŏdi : small<br>
# als mand: as basket < (used) as (a) basket? like a basket?<br> Dutch = original als mand><br>
#Hedai dō māmī = cooked<br>
# betelnut : kē ēlā<br>
# calf ānā hàpī<br>foal : ānā djārā<br>chick : ānā mānoe<br>
# Rōmā, tèwōrā, dènò<br>
# red ant<br>
# ola, dō bòhò, kètāroe měngĕroe, kètāroe awoe<br>
# January : Hàngā dīmoe{{gap}}{{gap}}July Kélila wādoe
<ol>
{|
|February: Dābā ěkī||August: Toenoe mānoe
|-
|March: Dābā a'e||September : Pěgàroe <Rěgàroe ?>
|-
|April: Bàngà Līwoe <Bàngā Līwoe ?>|| October : Köö keboei
|-
|May: a'ä||November: Naiki keboei
|-
|June : arī||December : wilā kolo
|}
</ol><noinclude></noinclude>
exxdftmm85vgzvt7s5wfeb1hi2m1tk4
Halaman:057a Hawu Savu.djvu/6
104
104867
296757
2026-05-25T08:23:28Z
Thersetya2021
15831
/* Telah diuji baca */
296757
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Thersetya2021" /></noinclude>{{multicol}}
410. Pèhègī<br>
411. Roekĕnānā<br>
412. Pèkèwakoe <Pèkèwàhoe ?><br>
413. Mètānā<br>
415. Kèngŏ<br>
416. Dōhoedā<br>
417. Dǎpě, lèdŏ<br>
418. Wòròwoe<br>
419. Kétǎdoe<br>
424. Nāmàngoe<br>
426. Tabè<br>
427. Tadoe<br>
428. Lèdŏ<br>
437. Amoe<br>
438. Àmoe lē'd<br>
439. Dènī àmoe<br>
441/<br>
442. Roe àmoe<br>
449. Oebā kèlai<br>
453. Lǎngā<br>
454. Lǎngā<br>
456/<br>
457. Kelàgā<br>
458/<br>
459. Dīdī<br>
461. Gĕrī<br>
462. Kèbī'è<br>
465. Erā bǎdjī<br>
467. Nèloe kèdakǎ<br>
468. Dāpī<br>
469. Nèloe<br>
470. Erā medjèdī <5><br>
472. Dāmoe<br>
473. Bǎdjā<br>
474. Rā'ò hògò ngā'ā<br>
475. Ai<br>
476. Kapoe<br>
477. Pèwe'd ai<br>
478. Pèmādě ai<br>
483. Āwoe<br>
484. Adjoe hogo ngā'ā<br>
485. Toenoe làpō<br>
496. Pamade làpō
{{multicol-break}}
487. Rō'ā měngĕroe<br>
489. Bāgō wō nā'īki<br>
493. Àroe bǎkī<br>
494. Àroe wōrai<br>
497. Pīrī<br>
498. Māgō<br>
499. Kābā ngīnoe ei<br>
501. Bàkī'oe<br>
502. Pīrī<br>
503. Pīrī mārā<br>
501-<br>
503. Bàkī'oe<br>
505. Toedī<br>
506. Wělā<br>
507. Djòbè<br>
510. Kābāhoeroe<br>
511. Hābā <6><br>
514. Hòpè, hŏdi <7><br>
515. Làpō<br>
516. Hoeboe Làpō<br>
517. Roehoeroe<br>
519. Kèpèpè <8><br>
520. Pètī<br>
522. Àroe<br>
524. Goehī<br>
525-<br>
527. Hògò<br>
528. Hāngī<br>
529. Kèpàhò<br>
530. Pàgà<br>
534. Ngā'ā<br>
535. Wōpèràgoe<br>
537. Roe'adjoe<br>
539. Hèdai dō mādā<br>
540. Hola do kèmàngoe<br>
539/<br>
540. Hèdai <9><br>
541. Nādoe'oe<br>
544. Lai loedoe<br>
545. Àrē dō māmī<br>
546. Àrè<br>
547. Kělai<br>
548. Lā <Là ?>
{{multicol-end}}<noinclude></noinclude>
47ckra5x5yg4c5cgl6wvza1518h553w
Halaman:057a Hawu Savu.djvu/7
104
104868
296758
2026-05-25T08:57:05Z
Thersetya2021
15831
/* Telah diuji baca */
296758
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Thersetya2021" /></noinclude>{{multicol}}
550. Ngàhoe<br>
551. Àroe<br>
555. Tāpotè<br>
560. Kokī<br>
561. Ei kāwō<br>
562. Wokèlai līnga madī<br>
563. Mèngànī<br>
565. Ei hīdjī<br>
567. Broek<br>
568. Kēbaai<br>
573. Ngoetoe hāmoe<br>
576. Tèroe'oe<br>
577/<br>
578. Dārī wǎkè<br>
579. Boekoe<br>
580. Lābè<br>
579-<br>
581. Dārī wǎke<br>
582. Kērǎboe<br>
583. Kērǎboe<br>
586. Hèlèdǎ<br>
589. Bělā tāmēnānoe<br>
590. Hoetěrā<br>
593. Mānè<br>
594. Adjoe mānè<br>
595. Hoe'è<br>
596. Pěhèdoe<br>
597. Měroe'oe<br>
594-<br>
597. Oerā ngapī<br>
600. Tā'anjoe<br>
601. Àpī dārī<br>
602. Dārī<br>
603. Loe'a wangoe<br>
605/<br>
604. Hàbī<br>
606. Wōkèpǎkǎ<br>
608. Wělā<br>
611. Kèpòkè<br>
612. Poepoe<br>
613. Kèlètī<br>
614. Dārī Kèlètī<br>
615. Ana Kèlèti
{{multicol-break}}
617. Tāmī<br>
618. Pàdjī<br>
620. Керǒ<br>
621. Awoe kèpǒ<br>
622. Wōānā kėpŏ<br>
623. Wŏbā<br>
624. Kělèkoe<br>
625. Tapemoehoe<br>
626. Pemoehoe<br>
627. Moehoe<br>
628. Wōrènā<br>
629. Rŏrŏkŏkŏ <Rŏrŏ kŏkŏ ?><br>
630. Pèī'jē<br>
631. Dārā rae<br>
634. Tawi'je ngioeno<br>
635. Tānārā<br>
636. Tahīdoe<br>
637. Dau pèpoe<br>
639. Tawī'je<br>
640. Hoehoe<br>
645. Àdjoe kèkoedjā<br>
649. Toedī kai<br>
650. Toedī kai<br>
651. Toetī gǎtoe ārè<br>
653. Dòkā<br>
654. Mā ārè<br>
655. Dòkā ārè<br>
656. Pěī'jě mā<br>
657. Roedjārā ei<br>
659. Lau<br>
662/<br>
663. Lībā<br>
664. Wīnī<br>
665. Hèla adjoe<br>
668. Wō'īhī<br>
669. Wōměngǎroe<br>
671. Gǎtoe<br>
672. Poe<br>
674. Těra djāwā<br>
677. kèboei<br>
678. kèboei<br>
679. Wodīmoe
{{multicol-end}}<noinclude></noinclude>
05t2x3p2jhln35kjj7q21yxqx0udibe
Halaman:057a Hawu Savu.djvu/8
104
104869
296759
2026-05-25T09:08:26Z
Thersetya2021
15831
/* Telah diuji baca */
296759
proofread-page
text/x-wiki
<noinclude><pagequality level="3" user="Thersetya2021" /></noinclude>{{multicol}}
681. Roenai<br>
682. Děboe<br>
683. Mānīlā<br>
685. Wōkèrěbŏ<br>
690. Wōhīlī<br>
691. Kèpoewè njī'oe<br>
692. Woe'è njī'oe<br>
691-<br>
693. Njī'oe<br>
697. Doe'è<br>
698. Ei dō pàdoe<br>
700. Ei dō nāhoe<br>
701. Dō nahoe, měgĕroe<br>
705. Wàngoe<br>
706. Kèwěroe<br>
708. Wōpau<br>
716. Wōmoe'oe<br>
717. Moe'oe àdoe<br>
720. Djĕroe nǎtà<br>
721. Wō djeroe wōrēnā<br>
722. Wō djeroe měnjīloe<br>
723. Kòpī<br>
724/<br>
725. Dau<br>
726. Gābi<br>
727. Kèbǒ<br>
728. Kēroegā<br>
729. Kèwoenjī<br>
731. Goei<br>
732. Kèlai woe<br>
734. Kèpoemè<br>
739/<br>
740. Kèlai<br>
742. Āmŏ wōhàroe<br>
742-<br>
744. Āmŏ<br>
746. Roe' àdjoe<br>
748. Koerī<br>
750. Eei<br>
751. Kèpàrè<br>
753. Kēnānā <10><br>
754. Wolòlò<br>
757. Kèlai tākoeboe
{{multicol-break}}
758. Wīlā<br>
759. Woe'è<br>
761. Koerī<br>
764. Ihī<br>
765. Hoebī<br>
766. Ei měnjī<br>
770. Djoe'oe<br>
771. Djoe'oe<br>
772. widoe<br>
774. Bada<br>
775. <11><br>
778. Roelai<br>
779. Roebèbò<br>
780. Koe'oe<br>
781. Koe'oe<br>
786. Roe'ǎlā<br>
787. Rou<br>
789. Njāboe<br>
790. Dèloe<br>
794. Wāwī<br>
797. Takèhoe<br>
798. Kī'ī djāwā<br>
800-<br>
802. Kèbau<br>
803. Hāpī rēnā<br>
804. Hapī mŏnè<br>
803/<br>
804. Hàpī<br>
805. Kèbè<br>
806. Takè'ōwā<br>
807. Djārā<br>
808. Pègè<br>
809. Roehā<br>
811. Ngākā<br>
812. Tābàdoe<br>
813. Me'ò<br>
814. Tākèmē'ò<br>
815. Mē'ò roebā<br>
816. Kèwoe<br>
818. Doedoe<br>
824. Kŏrŏ à'è<br>
825. Gàgā<br>
826. Mānoe
{{multicol-end}}<noinclude></noinclude>
ghzus7xb0dxg4jxgxaxtsizoketej09