<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.smpyppksantodonboscofakfak.sch.id/index.php?action=history&amp;feed=atom&amp;title=Cara_buat_plugin_password_generator_dan_tokendi_moodle</id>
	<title>Cara buat plugin password generator dan tokendi moodle - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.smpyppksantodonboscofakfak.sch.id/index.php?action=history&amp;feed=atom&amp;title=Cara_buat_plugin_password_generator_dan_tokendi_moodle"/>
	<link rel="alternate" type="text/html" href="https://wiki.smpyppksantodonboscofakfak.sch.id/index.php?title=Cara_buat_plugin_password_generator_dan_tokendi_moodle&amp;action=history"/>
	<updated>2026-09-23T17:31:07Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.smpyppksantodonboscofakfak.sch.id/index.php?title=Cara_buat_plugin_password_generator_dan_tokendi_moodle&amp;diff=417&amp;oldid=prev</id>
		<title>Smpdbos: Replaced content with &quot; Link chatgptnya :  https://chatgpt.com/share/6a96e991-4624-83ec-9692-0bb50d5b71fc&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.smpyppksantodonboscofakfak.sch.id/index.php?title=Cara_buat_plugin_password_generator_dan_tokendi_moodle&amp;diff=417&amp;oldid=prev"/>
		<updated>2026-09-01T15:11:21Z</updated>

		<summary type="html">&lt;p&gt;Replaced content with &amp;quot; Link chatgptnya :  https://chatgpt.com/share/6a96e991-4624-83ec-9692-0bb50d5b71fc&amp;quot;&lt;/p&gt;
&lt;a href=&quot;https://wiki.smpyppksantodonboscofakfak.sch.id/index.php?title=Cara_buat_plugin_password_generator_dan_tokendi_moodle&amp;amp;diff=417&amp;amp;oldid=416&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Smpdbos</name></author>
	</entry>
	<entry>
		<id>https://wiki.smpyppksantodonboscofakfak.sch.id/index.php?title=Cara_buat_plugin_password_generator_dan_tokendi_moodle&amp;diff=416&amp;oldid=prev</id>
		<title>Smpdbos: Created page with &quot; Link chatgptnya :  https://chatgpt.com/share/6a96e991-4624-83ec-9692-0bb50d5b71fc   Sel, 17 Mar pukul 8.05  membuat plugin Moodle versi PRO (offline) dengan: halaman pengawas auto refresh password berubah tiap 1 menit dan kirim file .zip siap install.  Saya sudah membuat &#039;&#039;&#039;plugin Moodle PRO (offline)&#039;&#039;&#039; sesuai yang Anda minta.  📦 &#039;&#039;&#039;Download plugin (.zip):&#039;&#039;&#039; ----  = Fitur Plugin = Plugin ini memiliki:  ✅ &#039;&#039;&#039;100% Offline&#039;&#039;&#039; (tidak ada koneksi internet)  ✅ &#039;&#039;&#039;Pas...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.smpyppksantodonboscofakfak.sch.id/index.php?title=Cara_buat_plugin_password_generator_dan_tokendi_moodle&amp;diff=416&amp;oldid=prev"/>
		<updated>2026-09-01T15:11:09Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot; Link chatgptnya :  https://chatgpt.com/share/6a96e991-4624-83ec-9692-0bb50d5b71fc   Sel, 17 Mar pukul 8.05  membuat plugin Moodle versi PRO (offline) dengan: halaman pengawas auto refresh password berubah tiap 1 menit dan kirim file .zip siap install.  Saya sudah membuat &amp;#039;&amp;#039;&amp;#039;plugin Moodle PRO (offline)&amp;#039;&amp;#039;&amp;#039; sesuai yang Anda minta.  📦 &amp;#039;&amp;#039;&amp;#039;Download plugin (.zip):&amp;#039;&amp;#039;&amp;#039; ----  = Fitur Plugin = Plugin ini memiliki:  ✅ &amp;#039;&amp;#039;&amp;#039;100% Offline&amp;#039;&amp;#039;&amp;#039; (tidak ada koneksi internet)  ✅ &amp;#039;&amp;#039;&amp;#039;Pas...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; Link chatgptnya :&lt;br /&gt;
 https://chatgpt.com/share/6a96e991-4624-83ec-9692-0bb50d5b71fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sel, 17 Mar pukul 8.05&lt;br /&gt;
