This commit is contained in:
rianbtk 2022-08-20 01:18:08 +07:00
parent 49b90ba9b1
commit c2f158e43c
30 changed files with 179402 additions and 2039 deletions

179292
aplas_web.sql Normal file

File diff suppressed because one or more lines are too long

View File

@ -30,9 +30,6 @@ class StudentController extends Controller
public function pythoncourse() {
return view('student/pythoncourse/main');
}
public function pythoncoursetopic() {
return view('student/pythoncourse/topic');
}
public function asynctask() {
return view('student/androidcourse/asynctask/index');
@ -51,11 +48,6 @@ class StudentController extends Controller
public function unitycoursepage() {
return view('student/unitycourse/page/index');
}
//
// public function nodejscourse() {
// return view('student/nodejscourse/main');
// }
public function nodejscourseBasicHTML() {
return view('student/nodejscourse/basicHTML/index');
}

View File

@ -55,7 +55,7 @@ class ExercisePythonController extends Controller
) );
}
return view('student.python_task.uitask', compact('python_topics'));
return view('student.pythoncourse.python_task.uitask', compact('python_topics'));
}
@ -71,7 +71,7 @@ class ExercisePythonController extends Controller
$pengerjaan = DB::table('python_students_validation')->where('userid', $id)->get();
return view('student.python_task.uitask_detail', compact('percobaan', 'infotopik','pengerjaan'));
return view('student.pythoncourse.python_task.uitask_detail', compact('percobaan', 'infotopik','pengerjaan'));
}
@ -102,20 +102,20 @@ class ExercisePythonController extends Controller
if ( $previous->count() > 0 ) {
$previous = $previous->first();
$btn_previous = url('student/python/pengerjaan/'. $previous->id_percobaan);
$btn_previous = url('student/pythoncourse/python/pengerjaan/'. $previous->id_percobaan);
}
if ( $next->count() > 0 ) {
$next = $next->first();
$btn_next = url('student/python/pengerjaan/'. $next->id_percobaan);
$btn_next = url('student/pythoncourse/python/pengerjaan/'. $next->id_percobaan);
}
$data['previous'] = $btn_previous;
$data['next'] = $btn_next;
return view('student.python_task.uipengerjaan', $data);
return view('student.pythoncourse.python_task.uipengerjaan', $data);
}
@ -412,7 +412,7 @@ class ExercisePythonController extends Controller
$data['percobaan'] = $percobaan;
$data['id_percobaan'] = $id_percobaan;
return view('student.python_feedback.feedback', $data);
return view('student.pythoncourse.python_feedback.feedback', $data);
// $data['id_topik'] = $id_topik;
// $data['id_percobaan'] = $id_percobaan;
@ -443,7 +443,7 @@ class ExercisePythonController extends Controller
// eksekusi insert
DB::table('python_feedback')->insert( $data );
return redirect('student/python/pengerjaan/'. $id_percobaan);
return redirect('student/pythoncourse/python/pengerjaan/'. $id_percobaan);
}

View File

@ -52,7 +52,7 @@ class ResultController extends Controller
}
// view
return view('student.python_result.result_student', compact('dt_hasil'));
return view('student.pythoncourse.python_result.result_student', compact('dt_hasil'));
}

View File

@ -1,105 +0,0 @@
@extends('student/home')
@section('content')
<div class="row">
<div class="col-12">
<form action="{{ url('pythonfeedback') }}" type="POST">
@csrf
<div class="card">
<div class="card-header">
<h3 class="card-title">Submit Hasil Percobaan {{$percobaan->no_percobaan.' : '.$percobaan->nama_percobaan}}</h3>
</div>
<div class="card-body">
@if (Session::has('message'))
<div id="alert-msg" class="alert alert-success alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"><EFBFBD></button>
{{ Session::get('message') }}
</div>
@endif
@if(!empty($errors->all()))
<div class="alert alert-danger">
{{ Html::ul($errors->all())}}
</div>
@endif
<div class="row">
<div class="col-md-6">
{{-- <div class="form-group">
<label for="">Durasi (menit)</label>
<input type="number" name="durasi" class="form-control" placeholder="Masukkan estimasi durasi pengerjaan . . ." required="" />
<small>Berisi estimasi durasi pengerjaan percobaan {{$percobaan->no_percobaan.' : '.$percobaan->nama_percobaan}}</small>
</div> --}}
{{-- <div class="form-group">
<label>Tingkatan Kesulitan Percobaan</label>
<select class="form-control" name="tingkatan">
<option value="mudah">Mudah</option>
<option value="sulit">Sulit</option>
</select>
</div> --}}
<div cslass="form-group">
<label for="">Komentar </label>
<textarea name="komentar" class="form-control" placeholder="Berikan feedback dari topik yang sudah disediakan" required=""></textarea>
<small>Berisi pendapat mahasiswa mengenai topik pembelajaran yang dikerjakan -> Contoh : Saya bisa menyelesaikan topik ini / Materi kurang jelas </small>
<small></small>
</div>
{{-- <input type="hidden" name="id_topik" value="{{ $id_topik }}" >
<input type="hidden" name="id_percobaan" value="{{ $id_percobaan }}" > --}}
<input type="hidden" name="id_topik" value="{{ $infotopik->id_topik }}" >
<input type="hidden" name="id_percobaan" value="{{ $percobaan->id_percobaan }}" >
</div>
</div>
</div>
<div class="card-footer">
<a href="{{ url('student/python/pengerjaan/'. $id_percobaan) }}" class="btn btn-outline-info">Back</a>
{{-- <input type="hidden" name="topic" value="{{$taskid}}" /> --}}
{{ Form::submit('Save', ['class' => 'btn btn-primary pull-right']) }}
</div>
</div>
<!-- </form> -->
</form>
</div>
</div>
@endsection

View File

@ -1,124 +0,0 @@
@extends('student/home')
<!-- untuk mengisi yield pada home.blade.php -->
@section('script')
<!-- Code Ace Library For Python -->
<script src="{{URL::to('/js/ace/ace/ace.js')}}"></script>
<!-- Code Ace Library For Python -->
@endsection
@section('content')
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h2> Result </h2>
<h5> Percobaan Topik Pembelajaran Python Dasar </h5>
</div>
<div class="card-body">
<!-- kolom untuk overview materi pembelajaran -->
<table class="table table-stripe table-bordered">
<thead>
<tr class="text-center">
<th>No</th>
<th>Topik - Percobaan</th>
<th>Status</th>
<th>Dosen</th>
<th>Tanggal</th>
<th>Opsi</th>
</tr>
</thead>
<tbody>
@foreach ( $dt_hasil AS $nomor => $isi_kolom )
<tr>
<td class="text-center">{{ ($nomor + 1) }}</td>
<td>
<b>| {{ $isi_kolom->nama }} | </b>{{ $isi_kolom->nama_percobaan }}
</td>
<td class="text-center">{{ $isi_kolom->status}}</td>
<td class="text-center">{{ $isi_kolom->nama_dosen }}</td>
<td class="text-center">{{ date('d F Y H.i A', strtotime($isi_kolom->create_at)) }}</td>
<td>
<a href="javascript:;" data-toggle="modal" data-target="#modal-{{ $nomor }}"
class="btn btn-sm btn-primary text-center">Detail Validasi</a>
<!-- Modal -->
<div class="modal fade" id="modal-{{ $nomor }}" tabindex="-1" role="dialog"
aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-body">
<button type="button" class="close" data-dismiss="modal"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<b>BAB {{ $isi_kolom->bab}} ({{ $isi_kolom->nama }})</b>
<h6 style="margin: 0px"><code>Percobaan {{$isi_kolom->no_percobaan}} :
{{ $isi_kolom->nama_percobaan }}</code></h6>
<small>Pengerjaan pada
{{ date('d F Y H.i A', strtotime($isi_kolom->create_at)) }}</small>
<hr>
<b>Source Code Jawaban Anda :</b>
<div class="card card-body"
style="font-family: 'Courier New', Courier, monospace">
{{ $isi_kolom->report }}
</div>
<a href="{{ asset('python-resources/unittest/jawaban/'. $isi_kolom->file_submitted) }}.py"
download>Unduh Source Code</a>
<br>
<small>Klik untuk mengunduh file jawaban</small><hr>
<b>Hasil Unit Test : </b><br>
<?php echo $isi_kolom->checkresult ?>
</div>
</div>
</div>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- JS Python -->
<!-- Option 1: Bundle Bootstrap dengan Popper -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
@endsection

