Anons79 Mini Shell

Directory : /home/aplikasiposinfo/.trash/storage.2/framework/views/
Upload File :
Current File : /home/aplikasiposinfo/.trash/storage.2/framework/views/1cc37387baec5357d77388f7a6fec55e.php

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Course Module</title>
    <link rel="stylesheet" href="path/to/your/css/file.css">
    <meta name="csrf-token" content="<?php echo e(csrf_token()); ?>">
    <?php echo $__env->make('web.frontend.layouts.css', \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?>

    <style>
    .sidebar {
        /* width: 250px;
        height: 100vh;
        position: fixed;
        top: 0;
        left: 0; */
        width: 75%;
        overflow-y: auto;
        transition: transform 0.3s ease;
        /* z-index: 1040; */
    }

    @media (max-width: 767.98px) {
        .sidebar {
            transform: translateY(-100%);
        }

        .sidebar.active {
            transform: translateY(0);
        }

        .main-content {
            margin-left: 0 !important;
        }
    }

    @media (min-width: 768px) {
        .main-content {
            /* margin-left: 250px; */
        }
    }
    </style>


</head>

<body class="overflow-hidden">
<!-- Content Start -->
<div>
    <div class="wrapper d-flex align-items-stretch" style="display: flex; height: calc(150vh - 15rem);">
        
        <div id="navbarToggleExternalContent" class="sidebar bg-light d-none d-md-block show order-last overflow-auto py-5 px-4" style="width: 450px;">
            <div class="single-progress mb-5" style="padding-top: 60px;">
                <div class="row">
                    <h6 class="col-6 title">Progress Belajar</h6>
                    <span class="col-6 text-end progress-number"><?php echo e($percentageProgress); ?> %</span>
                </div>
                <div class="progress">
                        <div class="progress-bar wow fadeInLeft" data-wow-duration="0.5s" data-wow-delay=".3s"
                             role="progressbar"
                             style="width: <?php echo e($percentageProgress); ?>%; visibility: visible; animation-duration: 0.5s; animation-delay: 0.3s; animation-name: fadeInLeft;"
                             aria-valuenow="<?php echo e($percentageProgress); ?>" aria-valuemin="0" aria-valuemax="100">
                        </div>
                        
                </div>
            </div>

            <div class="chapter-list border shadow rounded" style="height: 80%; overflow-y: auto;">
                
                <div class="scroll-container" style="max-height: 100%; overflow-y: auto;">
                    <?php $__currentLoopData = $modulChapter; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $modul): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
                        <nav class="navbar navbar-light">
                            <button class="btn d-flex justify-content-between w-100 my-1" type="button"
                                    data-bs-toggle="collapse" data-bs-target="#chapter-<?php echo e($modul->slug); ?>"
                                    aria-controls="chapter-<?php echo e($modul->slug); ?>" aria-expanded="false"
                                    aria-label="Toggle navigation" onclick="toggleIcon(this, '<?php echo e($modul->slug); ?>')">
                                <span class="text-wrap fs-4 fw-bold module-toggle <?php echo e($modul->slug == $modules->moduleChapter->slug ? 'active' : ''); ?>">
                                    <?php echo e($modul->name); ?>

                                </span>
                            </button>
                        </nav>
                        <div class="collapse <?php echo e($modul->slug == $modules->moduleChapter->slug ? 'show' : ''); ?>" id="chapter-<?php echo e($modul->slug); ?>" data-bs-theme="light">
                            <ul class="ms-5 me-5 p-0">
                                <?php $__currentLoopData = $modul->modules; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $item): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
                                    <li class="list-unstyled p-2 d-flex flex-row align-items-center border rounded shadow ">
                                        <label for="module-<?php echo e($item->id); ?>" class="d-flex align-items-center">
                                            <i class="fa-solid <?php echo e(in_array($item->id, $accessedModules->pluck('id')->toArray()) ? 'fa-circle-check text-primary' : 'fa-circle-o'); ?> fs-4 me-2 module-icon"></i>
                                            <a class="fs-4 module-link text-wrap" href="<?php echo e(route('member.contenModul', [$class->id, $item->id])); ?>">
                                                <?php echo e($item->title); ?>

                                            </a>
                                        </label>
                                    </li>
                                <?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); ?>
                            </ul>
                        </div>
                    <?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); ?>

                    <nav class="navbar navbar-light">
                        <button class="btn d-flex justify-content-between w-100 my-1" type="button"
                                data-bs-toggle="collapse" data-bs-target="#chapter-ujian-akhir"
                                aria-controls="chapter-ujian-akhir" aria-expanded="false"
                                aria-label="Toggle navigation" onclick="toggleIcon(this, 'ujian-akhir')">
                            <span class="fs-4 fw-bold module-toggle">
                                Ujian Akhir
                            </span>
                        </button>
                    </nav>
                    <div class="collapse" id="chapter-ujian-akhir" data-bs-theme="light">
                        <ul class="ms-5 me-5 p-0">
                            <li class="list-unstyled p-2 d-flex flex-row align-items-center border rounded shadow ">
                                <label for="module-ujian-akhir" class="d-flex align-items-center">
                                    <i class="fa-solid fs-4 me-2 module-icon"></i>
                                    <a class="fs-4 module-link" href="<?php echo e(route('exam.start', $class->id)); ?>">
                                        Ujian Akhir
                                    </a>
                                </label>
                            </li>
                        </ul>
                    </div>
                        
                </div>
            </div>

        </div>
        <div class="main-content d-flex flex-column" style="height: 100vh; padding-top: 70px; padding-bottom: 70px; width: 75vw;">
        

            <header class="fixed-top bg-light border-bottom py-3">
                <div class="d-flex justify-content-center me-5">
                    <div class="logo ms-3">
                        <a href="<?php echo e(route('beranda')); ?>"><img id="logo_img" src="<?php echo e(asset('image/logo/logo aja.png')); ?>" alt="logo"><?php echo e(env('APP_NAME')); ?> </a>
                    </div>
                </div>
                <button class="btn btn-primary d-block d-md-none position-fixed top-0 right-0 m-3 zindex-dropdown" id="toggleSidebar">
                    <i class="fa fa-bars"></i>
                </button>
            </header>
            <div class="flex-grow-1 overflow-auto px-4" style="margin-top: 20px; margin-bottom: 20px;">
                <div class="fs-5 container">
                    
                    <?php if(isset($isExamView) && $isExamView): ?>
                        
                        <?php echo $__env->make('web.dashboard_member.layouts._exam_content', \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?>
                    <?php else: ?>
                        
                        <div>
                            <h3><?php echo e($modules->title); ?></h3>
                            <?php
                                $content = $modules->content;
                                // Temukan semua placeholder soal, contoh: {{soal_1}}
                                preg_match_all('/\{\{(soal_\d+)\}\}/', $content, $matches);
                                $placeholders = !empty($matches[1]) ? $matches[1] : [];

                                // Ambil semua data soal yang relevan dalam satu query untuk efisiensi
                                $soals = \App\Models\Soal::where('module_id', $modules->id)
                                                        ->whereIn('placeholder', $placeholders)
                                                        ->get()
                                                        ->keyBy('placeholder');

                                // Ganti placeholder dengan marker unik untuk di-split
                                $contentWithMarkers = preg_replace('/\{\{(soal_\d+)\}\}/', '##SOAL_PLACEHOLDER:$1##', $content);
                                $contentParts = preg_split('/(##SOAL_PLACEHOLDER:soal_\d+##)/', $contentWithMarkers, -1, PREG_SPLIT_DELIM_CAPTURE);
                            ?>

                            <?php $__currentLoopData = $contentParts; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $part): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
                                <?php if(str_starts_with($part, '##SOAL_PLACEHOLDER:')): ?>
                                    <?php
                                        $placeholderName = str_replace(['##SOAL_PLACEHOLDER:', '##'], '', $part);
                                        $soal = $soals->get($placeholderName);
                                    ?>
                                    <?php if($soal): ?>
                                        <?php echo $__env->make('web.dashboard_member.layouts._live_coding_box', ['soal' => $soal], \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?>
                                    <?php endif; ?>
                                <?php else: ?>
                                    <?php echo $part; ?>

                                <?php endif; ?>
                            <?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); ?>
                        </div>
                    <?php endif; ?>
                </div>
            </div>
            <footer class="fixed-bottom bg-light border-top py-3">
                <div class="d-flex justify-content-end me-5">
                    
                    <?php if(!isset($isExamView) || !$isExamView): ?>
                        <?php if($previousModule): ?>
                            <a href="<?php echo e(route('member.contenModul', ['classId' => $class->id, 'moduleId' => $previousModule->id])); ?>" class="btn btn-secondary" id="previousButton">Previous</a>
                        <?php endif; ?>

                        <?php if($nextModule): ?>
                            <a href="<?php echo e(route('member.contenModul', ['classId' => $class->id, 'moduleId' => $nextModule->id])); ?>" class="btn btn-primary ms-3" id="nextButton">Next</a>
                        <?php else: ?>
                            <button type="button" class="btn btn-success ms-3 <?php echo e($allCourseSoalSolved ? '' : 'disabled'); ?>" id="finishButton" data-bs-toggle="modal" data-bs-target="#ratingModal" <?php echo e($allCourseSoalSolved ? '' : 'disabled'); ?>>Finish</button>
                        <?php endif; ?>
                    <?php endif; ?>
                </div>
            </footer>
        </div>
        <!-- Footer End -->

