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 &lt; 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 &lt; ' + 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