View File

@ -1,843 +0,0 @@
@extends('student/home')
<!-- untuk mengisi yield pada home.blade.php -->
@section('script')
<!-- Code Ace Library For Python -->
<script src="{{URL::to('/js/ace/ace/ace.js')}}"></script>
<!-- Code Ace Library For Python -->
@endsection
@section('content')
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h2> {{ $infotopik->nama }} </h2>
<h5> Materi Percobaan ke - {{ $percobaan->no_percobaan . ". " . $percobaan->nama_percobaan}} </h5>
</div>
<div class="card-body">
<!-- pesan jika berhasil (session) -->
@if (Session::has('message'))
<div id="alert-msg" class="alert alert-success alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"><EFBFBD></button>
{{ Session::get('message') }}
</div>
@endif
<!-- pesan jika error (withErrors) -->
@if(!empty($errors->all()))
<div class="alert alert-danger alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"><EFBFBD></button>
{{ Html::ul($errors->all())}}
</div>
@endif
<!-- kolom untuk overview materi pembelajaran -->
<div class="form-group">
<!--<label for="description">Catatan</label>-->
<div style="padding: 16px; background-color: #f5f5f5; border: 2px solid #e9e9e9">
<b>Catatan</b><br>
{{ $percobaan->catatan }}
<div id="syntax-error" style="font-weight: bold; color: red"></div>
</div>
</div>
<!-- BUTTON -->
<div class="button-group">
<!-- Jika ingin kembali ke list percobaan -->
@php
$id_topik = $percobaan->id_topik;
@endphp
<!-- jika kembali ke list percobaan -->
<input type="button" value="List Percobaan"
onclick="window.location.href='{{ url('student/python/taskdetail/'. $id_topik) }}'"
class="mx-1 btn btn-outline-primary" style="min-width: 120px; min-height: 45px;">
<!-- jika sudah sampai topic terakhir, next button dinonaktifkan -->
<a href="{{ $previous }}" class="float-right mr-1 btn btn-outline-primary"
style="min-width: 120px; min-height: 45px;">
Sebelumnya
</a>
<!-- Button Compile -->
<input type="button" id="compile" value="Check Code Validity" class="float-right mr-1 btn btn-success"
style="min-width: 150px; min-height: 45px; display: none">
<a href="{{ $next }}" class="mx-1 btn btn-outline-primary"
style="min-width: 120px; min-height: 45px;">
Selanjutnya
</a>
<!-- feedback button -->
<a href="{{ url('/student/python/feedback/'. $infotopik->id_topik.'/'.$percobaan->id_percobaan)}}" class="float-right mr-1 btn btn-primary"
style="padding: 8px; min-width: 120px; min-height: 45px; color:white;"><i class="fa fa-heart" aria-hidden="true"></i>
Feedback
</a>
</div>
<div class="row" style="padding-top:20px">
<div id="left-panel" class="col-md-6">
<div class="code-box-container"
style="box-shadow: 0 2px 5px 0 rgba(62, 64, 68, 0.5);height: 684px; width:100%;border-radius:5px; border-style:solid; border-width:4px; border-color: #E1E1E8;">
<div>
@php
$guidefiles = asset( $percobaan->panduanpath )
@endphp
<embed class="guide-reader" style="height: 636px; width:100%;margin-bottom: -4px;"
type="application/pdf" src="{{ $guidefiles }}"></embed>
</div>
<div class="mb-0 nav nav-justified btn-group">
<tr>
<!-- button download pdf -->
<td>
<a class="btn btn-success" style="border-radius:0px" href="{{ $guidefiles }}"
target="_blank">
<i class="fa fa-download"></i>&nbsp;Download Guide</a>
</td>
</tr>
</div>
</div>
</div>
<div id="right-panel" class="col-md-6">
<div class="code-box-container"
style="box-shadow: 0 2px 5px 0 rgba(62, 64, 68, 0.5); border-radius:5px; border-style:solid; border-width:4px; border-color: #E1E1E8;">
<div class="mb-0 nav nav-justified btn-group">
<tr>
<!-- switch button menggunakan js -->
<td>
<input id="MainActivityTab" type="button" value="main.py"
class="btn btn-secondary tab-box rounded-0 font-italic"
onclick="openTab('MainActivityTab','0')"></input>
<!-- Inputan id topik dan id percobaan untuk compile -->
<input type="hidden" name="id_topik" value="{{ $infotopik->id_topik }}" />
<input type="hidden" name="id_percobaan"
value="{{ $percobaan->id_percobaan }}" />
</td>
</tr>
</div>
<!-- Text pengerjaan -->
<div style="height: 540px; border-right: 1px solid #e0e0e0" id="teks-editor"></div>
<!-- End Text Pengerjaan -->
<div class="mb-0 nav nav-justified btn-group">
<tr>
<!-- switch button menggunakan js -->
<td>
<!-- <a class="btn btn-secondary tab-box rounded-0 font-italic"
style="border-radius:0px; color:white;" onclick="orientationbutton()">
<i class="fa fa-retweet"></i>&nbsp;Change orientation</a> -->
</td>
</tr>
</div>
<!-- data 'id' untuk UiTopicStdController -->
</div>
</div>
</div>
</div>
<div class="col-12" style="padding-top:20px;padding-right:20px;padding-left:20px;">
<div class="row">
<div class="col-md-1 align-middle" style="border-right: 1px solid #e0e0e0">
<h1 style="margin: 0px"><span id="total-percobaan" class="text-center">0</span>x</h1>
<small>Submit</small>
</div>
<div class="col-md-10">
<h1 style="margin: 0px">Result</h1>
{{-- <code style="font-size: 20px" id="times" data-time="0">Coding Time - s</code> --}}
</div>
</div>
{{-- <p style="color: #ea5a73; font-size:larger">(After Trying 0 Times)</p> --}}
<table class="table table-bordered table-hover">
<thead>
<tr class="text-center">
<th>Submit No.</th>
<th>Nama Topik</th>
<th>Detail Validasi</th>
<th>Status</th>
</tr>
</thead>
<tbody id="table-body">
</tbody>
</table>
</div>
<!-- </form> -->
</div>
</div>
<!-- JS Python -->
<!-- Option 1: Bundle Bootstrap dengan Popper -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
{{-- <script src="https://www.jqueryscript.net/demo/Multifunctional-jQuery-Countdown-Stopwatch-Plugin-Timer-js/jquery.timer.js"></script> --}}
<script>
/**
* jquery.timer.js
*
* Copyright (c) 2011 Jason Chavannes <jason.chavannes@gmail.com>
*
* http://jchavannes.com/jquery-timer
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use, copy,
* modify, merge, publish, distribute, sublicense, and/or sell copies
* of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
$(function() {
$.timer = Timer;
/**
* First parameter can either be a function or an object of parameters.
*
* @param {function | {
* action: function,
* time: int=,
* autostart: boolean=
* }} action
* @param {int=} time
* @param {boolean=} autostart
* @returns {Timer}
*/
function Timer(action, time, autostart) {
if (this.constructor != Timer || this.init) {
return new Timer(action, time, autostart);
}
this.set(action, time, autostart);
return this;
}
/**
* @see Timer
*
* @param {function | {
* action: function,
* time: int=,
* autostart: boolean=
* }} action
* @param {int=} time
* @param {boolean=} autostart
* @returns {Timer}
*/
Timer.prototype.set = function(action, time, autostart) {
this.init = true;
if (typeof action == "object") {
if (action.time) {
time = action.time;
}
if (action.autostart) {
autostart = action.autostart;
}
action = action.action;
}
if (typeof action == "function") {
this.action = action;
}
if (!isNaN(time)) {
this.intervalTime = time;
}
if (autostart && this.isReadyToStart()) {
this.isActive = true;
this.setTimer();
}
return this;
};
Timer.prototype.isReadyToStart = function() {
var notActive = !this.active;
var hasAction = typeof this.action == "function";
var hasTime = !isNaN(this.intervalTime);
return notActive && hasAction && hasTime;
};
/**
* @param {int=} time
* @returns {Timer}
*/
Timer.prototype.once = function(time) {
var timer = this;
if (isNaN(time)) {
timer.action();
return this;
}
setTimeout(fnTimeout, time);
return this;
function fnTimeout() {
timer.action();
}
};
/**
* @param {boolean=} reset
* @returns {Timer}
*/
Timer.prototype.play = function(reset) {
if (this.isReadyToStart()) {
if (reset) {
this.setTimer();
}
else {
this.setTimer(this.remaining);
}
this.isActive = true;
}
return this;
};
/**
* @returns {Timer}
*/
Timer.prototype.pause = function() {
if (this.isActive) {
this.isActive = false;
this.remaining -= new Date() - this.last;
this.clearTimer();
}
return this;
};
/**
* @returns {Timer}
*/
Timer.prototype.stop = function() {
this.isActive = false;
this.remaining = this.intervalTime;
this.clearTimer();
return this;
};
/**
* @param {boolean=} reset
* @returns {Timer}
*/
Timer.prototype.toggle = function(reset) {
if (this.isActive) {
this.pause();
}
else if (reset) {
this.play(true);
}
else {
this.play();
}
return this;
};
/**
* @returns {Timer}
*/
Timer.prototype.reset = function() {
this.isActive = false;
this.play(true);
return this;
};
/**
* @returns {Timer}
*/
Timer.prototype.clearTimer = function() {
clearTimeout(this.timeoutObject);
return this;
};
/**
* @returns {Timer}
*/
Timer.prototype.setTimer = function(time) {
var timer = this;
if (isNaN(time)) {
time = this.intervalTime;
}
this.remaining = time;
this.last = new Date();
this.clearTimer();
this.timeoutObject = setTimeout(fnTimeout, time);
return this;
function fnTimeout() {
timer.execute();
}
};
/**
* @returns {Timer}
*/
Timer.prototype.execute = function() {
if (this.isActive) {
try {
this.action();
}
finally {
this.setTimer();
}
}
return this;
};
})
</script>
<script>
$(function() {
function startTime( status ) {
var count = 0;
var timer = $.timer(function() {
count = ++count;
// $('#times').text("Coding Time "+(count)+" s");
// $("#times").data("time", count);
// console.log( count );
});
timer.set({ time : 1000, autostart : true });
}
function startEditor() {
let editor;
editor = ace.edit("teks-editor");
// tampilan tema warna editor
editor.setTheme("ace/theme/tomorrow_night");
// editor.setTheme("ace/theme/clouds");
editor.session.setMode("ace/mode/python");
editor.setFontSize("12px");
}
function openmodule() {
$.ajax({
type: "GET",
url: "{{ url('student/python-history/'. $infotopik->id_topik.'/'. $percobaan->id_percobaan) }}",
dataType: "json",
success: function( result ) {
let btncompiler = $('#compile');
if ( (result.validasi).length > 0 ){
let editor = ace.edit("teks-editor");
// tampilan tema warna editor
editor.setTheme("ace/theme/tomorrow_night");
// editor.setTheme("ace/theme/clouds");
editor.session.setMode("ace/mode/python");
editor.setFontSize("12px");
if ( result.statusPassed == false ) {
btncompiler.show(500);
editor.setValue(`{{ $percobaan->texteditor }}`);
} else { // PASSED
// editor.setValue("");
editor.setValue( result.hist_texteditor );
// console.log( result.hist_texteditor );
}
startEditor();
// $('#times').text("Coding Time "+((result.validasi)[0].time)+" s");
$('#total-percobaan').text(result.submit);
} else {
btncompiler.hide();
$('#teks-editor').html(`
<div class="text-center align-middle">
<div class="form-group" style="margin-top: 100px; margin-bottom: 100px">
<small style="color: #9e9e9e">Mulai Mengerjakan Percobaan</small><br>
<button class="btn btn-success" id="start-learning">Start Test</button>
</div>
</div>
`);
}
}
});
}
openmodule();
// execute button pertama (Start Test)
$("#teks-editor").on("click", "#start-learning", function() {
$("#teks-editor").html("");
startEditor();
let editor = ace.edit("teks-editor");
editor.setValue(`{{ $percobaan->texteditor }}`);
// btn compiler
$('#compile').show(1000);
});
// menampilkan hasil validasi ditampilan awal (Tabel Results)
hasilValidasi();
$('#compile').click(function () {
executing();
});
function executing() {
let editor = ace.edit("teks-editor");
var editorString = editor.getSession().getValue();
// #mengkosongkan error sintax
$('#syntax-error').html("").hide();
if ( editorString.length > 0 ) {
// ambil inputan id_topik dan id_percobaan disimpan di variabel
var variabelid_topik = $('input[name="id_topik"]').val();
var variabelid_percobaan = $('input[name="id_percobaan"]').val();
$.ajax({
url: "http://127.0.0.1:8000/student/python-compile",
method: "GET", // GET | POST
data: {
code: editor.getSession().getValue(),
id_topik: variabelid_topik,
id_percobaan: variabelid_percobaan,
// time: $('#times').data("time")
},
dataType: "json",
success: function (response) {
if (response.status == true) {
// total percobaan
$('#total-percobaan').text(response.jml);
// true alias berhasil input data tampil hasil validasi
hasilValidasi();
if ( response.data ) {
// pengerjaan telah passed
$('#compile').hide(1000);
}
} else {
// alert( response.status );
$('#syntax-error').html("<hr><h5>Sintaks Kode Error !</h5>" + response.data).hide().fadeIn(1000);
}
},
error: function (q) {
console.log(q);
}
})
} else {
alert("Mohon isi source code anda");
}
}
// fungsi untuk menampilkan hasil validasi
function hasilValidasi() {
// ambil inputan id_topik dan id_percobaan
var variabelid_topik = $('input[name="id_topik"]').val();
var variabelid_percobaan = $('input[name="id_percobaan"]').val();
$.ajax({
type: "GET",
url: "{{ url('student/python/tampil-data-validation') }}",
data: "id_topik=" + variabelid_topik + "&id_percobaan=" + variabelid_percobaan,
dataType: "json",
success: function (response) {
if (response.status == true) {
if ( response.statusPassed == true ) {
$('#compile').hide();
}
$("#table-body").html(response.data);
}
}
})
}
})
</script>
<!-- End JS Python -->
@endsection