&lt;br /&gt;
membuat plugin Moodle versi PRO (offline) dengan: halaman pengawas auto refresh password berubah tiap 1 menit dan kirim file .zip siap install.&lt;br /&gt;
&lt;br /&gt;
Saya sudah membuat &amp;#039;&amp;#039;&amp;#039;plugin Moodle PRO (offline)&amp;#039;&amp;#039;&amp;#039; sesuai yang Anda minta.&lt;br /&gt;
&lt;br /&gt;
📦 &amp;#039;&amp;#039;&amp;#039;Download plugin (.zip):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Fitur Plugin =&lt;br /&gt;
Plugin ini memiliki:&lt;br /&gt;
&lt;br /&gt;
✅ &amp;#039;&amp;#039;&amp;#039;100% Offline&amp;#039;&amp;#039;&amp;#039; (tidak ada koneksi internet)&lt;br /&gt;
&lt;br /&gt;
✅ &amp;#039;&amp;#039;&amp;#039;Password quiz berubah setiap 1 menit&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
✅ &amp;#039;&amp;#039;&amp;#039;Halaman monitoring untuk pengawas&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
✅ &amp;#039;&amp;#039;&amp;#039;Auto refresh setiap 60 detik&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
✅ &amp;#039;&amp;#039;&amp;#039;Password ditampilkan besar agar mudah dilihat&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Cara Install =&lt;br /&gt;
1️⃣ Download file zip di atas&lt;br /&gt;
&lt;br /&gt;
2️⃣ Ekstrak ke folder:&lt;br /&gt;
&lt;br /&gt;
Sehingga menjadi:&lt;br /&gt;
----3️⃣ Login ke &amp;#039;&amp;#039;&amp;#039;Admin Moodle&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Buka:&lt;br /&gt;
&lt;br /&gt;
Klik:&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Jalankan Cron Moodle =&lt;br /&gt;
Plugin bekerja melalui cron.&lt;br /&gt;
&lt;br /&gt;
Manual:&lt;br /&gt;
&lt;br /&gt;
Atau cron server:&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Halaman Pengawas =&lt;br /&gt;
Pengawas bisa melihat password di:&lt;br /&gt;
&lt;br /&gt;
Contoh:&lt;br /&gt;
&lt;br /&gt;
Tampilan:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Quiz&lt;br /&gt;
!Password&lt;br /&gt;
!Open&lt;br /&gt;
!Close&lt;br /&gt;
|-&lt;br /&gt;
|Matematika CBT&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;482193&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|09:00&lt;br /&gt;
|10:30&lt;br /&gt;
|}&lt;br /&gt;
Halaman &amp;#039;&amp;#039;&amp;#039;auto refresh tiap 60 detik&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Cara Kerja =&lt;br /&gt;
Setiap &amp;#039;&amp;#039;&amp;#039;1 menit&amp;#039;&amp;#039;&amp;#039; plugin akan:&lt;br /&gt;
&lt;br /&gt;
# cek quiz yang &amp;#039;&amp;#039;&amp;#039;sedang aktif&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# generate password baru&lt;br /&gt;
# update password quiz&lt;br /&gt;
# tampilkan di &amp;#039;&amp;#039;&amp;#039;halaman pengawas&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----✅ Jika Anda mau, saya bisa membantu membuat &amp;#039;&amp;#039;&amp;#039;versi yang jauh lebih kuat untuk CBT kampus&amp;#039;&amp;#039;&amp;#039;, misalnya:&lt;br /&gt;
&lt;br /&gt;
* password berubah &amp;#039;&amp;#039;&amp;#039;setiap 30 detik&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;mode layar proyektor (full screen)&amp;#039;&amp;#039;&amp;#039; untuk ruang ujian&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;monitor semua ruang ujian&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;anti share password antar ruangan&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;dashboard pengawas real-time&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Plugin seperti ini biasanya dipakai untuk &amp;#039;&amp;#039;&amp;#039;ujian online universitas dengan ratusan komputer&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
Sel, 17 Mar pukul 10.33&lt;br /&gt;
&lt;br /&gt;
tampilan password masih beda-beda&lt;br /&gt;
&lt;br /&gt;
Berikut &amp;#039;&amp;#039;&amp;#039;halaman pengawas versi layar proyektor&amp;#039;&amp;#039;&amp;#039; sesuai yang Anda minta:&lt;br /&gt;
&lt;br /&gt;
Fitur:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 token besar untuk semua quiz&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;countdown besar&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;mode fullscreen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;warna berubah saat hampir habis&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;auto refresh saat token berubah&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
File ini menggantikan:&lt;br /&gt;
----&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;?php&lt;br /&gt;
 &lt;br /&gt;
 require(&amp;#039;../../config.php&amp;#039;);&lt;br /&gt;
 &lt;br /&gt;
 require_login();&lt;br /&gt;
 &lt;br /&gt;
 $context = context_system::instance();&lt;br /&gt;
 require_capability(&amp;#039;moodle/site:config&amp;#039;, $context);&lt;br /&gt;
 &lt;br /&gt;
 $PAGE-&amp;gt;set_url(&amp;#039;/local/quizpasswordrotatorpro/index.php&amp;#039;);&lt;br /&gt;
 $PAGE-&amp;gt;set_pagelayout(&amp;#039;standard&amp;#039;);&lt;br /&gt;
 $PAGE-&amp;gt;set_title(&amp;#039;Exam Token Monitor&amp;#039;);&lt;br /&gt;
 $PAGE-&amp;gt;set_heading(&amp;#039;Exam Token Monitor&amp;#039;);&lt;br /&gt;
 &lt;br /&gt;
 echo $OUTPUT-&amp;gt;header();&lt;br /&gt;
 hanya menampilkan 1 token besar&lt;br /&gt;
 &lt;br /&gt;
 countdown besar di tengah layar&lt;br /&gt;
 &lt;br /&gt;
 mode fullscreen untuk proyektor ruang ujian&lt;br /&gt;
 &lt;br /&gt;
 warna berubah saat token hampir habis&lt;br /&gt;
 global $DB;&lt;br /&gt;
 &lt;br /&gt;
 $now = time();&lt;br /&gt;
 &lt;br /&gt;
 /* ambil 1 quiz aktif yang memiliki password */&lt;br /&gt;
 $quiz = $DB-&amp;gt;get_record_select(&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   &amp;#039;quiz&amp;#039;,&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   &amp;quot;timeopen &amp;lt; ? AND timeclose &amp;gt; ? AND password IS NOT NULL AND password &amp;lt;&amp;gt; &amp;lt;nowiki&amp;gt;&amp;#039;&amp;#039;&amp;lt;/nowiki&amp;gt;&amp;quot;,&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   [$now, $now]&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 $token = $quiz ? $quiz-&amp;gt;password : &amp;#039;------&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 ?&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;style&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 body{&lt;br /&gt;
     text-align:center;&lt;br /&gt;
     background:#111;&lt;br /&gt;
     color:white;&lt;br /&gt;
     font-family:Arial;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 .token{&lt;br /&gt;
     font-size:150px;&lt;br /&gt;
     font-weight:bold;&lt;br /&gt;
     margin-top:80px;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 .countdown{&lt;br /&gt;
     font-size:60px;&lt;br /&gt;
     margin-top:40px;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 .warning{&lt;br /&gt;
     color:#ff3b3b;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 .normal{&lt;br /&gt;
     color:#4caf50;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 .fullscreenbtn{&lt;br /&gt;
     margin-top:40px;&lt;br /&gt;
     padding:10px 25px;&lt;br /&gt;
     font-size:20px;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/style&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;h1&amp;gt;TOKEN UJIAN&amp;lt;/h1&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;div id=&amp;quot;token&amp;quot; class=&amp;quot;token&amp;quot;&amp;gt;&amp;lt;?php echo $token; ?&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;countdown&amp;quot;&amp;gt;&lt;br /&gt;
 Sisa waktu: &amp;lt;span id=&amp;quot;timer&amp;quot;&amp;gt;--&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;button class=&amp;quot;fullscreenbtn&amp;quot; onclick=&amp;quot;openFullscreen()&amp;quot;&amp;gt;Fullscreen&amp;lt;/button&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 /* interval token (5 menit) */&lt;br /&gt;
 var duration = 300;&lt;br /&gt;
 &lt;br /&gt;
 function updateTimer(){&lt;br /&gt;
 &lt;br /&gt;
     var now = new Date();&lt;br /&gt;
     var seconds = now.getSeconds();&lt;br /&gt;
     var minutes = now.getMinutes();&lt;br /&gt;
 &lt;br /&gt;
     var elapsed = (minutes * 60 + seconds) % duration;&lt;br /&gt;
 &lt;br /&gt;
     var remaining = duration - elapsed;&lt;br /&gt;
 &lt;br /&gt;
     document.getElementById(&amp;quot;timer&amp;quot;).innerHTML = remaining + &amp;quot; detik&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
     var token = document.getElementById(&amp;quot;token&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
     if(remaining &amp;lt; 30){&lt;br /&gt;
         token.className = &amp;quot;token warning&amp;quot;;&lt;br /&gt;
     }else{&lt;br /&gt;
         token.className = &amp;quot;token normal&amp;quot;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     if(remaining &amp;lt;= 1){&lt;br /&gt;
         location.reload();&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 setInterval(updateTimer,1000);&lt;br /&gt;
 updateTimer();&lt;br /&gt;
 &lt;br /&gt;
 /* fullscreen mode */&lt;br /&gt;
 &lt;br /&gt;
 function openFullscreen() {&lt;br /&gt;
 &lt;br /&gt;
   var elem = document.documentElement;&lt;br /&gt;
 &lt;br /&gt;
   if (elem.requestFullscreen) {&lt;br /&gt;
     elem.requestFullscreen();&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 &lt;br /&gt;
 echo $OUTPUT-&amp;gt;footer();&amp;lt;/code&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Tampilan yang Dihasilkan =&lt;br /&gt;
Di layar proyektor akan terlihat seperti ini:&lt;br /&gt;
&lt;br /&gt;
Jika waktu tinggal &amp;#039;&amp;#039;&amp;#039;&amp;lt; 30 detik&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* warna token berubah &amp;#039;&amp;#039;&amp;#039;merah&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Cara Menggunakan Mode Proyektor =&lt;br /&gt;
Buka halaman:&lt;br /&gt;
&lt;br /&gt;
Klik tombol:&lt;br /&gt;
&lt;br /&gt;
Lalu tampilkan di &amp;#039;&amp;#039;&amp;#039;proyektor ruang ujian&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Tips Agar Sistem Stabil =&lt;br /&gt;
Pastikan cron Moodle tetap berjalan:&lt;br /&gt;
&lt;br /&gt;
Karena token berubah saat &amp;#039;&amp;#039;&amp;#039;cron dijalankan&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
----✅ Jika Anda mau, saya bisa membuat &amp;#039;&amp;#039;&amp;#039;versi dashboard CBT yang jauh lebih canggih&amp;#039;&amp;#039;&amp;#039;, misalnya:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;token berubah setiap 30 detik&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;update realtime tanpa reload&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;monitor peserta yang sudah login&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;mode multi ruang ujian&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;deteksi sharing token antar lab&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Sistem seperti ini biasa dipakai untuk &amp;#039;&amp;#039;&amp;#039;CBT universitas dengan 1000+ komputer&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Sel, 17 Mar pukul 12.50&lt;br /&gt;
&lt;br /&gt;
sudah pakai script layar lebar dan 1 token, tapi tampilannya masih banyak token&lt;br /&gt;
&lt;br /&gt;
Masalahnya terlihat dari kode yang Anda kirim: ada &amp;#039;&amp;#039;&amp;#039;teks yang bukan kode PHP&amp;#039;&amp;#039;&amp;#039; masuk ke dalam file sehingga bisa mengganggu eksekusi halaman.&lt;br /&gt;
&lt;br /&gt;
Di bagian ini:&lt;br /&gt;
&lt;br /&gt;
Baris:&lt;br /&gt;
&lt;br /&gt;
bukan kode PHP dan harus &amp;#039;&amp;#039;&amp;#039;dihapus&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Jika tidak dihapus, PHP bisa gagal memproses bagian setelahnya sehingga halaman tetap menampilkan &amp;#039;&amp;#039;&amp;#039;tampilan lama (banyak token)&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Perbaikan yang Benar =&lt;br /&gt;
Ganti bagian awal kode menjadi seperti ini:&lt;br /&gt;
&lt;br /&gt;
Sehingga blok awal menjadi:&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Setelah Memperbaiki =&lt;br /&gt;
Lakukan langkah ini:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Save file&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Purge cache Moodle&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Buka:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Refresh halaman&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Hasil yang Seharusnya Muncul =&lt;br /&gt;
Halaman pengawas hanya menampilkan:&lt;br /&gt;
&lt;br /&gt;
Tanpa tabel dan tanpa banyak token.&lt;br /&gt;
----💡 Jika Anda mau, saya juga bisa membantu membuat &amp;#039;&amp;#039;&amp;#039;mode proyektor CBT yang jauh lebih bagus&amp;#039;&amp;#039;&amp;#039;, misalnya:&lt;br /&gt;
&lt;br /&gt;
* token &amp;#039;&amp;#039;&amp;#039;di tengah layar sangat besar&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* countdown &amp;#039;&amp;#039;&amp;#039;format MM:SS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;background berubah merah saat 10 detik terakhir&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;auto fullscreen saat halaman dibuka&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;tanpa tombol fullscreen lagi&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Tampilan seperti ini biasanya dipakai di &amp;#039;&amp;#039;&amp;#039;ruang ujian CBT universitas&amp;#039;&amp;#039;&amp;#039; supaya token mudah dilihat seluruh peserta.&lt;br /&gt;
&lt;br /&gt;
Sel, 17 Mar pukul 14.29&lt;br /&gt;
&lt;br /&gt;
membuat dashboard pengawas yang lebih bagus untuk CBT hanya menampilkan 1 token besarcountdown besar di tengah layar mode fullscreen untuk proyektor ruang ujian warna berubah saat token hampir habis&lt;br /&gt;
&lt;br /&gt;
Pada kode Anda yang terakhir, ada &amp;#039;&amp;#039;&amp;#039;teks penjelasan yang masih berada di dalam file PHP&amp;#039;&amp;#039;&amp;#039; sehingga perlu dihapus agar dashboard tampil bersih dan stabil.&lt;br /&gt;
&lt;br /&gt;
Baris ini harus &amp;#039;&amp;#039;&amp;#039;dihapus&amp;#039;&amp;#039;&amp;#039; dari file:&lt;br /&gt;
&lt;br /&gt;
Setelah dibersihkan, gunakan &amp;#039;&amp;#039;&amp;#039;versi dashboard pengawas CBT yang lebih profesional&amp;#039;&amp;#039;&amp;#039; di bawah ini.&lt;br /&gt;
&lt;br /&gt;
Fitur:&lt;br /&gt;
&lt;br /&gt;
* 1 &amp;#039;&amp;#039;&amp;#039;TOKEN BESAR di tengah layar&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;COUNTDOWN format MM:SS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;AUTO FULLSCREEN&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;WARNA MERAH saat 20 detik terakhir&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;AUTO REFRESH saat token berubah&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* cocok untuk &amp;#039;&amp;#039;&amp;#039;proyektor ruang ujian&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Ganti seluruh isi file:&lt;br /&gt;
&lt;br /&gt;
dengan kode berikut.&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;?php&lt;br /&gt;
 &lt;br /&gt;
 require(&amp;#039;../../config.php&amp;#039;);&lt;br /&gt;
 require_login();&lt;br /&gt;
 &lt;br /&gt;
 $context = context_system::instance();&lt;br /&gt;
 require_capability(&amp;#039;moodle/site:config&amp;#039;, $context);&lt;br /&gt;
 &lt;br /&gt;
 $PAGE-&amp;gt;set_url(&amp;#039;/local/quizpasswordrotatorpro/index.php&amp;#039;);&lt;br /&gt;
 $PAGE-&amp;gt;set_pagelayout(&amp;#039;embedded&amp;#039;);&lt;br /&gt;
 $PAGE-&amp;gt;set_title(&amp;#039;TOKEN UJIAN CBT&amp;#039;);&lt;br /&gt;
 $PAGE-&amp;gt;set_heading(&amp;lt;nowiki&amp;gt;&amp;#039;&amp;#039;&amp;lt;/nowiki&amp;gt;);&lt;br /&gt;
 &lt;br /&gt;
 echo $OUTPUT-&amp;gt;header();&lt;br /&gt;
 &lt;br /&gt;
 global $DB;&lt;br /&gt;
 &lt;br /&gt;
 $now = time();&lt;br /&gt;
 &lt;br /&gt;
 /* ambil satu quiz aktif */&lt;br /&gt;
 $quiz = $DB-&amp;gt;get_record_select(&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   &amp;#039;quiz&amp;#039;,&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   &amp;quot;timeopen &amp;lt; ? AND timeclose &amp;gt; ? AND password &amp;lt;&amp;gt; &amp;lt;nowiki&amp;gt;&amp;#039;&amp;#039;&amp;lt;/nowiki&amp;gt;&amp;quot;,&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;   [$now,$now]&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 $token = $quiz ? $quiz-&amp;gt;password : &amp;#039;------&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
 ?&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;style&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 body{&lt;br /&gt;
     background:#0a0a0a;&lt;br /&gt;
     color:white;&lt;br /&gt;
     font-family:Arial, Helvetica, sans-serif;&lt;br /&gt;
     text-align:center;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 .title{&lt;br /&gt;
     font-size:40px;&lt;br /&gt;
     margin-top:40px;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 .token{&lt;br /&gt;
     font-size:200px;&lt;br /&gt;
     font-weight:bold;&lt;br /&gt;
     margin-top:80px;&lt;br /&gt;
     letter-spacing:10px;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 .countdown{&lt;br /&gt;
     font-size:90px;&lt;br /&gt;
     margin-top:40px;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 .green{&lt;br /&gt;
     color:#00e676;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 .red{&lt;br /&gt;
     color:#ff1744;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 .info{&lt;br /&gt;
     margin-top:20px;&lt;br /&gt;
     font-size:20px;&lt;br /&gt;
     color:#aaa;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/style&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;TOKEN UJIAN CBT&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;div id=&amp;quot;token&amp;quot; class=&amp;quot;token green&amp;quot;&amp;gt;&amp;lt;?php echo $token ?&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;countdown&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span id=&amp;quot;timer&amp;quot;&amp;gt;--:--&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;info&amp;quot;&amp;gt;&lt;br /&gt;
 Token berubah otomatis&lt;br /&gt;
 &amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 /* interval token (5 menit) */&lt;br /&gt;
 var duration = 300;&lt;br /&gt;
 &lt;br /&gt;
 function updateTimer(){&lt;br /&gt;
 &lt;br /&gt;
     var now = new Date();&lt;br /&gt;
     var seconds = now.getSeconds();&lt;br /&gt;
     var minutes = now.getMinutes();&lt;br /&gt;
 &lt;br /&gt;
     var elapsed = (minutes * 60 + seconds) % duration;&lt;br /&gt;
 &lt;br /&gt;
     var remaining = duration - elapsed;&lt;br /&gt;
 &lt;br /&gt;
     var m = Math.floor(remaining / 60);&lt;br /&gt;
     var s = remaining % 60;&lt;br /&gt;
 &lt;br /&gt;
     if(s &amp;lt; 10){&lt;br /&gt;
         s = &amp;quot;0&amp;quot;+s;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     document.getElementById(&amp;quot;timer&amp;quot;).innerHTML = m + &amp;quot;:&amp;quot; + s;&lt;br /&gt;
 &lt;br /&gt;
     var token = document.getElementById(&amp;quot;token&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
     if(remaining &amp;lt;= 20){&lt;br /&gt;
         token.className = &amp;quot;token red&amp;quot;;&lt;br /&gt;
     }else{&lt;br /&gt;
         token.className = &amp;quot;token green&amp;quot;;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     if(remaining &amp;lt;= 1){&lt;br /&gt;
         location.reload();&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 setInterval(updateTimer,1000);&lt;br /&gt;
 updateTimer();&lt;br /&gt;
 &lt;br /&gt;
 /* auto fullscreen */&lt;br /&gt;
 &lt;br /&gt;
 document.documentElement.requestFullscreen?.();&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 echo $OUTPUT-&amp;gt;footer();&amp;lt;/code&amp;gt;&lt;br /&gt;
----Hasil dashboard di proyektor akan seperti ini:&lt;br /&gt;
&lt;br /&gt;
Ketika waktu tinggal &amp;#039;&amp;#039;&amp;#039;20 detik&amp;#039;&amp;#039;&amp;#039;, token berubah &amp;#039;&amp;#039;&amp;#039;merah&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
----Tips untuk ruang ujian CBT:&lt;br /&gt;
&lt;br /&gt;
# buka halaman ini di komputer pengawas&lt;br /&gt;
# tekan &amp;#039;&amp;#039;&amp;#039;F11&amp;#039;&amp;#039;&amp;#039; atau fullscreen otomatis aktif&lt;br /&gt;
# tampilkan di &amp;#039;&amp;#039;&amp;#039;proyektor ruang ujian&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----Jika Anda mau, saya juga bisa membantu membuat &amp;#039;&amp;#039;&amp;#039;versi dashboard CBT yang jauh lebih canggih&amp;#039;&amp;#039;&amp;#039;, misalnya:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;token berubah tiap 30 detik&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;tanpa refresh halaman&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;animasi countdown besar&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;monitor jumlah peserta yang sudah login&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;deteksi jika token dibagikan antar ruang&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Biasanya sistem seperti ini dipakai untuk &amp;#039;&amp;#039;&amp;#039;CBT sekolah / kampus dengan 300-1000 komputer&amp;#039;&amp;#039;&amp;#039;.&lt;/div&gt;</summary>
		<author><name>Smpdbos</name></author>
	</entry>
</feed>