Cara buat plugin password generator dan tokendi moodle

From Dboswiki
Revision as of 15:11, 1 September 2026 by Smpdbos (talk | contribs) (Created page with " 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 '''plugin Moodle PRO (offline)''' sesuai yang Anda minta. 📦 '''Download plugin (.zip):''' ---- = Fitur Plugin = Plugin ini memiliki: ✅ '''100% Offline''' (tidak ada koneksi internet) ✅ '''Pas...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
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 plugin Moodle PRO (offline) sesuai yang Anda minta.

📦 Download plugin (.zip):


Fitur Plugin

Plugin ini memiliki:

100% Offline (tidak ada koneksi internet)

Password quiz berubah setiap 1 menit

Halaman monitoring untuk pengawas

Auto refresh setiap 60 detik

Password ditampilkan besar agar mudah dilihat


Cara Install

1️⃣ Download file zip di atas

2️⃣ Ekstrak ke folder:

Sehingga menjadi:


3️⃣ Login ke Admin Moodle

Buka:

Klik:


Jalankan Cron Moodle

Plugin bekerja melalui cron.

Manual:

Atau cron server:


Halaman Pengawas

Pengawas bisa melihat password di:

Contoh:

Tampilan:

Quiz Password Open Close
Matematika CBT 482193 09:00 10:30

Halaman auto refresh tiap 60 detik.


Cara Kerja

Setiap 1 menit plugin akan:

  1. cek quiz yang sedang aktif
  2. generate password baru
  3. update password quiz
  4. tampilkan di halaman pengawas

✅ Jika Anda mau, saya bisa membantu membuat versi yang jauh lebih kuat untuk CBT kampus, misalnya:

  • password berubah setiap 30 detik
  • mode layar proyektor (full screen) untuk ruang ujian
  • monitor semua ruang ujian
  • anti share password antar ruangan
  • dashboard pengawas real-time

Plugin seperti ini biasanya dipakai untuk ujian online universitas dengan ratusan komputer.

Sel, 17 Mar pukul 10.33

tampilan password masih beda-beda

Berikut halaman pengawas versi layar proyektor sesuai yang Anda minta:

Fitur:

  • 1 token besar untuk semua quiz
  • countdown besar
  • mode fullscreen
  • warna berubah saat hampir habis
  • auto refresh saat token berubah

File ini menggantikan:


<?php

require('../../config.php');

require_login();

$context = context_system::instance();
require_capability('moodle/site:config', $context);

$PAGE->set_url('/local/quizpasswordrotatorpro/index.php');
$PAGE->set_pagelayout('standard');
$PAGE->set_title('Exam Token Monitor');
$PAGE->set_heading('Exam Token Monitor');

echo $OUTPUT->header();
hanya menampilkan 1 token besar

countdown besar di tengah layar

mode fullscreen untuk proyektor ruang ujian

warna berubah saat token hampir habis
global $DB;

$now = time();

/* ambil 1 quiz aktif yang memiliki password */
$quiz = $DB->get_record_select(
    'quiz',
    "timeopen < ? AND timeclose > ? AND password IS NOT NULL AND password <> ''",
    [$now, $now]
);

$token = $quiz ? $quiz->password : '------';

?>

<style>
 
 body{
     text-align:center;
     background:#111;
     color:white;
     font-family:Arial;
 }
 
 .token{
     font-size:150px;
     font-weight:bold;
     margin-top:80px;
 }
 
 .countdown{
     font-size:60px;
     margin-top:40px;
 }
 
 .warning{
     color:#ff3b3b;
 }
 
 .normal{
     color:#4caf50;
 }
 
 .fullscreenbtn{
     margin-top:40px;
     padding:10px 25px;
     font-size:20px;
 }
 
 </style>

<h1>TOKEN UJIAN</h1>

<div id="token" class="token"><?php echo $token; ?></div>

<div class="countdown">
 Sisa waktu: <span id="timer">--</span>
</div>

<button class="fullscreenbtn" onclick="openFullscreen()">Fullscreen</button>

<script>
 
 /* interval token (5 menit) */
 var duration = 300;
 
 function updateTimer(){
 
     var now = new Date();
     var seconds = now.getSeconds();
     var minutes = now.getMinutes();
 
     var elapsed = (minutes * 60 + seconds) % duration;
 
     var remaining = duration - elapsed;
 
     document.getElementById("timer").innerHTML = remaining + " detik";
 
     var token = document.getElementById("token");
 
     if(remaining < 30){
         token.className = "token warning";
     }else{
         token.className = "token normal";
     }
 
     if(remaining <= 1){
         location.reload();
     }
 
 }
 
 setInterval(updateTimer,1000);
 updateTimer();
 
 /* fullscreen mode */
 
 function openFullscreen() {
 
   var elem = document.documentElement;
 
   if (elem.requestFullscreen) {
     elem.requestFullscreen();
   }
 
 }
 
 </script>

<?php

echo $OUTPUT->footer();

Tampilan yang Dihasilkan

Di layar proyektor akan terlihat seperti ini:

Jika waktu tinggal < 30 detik:

  • warna token berubah merah

Cara Menggunakan Mode Proyektor

Buka halaman:

Klik tombol:

Lalu tampilkan di proyektor ruang ujian.


Tips Agar Sistem Stabil

Pastikan cron Moodle tetap berjalan:

Karena token berubah saat cron dijalankan.


✅ Jika Anda mau, saya bisa membuat versi dashboard CBT yang jauh lebih canggih, misalnya:

  • token berubah setiap 30 detik
  • update realtime tanpa reload
  • monitor peserta yang sudah login
  • mode multi ruang ujian
  • deteksi sharing token antar lab

Sistem seperti ini biasa dipakai untuk CBT universitas dengan 1000+ komputer.

Sel, 17 Mar pukul 12.50

sudah pakai script layar lebar dan 1 token, tapi tampilannya masih banyak token

Masalahnya terlihat dari kode yang Anda kirim: ada teks yang bukan kode PHP masuk ke dalam file sehingga bisa mengganggu eksekusi halaman.

Di bagian ini:

Baris:

bukan kode PHP dan harus dihapus.

Jika tidak dihapus, PHP bisa gagal memproses bagian setelahnya sehingga halaman tetap menampilkan tampilan lama (banyak token).


Perbaikan yang Benar

Ganti bagian awal kode menjadi seperti ini:

Sehingga blok awal menjadi:


Setelah Memperbaiki

Lakukan langkah ini:

  1. Save file
  2. Purge cache Moodle

Buka:

  1. Refresh halaman

Hasil yang Seharusnya Muncul

Halaman pengawas hanya menampilkan:

Tanpa tabel dan tanpa banyak token.


💡 Jika Anda mau, saya juga bisa membantu membuat mode proyektor CBT yang jauh lebih bagus, misalnya:

  • token di tengah layar sangat besar
  • countdown format MM:SS
  • background berubah merah saat 10 detik terakhir
  • auto fullscreen saat halaman dibuka
  • tanpa tombol fullscreen lagi

Tampilan seperti ini biasanya dipakai di ruang ujian CBT universitas supaya token mudah dilihat seluruh peserta.

Sel, 17 Mar pukul 14.29

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

Pada kode Anda yang terakhir, ada teks penjelasan yang masih berada di dalam file PHP sehingga perlu dihapus agar dashboard tampil bersih dan stabil.

Baris ini harus dihapus dari file:

Setelah dibersihkan, gunakan versi dashboard pengawas CBT yang lebih profesional di bawah ini.

Fitur:

  • 1 TOKEN BESAR di tengah layar
  • COUNTDOWN format MM:SS
  • AUTO FULLSCREEN
  • WARNA MERAH saat 20 detik terakhir
  • AUTO REFRESH saat token berubah
  • cocok untuk proyektor ruang ujian

Ganti seluruh isi file:

dengan kode berikut.

<?php

require('../../config.php');
require_login();

$context = context_system::instance();
require_capability('moodle/site:config', $context);

$PAGE->set_url('/local/quizpasswordrotatorpro/index.php');
$PAGE->set_pagelayout('embedded');
$PAGE->set_title('TOKEN UJIAN CBT');
$PAGE->set_heading('');

echo $OUTPUT->header();

global $DB;

$now = time();

/* ambil satu quiz aktif */
$quiz = $DB->get_record_select(
    'quiz',
    "timeopen < ? AND timeclose > ? AND password <> ''",
    [$now,$now]
);

$token = $quiz ? $quiz->password : '------';

?>

<style>
 
 body{
     background:#0a0a0a;
     color:white;
     font-family:Arial, Helvetica, sans-serif;
     text-align:center;
 }
 
 .title{
     font-size:40px;
     margin-top:40px;
 }
 
 .token{
     font-size:200px;
     font-weight:bold;
     margin-top:80px;
     letter-spacing:10px;
 }
 
 .countdown{
     font-size:90px;
     margin-top:40px;
 }
 
 .green{
     color:#00e676;
 }
 
 .red{
     color:#ff1744;
 }
 
 .info{
     margin-top:20px;
     font-size:20px;
     color:#aaa;
 }
 
 </style>

<div class="title">TOKEN UJIAN CBT</div>

<div id="token" class="token green"><?php echo $token ?></div>

<div class="countdown">
 <span id="timer">--:--</span>
</div>

<div class="info">
 Token berubah otomatis
 </div>

<script>
 
 /* interval token (5 menit) */
 var duration = 300;
 
 function updateTimer(){
 
     var now = new Date();
     var seconds = now.getSeconds();
     var minutes = now.getMinutes();
 
     var elapsed = (minutes * 60 + seconds) % duration;
 
     var remaining = duration - elapsed;
 
     var m = Math.floor(remaining / 60);
     var s = remaining % 60;
 
     if(s < 10){
         s = "0"+s;
     }
 
     document.getElementById("timer").innerHTML = m + ":" + s;
 
     var token = document.getElementById("token");
 
     if(remaining <= 20){
         token.className = "token red";
     }else{
         token.className = "token green";
     }
 
     if(remaining <= 1){
         location.reload();
     }
 
 }
 
 setInterval(updateTimer,1000);
 updateTimer();
 
 /* auto fullscreen */
 
 document.documentElement.requestFullscreen?.();
 
 </script>

<?php
echo $OUTPUT->footer();

Hasil dashboard di proyektor akan seperti ini:

Ketika waktu tinggal 20 detik, token berubah merah.


Tips untuk ruang ujian CBT:

  1. buka halaman ini di komputer pengawas
  2. tekan F11 atau fullscreen otomatis aktif
  3. tampilkan di proyektor ruang ujian

Jika Anda mau, saya juga bisa membantu membuat versi dashboard CBT yang jauh lebih canggih, misalnya:

  • token berubah tiap 30 detik
  • tanpa refresh halaman
  • animasi countdown besar
  • monitor jumlah peserta yang sudah login
  • deteksi jika token dibagikan antar ruang

Biasanya sistem seperti ini dipakai untuk CBT sekolah / kampus dengan 300-1000 komputer.