View File

@ -1,59 +0,0 @@
@extends('student/home')
@section('content')
<div class="row" style="padding: 32px">
<div class="col-12">
<h4>Start Learning Basic Python </h4>
<p>Pilih topik dibawah ini untuk memulai pembelajaran</p>
</div>
<div class="col-12">
<div class="card card-body">
<table class="table table-bordered table-hover">
<thead>
<tr class="text-center">
<th>Bab</th>
<th>Nama Topik</th>
<th>Deskripsi</th>
<th>Status</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
@foreach( $python_topics AS $index => $tp )
@if ($tp['isi']->status == "1")
<tr>
<td class="text-center">{{ $tp['isi']->bab }}</td>
<td>{{ $tp['isi']->nama }}</td>
<td width="25%">{{ $tp['isi']->deskripsi }}</td>
<td>{{ $tp['totalPercobaan'] }} Percobaan
<br>
<small>Telah menyelesaikan {{ $tp['totalPassed'].'/'.$tp['totalPercobaan'] }}
</td>
<td class="text-center">
@php
$color = "success";
$icon = "fa fa-eye";
if ( $tp['totalPassed'] == $tp['totalPercobaan'] ) {
$color = "warning";
$icon = "fa fa-check";
}
@endphp
<a class="btn btn-{{ $color }}" href="{{ url('student/python/taskdetail/'. $tp['isi']->id_topik) }}"><i class="{{ $icon }}"></i></a>
</td>
</tr>
@endif
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@endsection