<!-- Rating Modal -->
<!-- Modal -->
<div class="modal fade" id="ratingModal" tabindex="-1" aria-labelledby="ratingModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h1 class="rating-title fs-1">Beri Review</h1>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <form action="<?php echo e(route('classes.storeRating', $class->id)); ?>" method="POST" class="rating-form custom-radio-rating" onsubmit="return validateForm()">
                <?php echo csrf_field(); ?>
                <div class="modal-body">
                    <div id="full-stars-example-two">
                        <p class="text-center fs-2">Seberapa Puas Anda Dengan Kursus Ini</p>
                        <div class="rating-group text-center m-auto d-flex justify-content-center mb-2">
                            <input disabled checked class="rating__input rating__input--none mx-2 px-3" name="rating" id="rating3-none" value="0" type="radio">
                            <label aria-label="1 star" class="rating__label mx-2 px-3" for="rating3-1"><i class="rating__icon rating__icon--star fa fa-star"></i></label>
                            <input class="rating__input" name="rating" id="rating3-1" value="1" type="radio">
                            <label aria-label="2 stars" class="rating__label mx-2 px-3" for="rating3-2"><i class="rating__icon rating__icon--star fa fa-star"></i></label>
                            <input class="rating__input" name="rating" id="rating3-2" value="2" type="radio">
                            <label aria-label="3 stars" class="rating__label mx-2 px-3" for="rating3-3"><i class="rating__icon rating__icon--star fa fa-star"></i></label>
                            <input class="rating__input" name="rating" id="rating3-3" value="3" type="radio">
                            <label aria-label="4 stars" class="rating__label mx-2 px-3" for="rating3-4"><i class="rating__icon rating__icon--star fa fa-star"></i></label>
                            <input class="rating__input" name="rating" id="rating3-4" value="4" type="radio">
                            <label aria-label="5 stars" class="rating__label mx-2 px-3" for="rating3-5"><i class="rating__icon rating__icon--star fa fa-star"></i></label>
                            <input class="rating__input" name="rating" id="rating3-5" value="5" type="radio">
                        </div>
                    </div>
                    <div class="form-group">
                        <textarea id="comment" class="form-control" name="review" placeholder="Berikan Komentar Anda" rows="5"></textarea>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="submit" class="rbt-btn btn-md btn-gradient hover-icon-reverse w-100">
                            <span class="icon-reverse-wrapper">
                                <span class="btn-text">Kirim</span>
                                <span class="btn-icon"><i class="feather-arrow-right"></i></span>
                                <span class="btn-icon"><i class="feather-arrow-right"></i></span>
                            </span>
                    </button>
                </div>
            </form>
        </div>
    </div>