View File

@ -1,82 +0,0 @@
@extends('student/home')
@section('content')
<div class="row" style="padding: 32px">
<div class="col-12">
<h4>{{$infotopik->nama}}</h4>
<p>Pilih percobaan dibawah ini untuk memulai pembelajaran</p>
</div>
<!-- Button -->
<div class="button-group">
<input type="button" value="Kembali" onclick="window.location.href='{{ url('student/python/task/') }}'"
class="mx-1 btn btn-outline-primary" style="min-width: 120px; min-height: 45px; margin-bottom: 20px">
</div>
<div class="col-12">
<div class="card card-body">
<table class="table table-bordered table-hover">
<thead>
<tr class="text-center">
<th>No</th>
<th>Percobaan</th>
<th>Deskripsi</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
@foreach( $percobaan AS $index => $pc )
@php
$status_pengerjaan = false;
if ( count( $pengerjaan ) > 0 ) {
foreach ( $pengerjaan AS $pngrj ) {
if ( $pngrj->id_percobaan == $pc->id_percobaan ) {
$status_pengerjaan = true;
break;
}
}
}
// - - - - - - - -
// warna button
$colorBtn = "";
$iconBtn = '';
if ( $status_pengerjaan == true ) {
$colorBtn = "btn btn-warning";
$iconBtn = '<i class="fa fa-check"></i>';
} else {
$colorBtn = "btn btn-success";
$iconBtn = '<i class="fa fa-hand-pointer"></i>';
}
@endphp
<tr>
<td class="text-center">{{ $index +1 }}</td>
<td>{{ $pc->nama_percobaan }}</td>
<td>{{ $pc->deskripsi }}</td>
<td class="text-center">
<a class="{{ $colorBtn }}"
href="{{ url('student/python/pengerjaan/'. $pc->id_percobaan) }}"><?php echo $iconBtn ?></a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
@endsection

View File

@ -4,5 +4,5 @@
Login as {{ Auth::user()->roleid }}
</div>
<!-- Default to the left -->
<strong>Copyright &copy; 2020 <a href="https://aplas.org">Android Programming Learning Assistance System (APLAS)</a>.</strong> All rights reserved.
<strong>Copyright &copy; 2022 <a href="http://learning.aplas.online/iclop/">Intelligent Computer Assisted Programming Learning Platform(iCLOP)</a>.</strong> All rights reserved.
</footer>

View File

@ -1,18 +1,13 @@
<nav class="main-header navbar navbar-expand navbar-white navbar-light" style="background-color: wheat;">
<nav class="main-header navbar navbar-expand navbar-black navbar-white" style="background-color: dark;">
<!-- Left navbar links -->
<ul class="navbar-nav">
<ul class="navbar-nav" style="font-size:120%;">
<li class="nav-item">
<a class="nav-link" data-widget="pushmenu" href="#"><i class="fas fa-bars"></i></a>
</li>
<li class="nav-item d-none d-sm-inline-block">
<a href="{{URL::to('student')}}" class="nav-link">Home</a>
<a href="{{URL::to('home')}}" class="nav-link">Home</a>
</li>
<!--
<li class="nav-item d-none d-sm-inline-block">
<a href="#" class="nav-link">Contact</a>
</li>
-->
<li class="nav-item">
<a href="{{ route('logout')}}" class="nav-link"
onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
@ -26,18 +21,4 @@
</li>
</ul>
<!-- SEARCH FORM
<form class="form-inline ml-3">
<div class="input-group input-group-sm">
<input class="form-control form-control-navbar" type="search" placeholder="Search" aria-label="Search">
<div class="input-group-append">
<button class="btn btn-navbar" type="submit">
<i class="fas fa-search"></i>
</button>
</div>
</div>
</form>
-->
</nav>

View File

@ -22,11 +22,11 @@ scratch. This page gets rid of all links and provides the needed markup only.
<div class="wrapper">
<!-- Navbar -->
@include('student/fluttercourse/header')
@include('student/pythoncourse/header')
<!-- /.navbar -->
<!-- Main Sidebar Container -->
@include('student/fluttercourse/sidebar')
@include('student/pythoncourse/sidebar')
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
@ -67,7 +67,7 @@ scratch. This page gets rid of all links and provides the needed markup only.
<!-- /.control-sidebar -->
<!-- Main Footer -->
@include('student/fluttercourse/footer')
@include('student/pythoncourse/footer')
</div>
<!-- ./wrapper -->

View File

@ -1,47 +0,0 @@
@extends('student/fluttercourse/home')
@section('content')
<div class="row">
<div class="col-12">
{{ Form::open(['route'=>'lfiles.store', 'files'=>true]) }}
<div class="card">
<div class="card-header">
<h3 class="card-title">Submit a Learning Result File</h3>
</div>
<div class="card-body">
@if(!empty($errors->all()))
<div class="alert alert-danger">
{{ Html::ul($errors->all())}}
</div>
@endif
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="data1">Topic</label>
<input id="data1" type="text" value="{{ $topic['name'] }}" class="form-control" disabled />
</div>
<div class="form-group">
{!! Form::label('fileid', 'File Name:') !!}
<select class="form-control" id="fileid" name="fileid">
@foreach($files as $file)
<option value="{{ $file->id }}" {{ $file->id == 0 ? 'selected' : '' }}>{{ $file->fileName.' >>> '.$file->path.'' }}</option>
@endforeach
</select>
</div>
<div class="form-group">
{{ Form::label('rscfile', 'File:') }}
{{ Form::file('rscfile', ['class'=>'form-control']) }}
</div>
</div>
</div>
</div>
<div class="card-footer">
<input type="hidden" name="topic" value="{{ $topic['id'] }}" />
<input type="button" value="Back" onclick="history.back()" class="btn btn-outline-info">
{{ Form::submit('Save', ['class' => 'btn btn-primary pull-right']) }}
</div>
</div>
<!-- </form> -->
{{ Form::close() }}
</div>
</div>
@endsection

View File

@ -1,59 +0,0 @@
@extends('student/home')
@section('content')
<div class="row">
<div class="col-12">
{{ Form::model($data,['route'=>['results.update',$data['id']], 'files'=>true,'method'=>'PUT']) }}
<div class="card">
<div class="card-header">
<h3 class="card-title">Change Data of Task Result</h3>
</div>
<div class="card-body">
@if(!empty($errors->all()))
<div class="alert alert-danger">
{{ Html::ul($errors->all())}}
</div>
@endif
<div class="row">
<div class="col-md-6">
<div class="form-group">
{!! Form::label('taskid', 'Learning Task:') !!}
<select disabled class="form-control" id="taskid" name="taskid">
@foreach($items as $item)
<option value="{{ $item->id }}" {{ $item->id == $data['taskid'] ? 'selected' : '' }}>{{ '['.$item->name.'] '.$item->taskno.'. '.$item->desc }}</option>
@endforeach
</select>
</div>
<div class="form-group">
{{ Form::label('status', 'Status: ') }}
<div>{{ Form::radio('status', 'Passed' , $data['status']=='Passed') }}
Passed &nbsp;&nbsp;
{{ Form::radio('status', 'Failed' , $data['status']=='Failed') }}
Failed</div>
</div>
<div class="form-group">
{{ Form::label('duration', 'Duration') }}
{{ Form::number('duration', $data['duration'], ['class'=>'form-control', 'placeholder'=>'Duration Time in Minutes']) }}
</div>
<div class="form-group">
{{ Form::label('image', 'Captured Image of Evidence (jpg,png). Left it blank if does not change') }}
{{ Form::file('image', ['class'=>'form-control']) }}
</div>
<div class="form-group">
{{ Form::label('comment', 'Task Comment') }}
{{ Form::textarea('comment', $data['comment'], ['class'=>'form-control', 'placeholder'=>'Task Comment', 'rows'=>5]) }}
</div>
</div>
</div>
</div>
<div class="card-footer">
<input type="button" value="Back" onclick="history.back()" class="btn btn-outline-info">
<input type="hidden" name="taskid" value="{{ $data['id'] }}" />
{{ Form::submit('Save', ['class' => 'btn btn-primary pull-right']) }}
</div>
</div>
<!-- </form> -->
{{ Form::close() }}
</div>
</div>
@endsection

View File

@ -1,10 +1,10 @@
@extends('student/fluttercourse/home')
@extends('student/pythoncourse/home')
@section('content')
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">Start to learn Android Programming with APLAS</h3>
<h3 class="card-title">Start to learn Android Programming with iCLOP</h3>
<div class="card-tools">
</div>
@ -17,29 +17,65 @@
</div>
<div class="row">
<p>
<div>Requirements:</div>
<div>Minimum Requirements :
<ol>
<li>
A PC with minimum 4 GB RAM, 4 GB HDD, 1280 x 800 screen resolution, Microsoft Windows 7/8/10 (32- or 64-bit).
CPU : Intel Core i3350M dual-core processor (2.26 GHz, 3 MB Cache)
</li>
<li>
Java SDK 1.8 minimum installed.
VGA : Integrated Intel HD graphics
</li>
<li>
Android Studio 3.5 installed.
RAM : 4GB DDR3 dual-channel RAM (2GB + 2GB)
</li>
<li>
A web browser.
</li>
<li>
A PDF reader software.
</li>
<li>
Internet Connection.
</li>
<br>
</ol>
</p>
<p1>
<div>Recommendet Specs :
<ol>
<li>
CPU : Intel Core i5-8400
</li>
<li>
VGA : Integrated Intel UHD graphics
</li>
<li>
RAM : 16 GB RAM
</li>
</ol>
</p1>
<br>
<p2>
<div>Software :
<ol>
<li>
Windows 7 SP1 64-bit, Windows 8.1 64-bit, Windows 10 64-bit, Windows 11 64-bit
</li>
<li>
Tools: Windows PowerShell 5.0+, Git 2.x
</li>
<li>
Android Studio (Flutter Extension)
</li>
</ol>
</p2>
<br>
<p3>
<div>Documents :
<ol>
<li>
Guide
</li>
<li>
Supplement
</li>
<li>
Test File
</li>
</ol>
</p3>
</div>
</div>
</div>
</div>

View File

@ -1,4 +1,4 @@
@extends('student/home')
@extends('student/pythoncourse/home')
@section('content')
@ -84,7 +84,7 @@
<div class="card-footer">
<a href="{{ url('student/python/pengerjaan/'. $id_percobaan) }}" class="btn btn-outline-info">Back</a>
<a href="{{ url('student/pythoncourse/python/pengerjaan/'. $id_percobaan) }}" class="btn btn-outline-info">Back</a>
{{-- <input type="hidden" name="topic" value="{{$taskid}}" /> --}}

View File

@ -1,4 +1,4 @@
@extends('student/home')
@extends('student/pythoncourse/home')
<!-- untuk mengisi yield pada home.blade.php -->
@section('script')

View File

@ -1,4 +1,4 @@
@extends('student/home')
@extends('student/pythoncourse/home')
<!-- untuk mengisi yield pada home.blade.php -->
@section('script')
@ -93,7 +93,7 @@
<!-- jika kembali ke list percobaan -->
<input type="button" value="List Percobaan"
onclick="window.location.href='{{ url('student/python/taskdetail/'. $id_topik) }}'"
onclick="window.location.href='{{ url('student/pythoncourse/python/taskdetail/'. $id_topik) }}'"
class="mx-1 btn btn-outline-primary" style="min-width: 120px; min-height: 45px;">
<!-- jika sudah sampai topic terakhir, next button dinonaktifkan -->
@ -122,7 +122,7 @@
</a>
<!-- feedback button -->
<a href="{{ url('/student/python/feedback/'. $infotopik->id_topik.'/'.$percobaan->id_percobaan)}}" class="float-right mr-1 btn btn-primary"
<a href="{{ url('/student/pythoncourse/python/feedback/'. $infotopik->id_topik.'/'.$percobaan->id_percobaan)}}" class="float-right mr-1 btn btn-primary"
style="padding: 8px; min-width: 120px; min-height: 45px; color:white;"><i class="fa fa-heart" aria-hidden="true"></i>
Feedback
</a>
@ -811,7 +811,7 @@
type: "GET",
url: "{{ url('student/python/tampil-data-validation') }}",
url: "{{ url('student/pythoncourse/python/tampil-data-validation') }}",
data: "id_topik=" + variabelid_topik + "&id_percobaan=" + variabelid_percobaan,
dataType: "json",
success: function (response) {

View File

@ -1,4 +1,4 @@
@extends('student/home')
@extends('student/pythoncourse/home')
@section('content')
<div class="row" style="padding: 32px">
@ -45,7 +45,7 @@
$icon = "fa fa-check";
}
@endphp
<a class="btn btn-{{ $color }}" href="{{ url('student/python/taskdetail/'. $tp['isi']->id_topik) }}"><i class="{{ $icon }}"></i></a>
<a class="btn btn-{{ $color }}" href="{{ url('student/pythoncourse/python/taskdetail/'. $tp['isi']->id_topik) }}"><i class="{{ $icon }}"></i></a>
</td>
</tr>
@endif

View File