</div>
<?php echo $__env->make('web.frontend.layouts.js', \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?>


</body>

<script>
    document.addEventListener("DOMContentLoaded", function () {
        const sidebar = document.getElementById("navbarToggleExternalContent");
        const toggleBtn = document.getElementById("toggleSidebar");

        toggleBtn.addEventListener("click", function () {
            sidebar.classList.toggle("active");
            sidebar.classList.toggle('d-none');
        });
    });
</script>


<script>
    document.addEventListener("DOMContentLoaded", function() {
        // Add this new code for dropdown functionality
        var moduleToggles = document.getElementsByClassName("module-toggle");
        for (var i = 0; i < moduleToggles.length; i++) {
            moduleToggles[i].addEventListener("click", function() {
                this.classList.toggle("active");
                var submodules = this.nextElementSibling;
                if (submodules.style.maxHeight) {
                    submodules.style.maxHeight = null;
                } else {
                    submodules.style.maxHeight = submodules.scrollHeight + "px";
                }
            });
        }
        function validateForm() {
            var rating = document.querySelector('input[name="rating"]:checked');
            var review = document.getElementById('comment').value;
            if (!rating || review.trim() === "") {
                alert("Mohon isi semua field!");
                return false;
            }
            return true;
        }
    });
</script>
<script>
    // Meneruskan nilai konfigurasi dari Laravel ke JavaScript
    window.judge0Config = {
        url: "<?php echo e(config('judge0.url', 'https://judge0.britech.id')); ?>",
        token: "<?php echo e(config('judge0.token')); ?>"
    };
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.34.1/min/vs/loader.min.js"></script>
<script>

    require.config({ paths: { 'vs': 'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.34.1/min/vs' }});

    function saveAnswer(soalId, answer, isSolved) {
        const csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content');

        fetch("<?php echo e(route('soal.saveAnswer')); ?>", {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'X-CSRF-TOKEN': csrfToken
            },
            body: JSON.stringify({
                soal_id: soalId,
                answer: answer,
                is_solved: isSolved
            })
        })
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                console.log('Jawaban berhasil disimpan ke database.');
            } else {
                console.error('Gagal menyimpan jawaban:', data.message);
            }
        })
        .catch(error => {
            console.error('Error saat menyimpan jawaban:', error);
        });
    }

    require(['vs/editor/editor.main'], function () {
        const codingBoxes = document.querySelectorAll('.live-coding-box');
        const nextButton = document.getElementById('nextButton');
        const finishButton = document.getElementById('finishButton');
        const totalSoal = codingBoxes.length;
        let solvedSoal = 0;

        // Jika ada soal, nonaktifkan tombol Next/Finish secara default
        if (totalSoal > 0) {
            if (nextButton) nextButton.classList.add('disabled');
            if (finishButton) finishButton.classList.add('disabled');
        }

        function checkCompletion() {
            if (totalSoal > 0 && solvedSoal === totalSoal) {
                if (nextButton) nextButton.classList.remove('disabled');
                if (finishButton) finishButton.classList.remove('disabled');
            }
        }

        const languageMap = {
            '63': 'javascript', // JavaScript (Node.js 12.14.0)
            '71': 'python',     // Python (3.8.1)
            '70': 'python',     // Python (2.7.17)
            // Tambahkan mapping lain jika diperlukan
        };

        codingBoxes.forEach(function(box) {
            const container = box.querySelector('.monaco-container');
            const languageId = box.dataset.languageId;
            const monacoLanguage = languageMap[languageId] || 'plaintext';
            const initialCode = box.querySelector('.initial-code').textContent;
            const editor = monaco.editor.create(container, {
                value: initialCode.trim(),
                language: monacoLanguage,
                automaticLayout: true,
                theme: 'vs-dark'
            });

            const runButton = box.querySelector('.btn-run-code');
            const outputEl = box.querySelector('.output');
            // Ambil jawaban yang diharapkan dari data-attribute, yang berasal dari model Soal
            const expectedOutput = box.dataset.answer.trim();

            let useStdin = false; // Variabel untuk melacak status stdin

            runButton.addEventListener('click', function () {
                const sourceCode = editor.getValue();

                // Pengecekan dasar untuk mencegah pengiriman kode kosong
                if (!sourceCode.trim()) {
                    outputEl.style.display = 'block';
                    outputEl.textContent = '⚠️ Kode tidak boleh kosong.';
                    outputEl.classList.remove('bg-success-subtle', 'text-success-emphasis');
                    outputEl.classList.add('bg-dark', 'text-white');
                    return;
                }

                outputEl.style.display = 'block';
                outputEl.textContent = 'Menjalankan kode...';
                runButton.disabled = true; // Nonaktifkan tombol selama eksekusi

                // Persiapan payload untuk Judge0, termasuk stdin jika diaktifkan
                let submissionData = {
                    language_id: parseInt(languageId),
                    source_code: sourceCode,
                    expected_output: expectedOutput
                };

                if (useStdin) {
                     const stdin = box.querySelector(`#stdin-${box.dataset.soalId}`).value;
                     if (stdin) {
                         submissionData.stdin = stdin;
                     }
                }

                const judge0ApiUrl = `${window.judge0Config.url}/submissions?base64_encoded=false&wait=true`;

                fetch(judge0ApiUrl, {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json',
                        'x-rapidapi-key': window.judge0Config.token,
                    },
                    body: JSON.stringify(submissionData)
                })
                    .then(res => {
                        if (!res.ok) {
                            // Tangani error HTTP seperti 500, 404, dll.
                            return res.json().then(errorData => {
                                throw new Error(`HTTP error ${res.status}: ${errorData.message || res.statusText}`);
                            });
                        }
                        return res.json();
                    })
                    .then(data => {
                        console.log('Judge0 Response:', data);

                        // Tangani berbagai status dari Judge0
                        const statusId = data.status.id;
                        const statusDescription = data.status.description;
                        let resultText = `Status: ${statusDescription}\n`;

                        // Tambahkan pesan output/error
                        if (data.stdout) resultText += `\nOutput:\n${data.stdout}`;
                        if (data.stderr) resultText += `\nError:\n${data.stderr}`;
                        if (data.compile_output) resultText += `\nCompile Error:\n${data.compile_output}`;
                        if (data.message) resultText += `\nMessage: ${data.message}`;

                        outputEl.textContent = resultText;

                        if (statusId === 3) { // Status: Accepted
                            outputEl.textContent += '\n\n✅ Jawaban benar!';
                                outputEl.classList.remove('bg-dark', 'text-white');
                                outputEl.classList.add('bg-success-subtle', 'text-success-emphasis');
                            saveAnswer(box.dataset.soalId, sourceCode, true);

                            if (!box.classList.contains('solved')) {
                                    box.classList.add('solved');
                                    solvedSoal++;
                                    checkCompletion(); // Cek apakah semua soal sudah terjawab
                            }
                        } else {
                            outputEl.textContent += '\n❌ Jawaban belum sesuai.';
                            outputEl.classList.remove('bg-success-subtle', 'text-success-emphasis');
                            outputEl.classList.add('bg-dark', 'text-white');
                        }
                    })
                    .catch(err => {
                        console.error('Fetch Error:', err);
                        outputEl.textContent = `⚠️ Gagal menjalankan kode: ${err.message}`;
                        outputEl.classList.remove('bg-success-subtle', 'text-success-emphasis');
                        outputEl.classList.add('bg-dark', 'text-white');
                    }).finally(() => {
                        runButton.disabled = false; // Aktifkan kembali tombol
                    });
            });

             // Event listener untuk tombol reset kode
             box.querySelector('.btn-reset-code').addEventListener('click', function() {
                editor.setValue(initialCode.trim());
                outputEl.style.display = 'none';
                box.classList.remove('solved');
                if (box.classList.contains('solved')) {
                    solvedSoal--;
                    checkCompletion();
                }
            });

             // Event listener untuk checkbox stdin
            box.querySelector(`#useStdin-${box.dataset.soalId}`).addEventListener('change', function() {
                useStdin = this.checked;
            });

        });
    });

</script>

</html>
<?php /**PATH C:\laragon\www\web_mudahcoding_2024\resources\views/web/dashboard_member/layouts/content.blade.php ENDPATH**/ ?>

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]