@ -1,4 +1,4 @@
@extends('student/home')
@extends('student/pythoncourse/home')
@section('content')
<div class="row" style="padding: 32px">
@ -9,7 +9,7 @@
<!-- Button -->
<div class="button-group">
<input type="button" value="Kembali" onclick="window.location.href='{{ url('student/python/task/') }}'"
<input type="button" value="Kembali" onclick="window.location.href='{{ url('student/pythoncourse/python/task/') }}'"
class="mx-1 btn btn-outline-primary" style="min-width: 120px; min-height: 45px; margin-bottom: 20px">
</div>
@ -68,7 +68,7 @@
<td>{{ $pc->deskripsi }}</td>
<td class="text-center">
<a class="{{ $colorBtn }}"
href="{{ url('student/python/pengerjaan/'. $pc->id_percobaan) }}"><?php echo $iconBtn ?></a>
href="{{ url('student/pythoncourse/python/pengerjaan/'. $pc->id_percobaan) }}"><?php echo $iconBtn ?></a>
</td>
</tr>
@endforeach

View File

@ -1,59 +0,0 @@
@extends('student/fluttercourse/home')
@section('content')
<div class="row">
<div class="col-12">
{{ Form::open(['route'=>'results.store', 'files'=>true]) }}
<div class="card">
<div class="card-header">
<h3 class="card-title">Submit a Task Result</h3>
</div>
<div class="card-body">
@if(!empty($errors->all()))
<div class="alert alert-danger">
{{ Html::ul($errors->all())}}
</div>
@endif
<div class="row">
<div class="col-md-6">
<div class="form-group">
{!! Form::label('taskid', 'Learning Task:') !!}
<select class="form-control" id="taskid" name="taskid">
@foreach($items as $item)
<option value="{{ $item->id }}" {{ $item->id == 0 ? 'selected' : '' }}>{{ '['.$item->name.'] '.$item->taskno.'. '.$item->desc }}</option>
@endforeach
</select>
</div>
<div class="form-group">
{{ Form::label('status', 'Status: ') }}
<div>{{ Form::radio('status', 'Passed' , true) }}
Passed &nbsp;&nbsp;
{{ Form::radio('status', 'Failed' , false) }}
Failed</div>
</div>
<div class="form-group">
{{ Form::label('duration', 'Duration') }}
{{ Form::number('duration', '0', ['class'=>'form-control', 'placeholder'=>'Duration Time in Minutes']) }}
</div>
<div class="form-group">
{{ Form::label('image', 'Captured Image of Evidence (jpg,png)') }}
{{ Form::file('image', ['class'=>'form-control']) }}
</div>
<div class="form-group">
{{ Form::label('comment', 'Task Comment') }}
{{ Form::textarea('comment', '', ['class'=>'form-control', 'placeholder'=>'Task Comment', 'rows'=>5]) }}
</div>
</div>
</div>
</div>
<div class="card-footer">
<input type="button" value="Back" onclick="history.back()" class="btn btn-outline-info">
<input type="hidden" name="topic" value="{{ $topic['id'] }}" />
{{ Form::submit('Save', ['class' => 'btn btn-primary pull-right']) }}
</div>
</div>
<!-- </form> -->
{{ Form::close() }}
</div>
</div>
@endsection

View File

@ -1,57 +0,0 @@
@extends('student/fluttercourse/home')
@section('content')
<div class="row">
<div class="col-12">
{{ Form::model($entity,['route'=>['results.update',$entity['id']], 'files'=>true,'method'=>'PUT']) }}
<div class="card">
<div class="card-header">
<h3 class="card-title">Change Data of Task Result</h3>
</div>
<div class="card-body">
@if(!empty($errors->all()))
<div class="alert alert-danger">
{{ Html::ul($errors->all())}}
</div>
@endif
<div class="row">
<div class="col-md-6">
<div class="form-group">
<div class="form-group">
<label for="data1">Task</label>
<input id="data1" type="text" value="{{ $task['taskno'].'. '.$task['desc'] }}" class="form-control" disabled />
</div>
</div>
<div class="form-group">
{{ Form::label('status', 'Status: ') }}
<div>{{ Form::radio('status', 'Passed' , $entity['status']=='Passed') }}
Passed &nbsp;&nbsp;
{{ Form::radio('status', 'Failed' , $entity['status']=='Failed') }}
Failed</div>
</div>
<div class="form-group">
{{ Form::label('duration', 'Duration') }}
{{ Form::number('duration', $entity['duration'], ['class'=>'form-control', 'placeholder'=>'Duration Time in Minutes']) }}
</div>
<div class="form-group">
{{ Form::label('image', 'Captured Image of Evidence (jpg,png). Left it blank if does not change') }}
{{ Form::file('image', ['class'=>'form-control']) }}
</div>
<div class="form-group">
{{ Form::label('comment', 'Task Comment') }}
{{ Form::textarea('comment', $entity['comment'], ['class'=>'form-control', 'placeholder'=>'Task Comment', 'rows'=>5]) }}
</div>
</div>
</div>
</div>
<div class="card-footer">
<input type="button" value="Back" onclick="history.back()" class="btn btn-outline-info">
<input type="hidden" name="taskid" value="{{ $entity['taskid'] }}" />
{{ Form::submit('Save', ['class' => 'btn btn-primary pull-right']) }}
</div>
</div>
<!-- </form> -->
{{ Form::close() }}
</div>
</div>
@endsection

View File

@ -1,170 +0,0 @@
@extends('student/fluttercourse/home')
@section('content')
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">Student's Task Results Submission</h3>
</div>
<div class="card-body">
@if (Session::has('message'))
<div id="alert-msg" class="alert alert-success alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"><EFBFBD></button>
{{ Session::get('message') }}
</div>
@endif
{{ Form::open(['method' => 'GET']) }}
<div class="form-group">
{!! Form::label('topic', 'Topic:') !!}
{!! Form::select('topicList', $items , $filter, ['class' => 'form-control', 'id' => 'topicList', 'onchange' => 'this.form.submit();']) !!}
{{ Form::close() }}
<!--
{!! Form::label('topic', 'Topic:') !!}
{!! Form::select('topic', $items , null, ['class' => 'form-control', 'onchange' => 'doSomething(this)']) !!}
-->
</div>
@php ($complete = true)
<div class="row">
<div class="col-md-12">
{!! Form::label('tit1', 'Result of Each Task:') !!}
@if ($valid=='0')
<a class="btn btn-success" href="{{ URL::to('/student/results/create/'.$filter)}}"><i class="fa fa-plus"></i>&nbsp;Submit a Task Result</a>
@endif
<table class="table table-bordered table-hover">
<thead>
<tr class="text-center">
<th>Task No.</th>
<th>Description</th>
<th>Status</th>
<th>Duration</th>
<th>Evidence</th>
<th>Comment</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach($entities as $entity)
<tr>
<td class="text-center">{{ $entity['taskno'] }}</td>
<td>{{ $entity['desc'] }}</td>
@if ($valid != '0')
@php ($complete = false)
<td colspan="5" color="red"><b><i>Task result was already validated</i></b></td>
@elseif ($entity['status']=='')
@php ($complete = false)
<td colspan="5" color="red"><b><i>Not yet uploaded</i></b></td>
@else
<td>{{ $entity['status'] }}</td>
<td>{{ $entity['duration'] }} minutes</td>
<td class="text-center"><img src="{{ asset('storage/'.$entity['imgFile']) }}" width="120"/></td>
<td>{{ $entity['comment'] }}</td>
<td class="text-center">
<form method="POST" action="{{ URL::to('/student/results/'.$entity['id']) }}">
{{ csrf_field() }}
<input type="hidden" name="_method" value="DELETE" />
<input type="hidden" name="topic" value="{{ $filter }}" />
<div class="btn-group">
<!--<a class="btn btn-info" href="{{ URL::to('/student/results/'.$entity['id']) }}"><i class="fa fa-eye"></i></a>
-->
<a class="btn btn-success" href="{{ URL::to('/student/results/'.$entity['id'].'/edit') }}"><i class="fa fa-pencil-alt"></i></a>
<button type="submit" class="btn btn-danger"><i class="fa fa-trash"></i></button>
</div>
</form>
</td>
@endif
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
<div class="row">
</div>
<div class="row">
<div class="col-md-12">
{!! Form::label('tit2', 'Learning Files Submission:') !!}
@if ($valid=='0')
<a class="btn btn-info" href="{{ URL::to('/student/lfiles/create/'.$filter)}}"><i class="fa fa-plus"></i>&nbsp;Submit a Learning File</a>
@endif
<table class="table table-bordered table-hover">
<thead>
<tr class="text-center">
<th>No.</th>
<th>File Name</th>
<th>Folder Path</th>
<th>Description</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach($lfiles as $index => $lfile)
<tr>
<td class="text-center">{{ $index +1 }}</td>
<td>{{ $lfile['fileName'] }}</td>
<td>{{ $lfile['path'] }}</td>
<td>{{ $lfile['desc'] }}</td>
@if ($valid!='0')
@php ($complete = false)
<td colspan="2" color="red"><b><i>Task result was already validated</i></b></td>
@elseif ($lfile['rscfile']=='')
@php ($complete = false)
<td colspan="2" color="red"><b><i>Not yet submitted</i></b></td>
@else
<td class="text-center">
<span class="btn btn-warning"><i class="fa fa-check-circle"></i></span>
</td>
<td class="text-center">
<form method="POST" action="{{ URL::to('/student/lfiles/'.$lfile['id']) }}">
{{ csrf_field() }}
<input type="hidden" name="_method" value="DELETE" />
<input type="hidden" name="topic" value="{{ $filter }}" />
<div class="btn-group">
<!--<a class="btn btn-info" href="{{ URL::to('/student/results/'.$entity['id']) }}"><i class="fa fa-eye"></i></a>
-->
<a class="btn btn-success" href="{{ URL::to('/student/lfiles/'.$lfile['id'].'/edit') }}"><i class="fa fa-pencil-alt"></i></a>
<button type="submit" class="btn btn-danger"><i class="fa fa-trash"></i></button>
</div>
</form>
</td>
@endif
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
<div class="row">
<div class="col-md-12">
@if ($valid=='0')
@if ($complete)
<a class="btn btn-danger" href="{{ URL::to('/student/lfiles/valid/'.$filter)}}"><i class="fa fa-check-square"></i>&nbsp;Validate This Learning</a>
@else
<span class="btn btn-block" ><i class="fa fa-frown"></i>&nbsp;Submission is Not Complete</a>
@endif
@else
<span class="btn btn-block" ><i class="fa fa-smile"></i>&nbsp;Validation is Success</a>
@endif
</div>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -1,42 +0,0 @@
@extends('admin/admin')
@section('content')
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">A Learning Task Detail</h3>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="data1">Task Id</label>
<input id="data1" type="text" value="{{ $data['id'] }}" class="form-control" disabled />
</div>
<div class="form-group">
<label for="data2">Task Number</label>
<input id="data2" type="text" value="{{ $data['taskno'] }}" class="form-control" disabled />
</div>
<div class="form-group">
<label for="data3">Description</label>
<input id="data3" type="text" value="{{ $data['desc'] }}" class="form-control" disabled />
</div>
<div class="form-group">
<label for="data4">Topic</label>
<input id="data4" type="text" value="{{ $topic['name'] }}" class="form-control" disabled />
</div>
</div>
</div>
</div>
<div class="card-footer">
<input type="button" value="Back" onclick="history.back()" class="btn btn-outline-info">
<!--
<a href="{{ URL::to('admin/topic') }}" class="btn btn-outline-info">Back</a>
-->
</div>
</div>
</div>
</div>
@endsection

View File

@ -2,9 +2,9 @@
<!-- Brand Logo -->
<a href="#" class="brand-link">
<img src="{{asset('lte/dist/img/iclop-logo.png')}}" alt="iCLOP logo" class="brand-image elevation-3"
style="opacity: .8">
style="width:120px;height:60px;">
<br>
<span class="brand-text font-weight-light" style="color: blueviolet"> &nbsp; &nbsp; Flutter Course</span>
<span class="brand-text font-weight-light" style="font-size:160%;"> &nbsp; Python Course</span>
</a>
<!-- Sidebar -->
@ -27,21 +27,27 @@
<li class="treeview">
<a href="#" class="nav-link" style="background-color:powderblue;color:black;">
<i class="nav-icon fas fa-space-shuttle"></i>
<p><b>Start Learning</b></p>
<a href="#" class="nav-link" style="background-color:#dce775;color:black;">
<i class="nav-icon fab fa-python"></i>
<p>&nbsp;<b>Learning Basic Python</b>
</p>
</a>
<ul role="menu" class="nav nav-pills nav-sidebar flex-column">
<li class="nav-item">
<a href="{{URL::to('student/fluttercourse/tasks')}}" class="nav-link"><i class="nav-icon fas fa-angle-right"></i>
<p>Download Materials</p>
<a href="{{URL::to('student/pythoncourse/python/task')}}" class="nav-link">
<i class="nav-icon fas fa-angle-right"></i>
<p>
Start Learning <span class="right badge badge-danger">New</span>
</p>
</a>
</li>
<li class="nav-item">
<a href="{{URL::to('student/fluttercourse/results')}}" class="nav-link">
<i class="nav-icon fas fa-angle-right"></i>
<p>Submit Your Project </p>
<a href="{{URL::to('student/pythoncourse/python/result')}}" class="nav-link"><i
class="nav-icon fas fa-angle-right"></i>
<p>Learning Results
</p>
</a>
</li>
</ul>

View File

@ -1,127 +0,0 @@
@extends('student/fluttercourse/home')
@section('content')
<div class="row">
<div class="col-12">
<div class="card-header">
<h3 class="card-title">Start Learning Android Programming with iCLOP</h3>
</div>
<div class="card-body">
@if (Session::has('message'))
<div id="alert-msg" class="alert alert-success alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"><EFBFBD></button>
{{ Session::get('message') }}
</div>
@endif
{{ Form::open(['method' => 'GET']) }}
<div class="form-group">
{!! Form::label('topic', 'Learning Topic:') !!}
{!! Form::select('topicList', $items , $filter, ['class' => 'form-control', 'id' => 'topicList', 'onchange' => 'this.form.submit();']) !!}
<div class="form-group">
<label for="description">Description</label>
<textarea id="desc" class="form-control" disabled rows="2">{{ $topic['desc'] }}</textarea>
</div>
{{ Form::close() }}
<!--
{!! Form::label('topic', 'Topic:') !!}
{!! Form::select('topic', $items , null, ['class' => 'form-control', 'onchange' => 'doSomething(this)']) !!}
-->
</div>
<div class="row">
<div class="col-md-12">
<table class="table table-bordered table-hover">
<thead>
<tr class="text-center">
<th></th>
<th>Guide Documents</th>
<th>Test Files</th>
<th>Supplement Files</th>
<th>Other Files</th>
</tr>
</thead>
<tbody>
<tr>
<td>Resource for <b>{{ $topic['name'] }}</b></td>
<td class="text-center">
@if($topic['guide'] !='')
<div class="btn-group">
<a class="btn btn-success" href="{{ URL::to('/download/guide/'.str_replace('learning/','',$topic['guide']).'/'.str_replace(' ','',$topic['name'])) }}"><i class="fa fa-download"></i>&nbsp;Download</a>
</div>
@else
Empty
@endif
</td>
<td class="text-center">
@if($topic['testfile'] !='')
<div class="btn-group">
<a class="btn btn-warning" href="{{ URL::to('/download/test/'.str_replace('learning/','',$topic['testfile']).'/'.str_replace(' ','',$topic['name'])) }}"><i class="fa fa-download"></i>&nbsp;Download</a>
</div>
@else
Empty
@endif
</td>
<td class="text-center">
@if($topic['supplement'] !='')
<div class="btn-group">
<a class="btn btn-primary" href="{{ URL::to('/download/supp/'.str_replace('learning/','',$topic['supplement']).'/'.str_replace(' ','',$topic['name'])) }}"><i class="fa fa-download"></i>&nbsp;Download</a>
</div>
@else
Empty
@endif
</td>
<td class="text-center">
@if($topic['other'] !='')
<div class="btn-group">
<a class="btn btn-info" href="{{ URL::to('/download/other/'.str_replace('learning/','',$topic['other']).'/'.str_replace(' ','',$topic['name'])) }}" ><i class="fa fa-download"></i>&nbsp;Download</a>
</div>
@else
Empty
@endif
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="row">
<div class="col-md-12">
<table class="table table-bordered table-hover">
<thead>
<tr class="text-center">
<th>Task No.</th>
<th>Description</th>
<th>Topic Name</th>
<th>Show</th>
</tr>
</thead>
<tbody>
@foreach($entities as $entity)
<tr>
<td class="text-center">{{ $entity['taskno'] }}</td>
<td>{{ $entity['desc'] }}</td>
<td>{{ $entity['name'] }}</td>
<td class="text-center">
<div class="btn-group">
<a class="btn btn-info" href="{{ URL::to('/student/tasks/'.$entity['id']) }}"><i class="fa fa-eye"></i></a>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -1,42 +0,0 @@
@extends('admin/admin')
@section('content')
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">A Learning Task Detail</h3>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="data1">Task Id</label>
<input id="data1" type="text" value="{{ $data['id'] }}" class="form-control" disabled />
</div>
<div class="form-group">
<label for="data2">Task Number</label>
<input id="data2" type="text" value="{{ $data['taskno'] }}" class="form-control" disabled />
</div>
<div class="form-group">
<label for="data3">Description</label>
<input id="data3" type="text" value="{{ $data['desc'] }}" class="form-control" disabled />
</div>
<div class="form-group">
<label for="data4">Topic</label>
<input id="data4" type="text" value="{{ $topic['name'] }}" class="form-control" disabled />
</div>
</div>
</div>
</div>
<div class="card-footer">
<input type="button" value="Back" onclick="history.back()" class="btn btn-outline-info">
<!--
<a href="{{ URL::to('admin/topic') }}" class="btn btn-outline-info">Back</a>
-->
</div>
</div>
</div>
</div>
@endsection

View File

@ -1,66 +0,0 @@
@extends('student/home')
@section('content')
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">Validation Result of Learning Result</h3>
<div class="card-tools">
</div>
</div>
<div class="card-body">
@if (Session::has('message'))
<div id="alert-msg" class="alert alert-success alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"><EFBFBD></button>
{{ Session::get('message') }}
</div>
@endif
<div class="row">
<div class="col-md-12">
<table class="table table-bordered table-hover">
<thead>
<tr class="text-center">
<th>Topic Name</th>
<th>Submission Result</th>
<th>Duration</th>
<th>Validation Result</th>
<th>Validation Detail</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach($entities as $entity)
<tr>
<td>{{ $entity['name'] }}</td>
<td>{{ $entity['passed'] }} Task(s) Passed,<br/>{{ $entity['failed'] }} Task(s) Failed</td>
<td>Total: {{ $entity['tot_duration'] }} minute(s),<br/>Average: {{ round($entity['avg_duration'],2) }} minute(s)/task</td>
<td>
@if ($entity['vpassed']=='')
WAITING
@else
{{ $entity['vpassed'] }} Task(s) Passed,<br/>{{ $entity['vfailed'] }} Task(s) Failed
@endif
</td>
<td>{!! nl2br($entity['checkresult']) !!}</td>
<td>{{ $entity['checkstat'] }}</td>
<td class="text-center">
<div class="btn-group">
<a class="btn btn-info" href="{{ URL::to('/student/valid/'.$entity['id']) }}"><i class="fa fa-eye">&nbsp;Show Detail</i></a>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -1,62 +0,0 @@
@extends('student/home')
@section('content')
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">Validation Result Detail [Student name: {{ $student['name'] }}, Topic: {{ $topic['name'] }} ]</h3>
<div class="card-tools">
</div>
</div>
<div class="card-body">
@if (Session::has('message'))
<div id="alert-msg" class="alert alert-success alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"><EFBFBD></button>
{{ Session::get('message') }}
</div>
@endif
<div class="row">
<div class="col-md-12">
<table class="table table-bordered table-hover">
<thead>
<tr class="text-center">
<th>No.</th>
<th>Test File</th>
<th>Taks Name</th>
<th>Result</th>
<th>Report</th>
<th>Exec Time</th>
<th>Duration</th>
</tr>
</thead>
<tbody>
@foreach($entities as $index => $entity)
<tr>
<td>{{ $index+1 }}</td>
<td>{{ $entity['fileName'] }}</td>
<td>{{ $entity['taskno'].'. '.$entity['desc'] }}</td>
<td>{{ $entity['status'] }}</td>
<td>{!! nl2br(e($entity['report'])) !!}</td>
<td>{{ $entity['created_at'] }}</td>
<td>{{ $entity['duration'] }} seconds</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
<div class="card-footer">
<input type="button" value="Back" onclick="history.back()" class="btn btn-outline-info">
<!--
<a href="{{ URL::to('admin/topic') }}" class="btn btn-outline-info">Back</a>
-->
</div>
</div>
</div>
</div>
@endsection

View File

@ -153,19 +153,19 @@ Route::group(['middleware' => ['auth', 'student']], function() {
/** Python */
//Tampilan topik
Route::get('/student/pythoncourse', 'StudentController@pythoncourse');
Route::get('/student/python/task', [ExercisePythonController::class, 'index']);
Route::get('/student/pythoncourse/python/task', [ExercisePythonController::class, 'index']);
//Tampilan detail percobaan
Route::get('/student/python/taskdetail/{id_topik}', [ExercisePythonController::class, 'detail_percobaan']);
Route::get('/student/pythoncourse/python/taskdetail/{id_topik}', [ExercisePythonController::class, 'detail_percobaan']);
//Tampilan pengerjaan (Teks Editor)
Route::get('/student/python/pengerjaan/{id_percobaan}', [ExercisePythonController::class, 'teks_editor']);
Route::get('/student/pythoncourse/python/pengerjaan/{id_percobaan}', [ExercisePythonController::class, 'teks_editor']);
// tampilan feedback
Route::get('/student/python/feedback/{id_topik}/{id_percobaan}', [ExercisePythonController::class, 'feedback']);
Route::get('/student/pythoncourse/python/feedback/{id_topik}/{id_percobaan}', [ExercisePythonController::class, 'feedback']);
//Compile Program
Route::get('/student/python-compile', [ExercisePythonController::class, 'compiler']);
//tampilan data validation
Route::get('student/python/tampil-data-validation', [ExercisePythonController::class, 'dataValidation']);
Route::get('student/pythoncourse/python/tampil-data-validation', [ExercisePythonController::class, 'dataValidation']);
//tampilan result mahasiswa
Route::get('student/python/result', [ResultController::class, 'index']);
Route::get('student/pythoncourse/python/result', [ResultController::class, 'index']);
Route::get('pythonfeedback', [ExercisePythonController::class, 'feedback_submit']);