shell bypass 403
@extends(theme('layouts.full_screen_master'))
@section('title')
{{Settings('site_title') ? Settings('site_title') : 'Infix LMS'}} | {{ $course->title}}
@endsection
@section('css')
<link href="{{asset('public/frontend/infixlmstheme/css/full_screen.css')}}" rel="stylesheet"/>
<link href="{{asset('public/frontend/infixlmstheme/css/class_details.css')}}" rel="stylesheet"/>
<link href="{{asset('public/backend/css/summernote-bs4.min.css')}}" rel="stylesheet">
<style>
.default-font {
font-family: "Jost", sans-serif;
font-weight: normal;
font-style: normal;
font-weight: 400;
}
.primary_checkbox {
z-index: 99;
}
@media (max-width: 767.98px) {
.contact_btn {
margin: 0 !important;
justify-content: space-between;
}
.mobile_progress {
margin: 0 !important;
}
#video-placeholder {
height: 300px;
}
}
.course__play_warp.courseListPlayer:before {
background-color: transparent;
}
@media (max-width: 767.98px) {
.mobile-min-height {
height: 400px !important;
}
}
#ExternalHeaderViewerChromeTopBars {
display: none !important;
}
.quiz_questions_wrapper {
height: 100%;
}
.question_number_lists {
max-height: 320px;
overflow: auto;
}
</style>
@endsection
@section('mainContent')
@push('js')
<script>
var completeRequest = false;
</script>
@endpush
@php
if ($lesson->lessonQuiz->random_question==1){
$questions =$lesson->lessonQuiz->assignRand;
}else{
$questions =$lesson->lessonQuiz->assign;
}
@endphp
<script>
@if(auth()->check())
window.full_name = "{{auth()->user()->name}}";
window.course_name = "{{ $course->title}}";
@if(isModuleActive('Org'))
window.org_chart_name = "{{auth()->user()->branch->group}}";
@endif
@else
window.full_name = "Guest";
window.course_name = "{{ $course->title}}";
@if(isModuleActive('Org'))
window.org_chart_name = "";
@endif
@endif
</script>
<header>
<div id="sticky-header" class="header_area">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="header__wrapper flex-wrap">
<!-- header__left__start -->
<div class="header__left d-flex align-items-center">
<div class="logo_img">
<a href="{{url('/')}}">
<img class="p-2" style="width: 200px"
src="{{getCourseImage(Settings('logo') )}}"
alt="{{ Settings('site_name') }}">
</a>
</div>
<div class="category_search d-flex category_box_iner">
<div class="input-group-prepend2 pl-3 ">
<a class="headerTitle"
href="{{courseDetailsUrl($course->id,$course->type,$course->slug)}}"
style="padding-top: 3px;">
<h4 class="headerTitle">{{$course->title}}</h4>
</a>
</div>
</div>
</div>
<div class="header__right">
<div class="contact_wrap d-flex align-items-center flex-wrap">
<div class="contact_btn d-flex align-items-center flex-wrap">
@if(isset($lessons))
<label class="lmsSwitch_toggle pr-2" for="autoNext">
<input type="checkbox" id="autoNext" checked>
<div class="slider round"></div>
</label>
<span class="pl-2 text-nowrap">Auto Next</span>
<div class="pl-20 text-right ml-3 d-flex align-items-center">
@php
$last_key=array_key_last($lesson_ids);
$last_previous_one=array_key_last($lesson_ids)-1;
$current_page=(int)showPicName(Request::url());
$current_index=array_search(showPicName(Request::url()), $lesson_ids);
@endphp
@if (0==array_search($current_page,$lesson_ids))
<a href="#" disabled="disabled"
class="theme_btn theme_button_disabled small_btn2 p-2 m-1 disabled">Previous</a>
@else
<a href="#"
onclick="goFullScreen({{$course->id}},{{$lesson_ids[$current_index-1]}})"
class="theme_btn small_btn2 p-2 m-1">Previous</a>
@endif
@if (array_search($current_page,$lesson_ids) < array_search(end($lesson_ids),$lesson_ids) )
<a href="#" id="next_lesson_btn"
onclick="goFullScreen({{$course->id}},{{$lesson_ids[$current_index+1]}})"
class="theme_btn small_btn2 p-2 m-1">Next</a>
@else
<a href="#" disabled
class="theme_btn theme_button_disabled small_btn2 p-2 m-1 disabled"
style="opacity: 1">Next</a>
@endif
</div>
@endif
@if (Auth::check())
@if(Auth::user()->role_id==3)
@if (!in_array(Auth::user()->id,$reviewer_user_ids))
<a href="" data-toggle="modal"
data-target="#courseRating"
class=" headerSub p-2 mr-3 text-nowrap">
<i class="fa fa-star pr-2"></i>
{{__('frontend.Leave a rating')}}
</a>
@endif
@endif
@endif
<a href="" class="mr-3 ml-3 mobile_progress">
<div class="progress p-2" data-percentage="{{$percentage}}">
<span class="progress-left">
<span class="progress-bar"></span>
</span>
<span class="progress-right">
<span class="progress-bar"></span>
</span>
<div class="progress-value">
<div class="headerSubProcess">
{{$percentage}}%
</div>
</div>
</div>
</a>
<a href="#" data-toggle="modal"
data-target="#ShareLink"
class="theme_btn small_btn2 p-2 m-1">
<i class="fa fa-share"></i>
Share
</a>
</div>
</div>
</div>
<!-- header__right_end -->
</div>
</div>
</div>
</div>
</div>
</header>
<div class="mobile_display_content">
<div class="container">
<div class="row">
<div class="col-12">
<h4 class="mobile_text">
{{$course->title}}
</h4>
</div>
<div class="col-12">
<div class="next_prev_button">
<a href="{{courseDetailsUrl(@$course->id,@$course->type,@$course->slug)}}"
class="theme_btn d-inline-flex align-items-center">
<i class="ti-angle-left mr-1"></i>
{{__('frontend.Course Details')}}
</a>
<a href="{{route('myCourses')}}" class="theme_btn d-inline-flex align-items-center">
{{__('frontend.My Course')}}
<i class="ti-angle-right ml-1"></i>
</a>
</div>
</div>
</div>
</div>
</div>
<div class="course_fullview_wrapper">
@php
// 'Youtube','Vimeo','Self','URL'
$video_lesson_hosts=['Iframe','Image','PDF','Word','Excel','PowerPoint','Text','Zip','GoogleDrive'];
@endphp
@if (in_array($lesson->host,$video_lesson_hosts))
<button
class="theme_btn small_btn2 p-2 m-1 top_right_btn completeAndPlayNext"> {{__('frontend.Mark as Complete')}}</button>
@endif
@if ($lesson->is_quiz==1)
@if(count($result)!=0)
<div class="quiz_score_wrapper w-100 mt_70">
@if(!isset($_GET['done']))
<!-- quiz_test_header -->
<div class="quiz_test_header">
<h3>{{__('student.Your Exam Score')}}</h3>
</div>
<div class="quiz_test_body">
<h3>{{__('student.Congratulations! You’ve completed')}} {{$course->quiz->title}}</h3>
@if ($result['publish']==1)
<div class="">
<div class="row">
<div class="col-xl-12">
<div class="score_view_wrapper">
<div class="single_score_view">
<p>{{__('student.Exam Score')}}:</p>
<ul>
<li class="mb_15">
<label class="primary_checkbox2 d-flex">
<input checked="" type="checkbox" disabled>
<span class="checkmark mr_10"></span>
<span
class="label_name">{{$result['totalCorrect']}} {{__('student.Correct Answer')}}</span>
</label>
</li>
<li>
<label class="primary_checkbox2 error_ans d-flex">
<input checked="" name="qus" type="checkbox"
disabled>
<span class="checkmark mr_10"></span>
<span
class="label_name">{{$result['totalWrong']}} {{__('student.Wrong Answer')}}</span>
</label>
</li>
</ul>
</div>
<div class="single_score_view d-flex">
<div class="row">
<div class="col md-2">
<p>{{__('frontend.Start')}}</p>
<span> {{$result['start_at']}} </span>
</div>
<div class="col md-2">
<p>{{__('frontend.Finish')}}</p>
<span> {{$result['end_at']}} </span>
</div>
<div class="col md-2">
<p class="nowrap">{{__('frontend.Duration')}}
({{__('frontend.Minute')}})</p>
<h4 class="f_w_700 "> {{$result['duration']}} </h4>
</div>
<div class="col md-2">
<p>{{__('frontend.Mark')}}</p>
<h4 class="f_w_700 "> {{$result['score']}}
/{{$result['totalScore']}} </h4>
</div>
<div class="col md-2">
<p>{{__('frontend.Percentage')}}</p>
<h4 class="f_w_700 "> {{$result['mark']}}% </h4>
</div>
<div class="col md-2">
<p>{{__('frontend.Rating')}}</p>
<h4 class="f_w_700 theme_text {{$result['text_color']}}"> {{$result['status']}} </h4>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sumit_skip_btns d-flex align-items-center">
@if (isset($result) && $result['status']!='Failed')
<form action="{{route('lesson.complete')}}" method="post">
@csrf
<input type="hidden" value="{{$course->id}}" name="course_id">
<input type="hidden" value="{{$lesson->id}}" name="lesson_id">
<input type="hidden" value="1" name="status">
<button type="submit"
class="theme_btn mr_20">{{__('student.Done')}}</button>
</form>
@endif
@if(count($preResult)!=0)
<button type="button"
class="theme_line_btn showHistory mr_20">{{__('frontend.View History')}}</button>
@endif
@if($lesson->lessonQuiz->show_result_each_submit==1)
<a href="{{route('quizResultPreview',$_GET['quiz_result_id']??0)}}"
target="_blank"
class=" font_1 font_16 f_w_600 theme_text3 submit_q_btn">{{__('student.See Answer Sheet')}}</a>
@endif
</div>
@else
<span>{{__('quiz.Please wait till completion marking process')}}</span>
@endif
@if(count($preResult)!=0)
<div id="historyDiv" class="pt-5 " style="display:none;">
<table class="table table-bordered">
<tr>
<th>Date</th>
<th>Mark</th>
<th>Percentage</th>
<th>Rating</th>
@if($lesson->lessonQuiz->show_result_each_submit==1)
<th>Details</th>
@endif
</tr>
@foreach($preResult as $pre)
<tr>
<td>{{$pre['date']}}</td>
<td>{{$pre['score']}}/{{$pre['totalScore']}}</td>
<td>{{$pre['mark']}}%</td>
<td class="{{$pre['text_color']}}">{{$pre['status']}}</td>
@if($lesson->lessonQuiz->show_result_each_submit==1)
<td>
<a href="{{route('quizResultPreview',$pre['quiz_test_id'])}}"
class=" font_1 font_16 f_w_600 theme_text3 submit_q_btn">{{__('student.See Answer Sheet')}}</a>
</td>
@endif
</tr>
@endforeach
</table>
</div>
@endif
</div>
@else
<h3 class="text-center">{{__('student.Congratulations! You’ve completed')}} {{$lesson->lessonQuiz->title}}</h3>
@endif
</div>
@else
<div class="quiz_questions_wrapper w-100 mt_70 ml-5 mr-5">
<!-- quiz_test_header -->
@if($alreadyJoin!=0 && $lesson->lessonQuiz->multiple_attend==0)
<div class="quiz_test_header d-flex justify-content-between align-items-center">
<div class="quiz_header_left text-center">
<h3>{{__('frontend.Sorry! You already attempted this quiz')}}</h3>
</div>
</div>
@else
<div class="quiz_test_header d-flex justify-content-between align-items-center">
<div class="quiz_header_left">
<h3>{{$lesson->lessonQuiz->title}}
</h3>
</div>
<div class="quiz_header_right">
<span class="question_time">
@php
$timer =0;
if(!empty($lesson->lessonQuiz->question_time_type==1)){
$timer=$lesson->lessonQuiz->question_time;
}else{
$timer= $lesson->lessonQuiz->question_time*count($questions);
}
@endphp
<span id="timer">{{$timer}}:00</span> min</span>
<p>{{__('student.Left of this Section')}}</p>
</div>
</div>
<!-- quiz_test_body -->
<form action="{{route('quizSubmit')}}" method="POST" id="quizForm">
<input type='hidden' name="from" value="course">
<input type="hidden" name="courseId" value="{{$course->id}}">
<input type="hidden" name="quizType" value="1">
<input type="hidden" name="quizId" value="{{$lesson->lessonQuiz->id}}">
<input type="hidden" name="question_review" id="question_review"
value="{{$lesson->lessonQuiz->question_review}}">
<input type="hidden" name="start_at" value="">
<input type="hidden" name="quiz_test_id" value="">
<input type="hidden" name="quiz_start_url" value="{{route('quizTestStart')}}">
<input type="hidden" name="single_quiz_submit_url" value="{{route('singleQuizSubmit')}}">
@csrf
<div class="quiz_test_body d-none">
<div class="tabControl">
<div class="row">
<div class="col-md-6">
<div class="tab-content" id="pills-tabContent">
@php
$count =1;
@endphp
@if(isset($questions))
@foreach($questions as $key=>$assign)
@php
$options =[];
if (isset($assign->questionBank->questionMu)){
$options =$assign->questionBank->questionMu;
}
@endphp
<div
class="tab-pane fade {{$key==0?'active show':''}} singleQuestion"
data-qus-id="{{$assign->id}}"
data-qus-type="{{$assign->questionBank->type}}"
id="pills-{{$assign->id}}" role="tabpanel"
aria-labelledby="pills-home-tab{{$assign->id}}">
<!-- content -->
<div class="question_list_header">
</div>
<div class="multypol_qustion mb_30">
<h4 class="font_18 f_w_700 mb-0"> {!! @$assign->questionBank->question !!}</h4>
<small>({{__('quiz.Choose')}} <span
class="questionAnsTotal text-danger font-weight-bold">
{{count($options->where('status',1))}}</span>
@if(count($options->where('status',1)) <=1)
{{__('quiz.answer')}})
@else
{{__('quiz.answers')}})
@endif
</small>
</div>
<input type="hidden" class="question_type"
name="type[{{$assign->questionBank->id}}]"
value="{{ @$assign->questionBank->type}}">
<input type="hidden" class="question_id"
name="question[{{$assign->questionBank->id}}]"
value="{{ @$assign->questionBank->id}}">
@if($assign->questionBank->type=="M")
<ul class="quiz_select">
@if(isset($assign->questionBank->questionMu))
@foreach(@$assign->questionBank->questionMu as $option)
<li>
<label
class="primary_bulet_checkbox d-flex">
<input class="quizAns"
name="ans[{{$option->question_bank_id}}][]"
type="checkbox"
value="{{$option->id}}">
<span
class="checkmark mr_10"></span>
<span
class="label_name">{{$option->title}} </span>
</label>
</li>
@endforeach
@endif
</ul>
@else
<div style="margin-bottom: 20px;">
<textarea class="textArea lms_summernote quizAns"
id="editor{{$assign->id}}"
cols="30" rows="10"
name="ans[{{$assign->questionBank->id}}]"></textarea>
</div>
@endif
@if(!empty($assign->questionBank->image))
<div class="ques_thumb mb_50">
<img
src="{{asset($assign->questionBank->image)}}"
class="img-fluid" alt="">
</div>
@endif
<div
class="sumit_skip_btns d-flex align-items-center mb_50">
@if(count($questions)!=$count)
<span
class="theme_btn small_btn mr_20 next"
data-question_id="{{$assign->questionBank->id}}"
data-assign_id="{{$assign->id}}"
data-question_type="{{$assign->questionBank->type}}"
id="next">{{__('student.Continue')}}</span>
<span
class=" font_1 font_16 f_w_600 theme_text3 submit_q_btn skip"
id="skip">{{__('student.Skip')}}
{{__('frontend.Question')}}</span>
@else
<button type="button"
data-question_id="{{$assign->questionBank->id}}"
data-assign_id="{{$assign->id}}"
data-question_type="{{$assign->questionBank->type}}"
class="submitBtn theme_btn small_btn mr_20">
{{__('student.Submit')}}
</button>
@endif
</div>
<!-- content::end -->
</div>
@php
$count++;
@endphp
@endforeach
@endif
</div>
</div>
<div class="col-xl-6">
@php
$count2=1;
@endphp
<div class="question_list_header">
<div class="question_list_top">
<p>Question <span id="currentNumber">{{$count2}}</span>
out
of {{count($questions)}}</p>
</div>
</div>
<div class="nav question_number_lists" id="nav-tab"
role="tablist">
@if(isset($questions))
@foreach($questions as $key2=>$assign)
<a class="nav-link questionLink link_{{$assign->id}} {{$key2==0?'skip_qus':'pouse_qus'}}"
data-toggle="tab" href="#pills-{{$assign->id}}"
role="tab" aria-controls="nav-home"
data-qus="{{$assign->id}}"
aria-selected="true">{{$count2}}</a>
@php
$count2++;
@endphp
@endforeach
@endif
</div>
</div>
</div>
</div>
</div>
</form>
@endif
</div>
@include(theme('partials._quiz_submit_confirm_modal'))
@include(theme('partials._quiz_start_confirm_modal'))
@endif
@elseif($lesson->is_assignment==1)
@if(isModuleActive('Assignment'))
@php
$assignment_info=$lesson->assignmentInfo;
if (Auth::check()) {
$submit_info=Modules\Assignment\Entities\InfixSubmitAssignment::assignmentLastSubmitted($assignment_info->id,Auth::user()->id);
if (Auth::user()->role_id==1) {
$sty="-150px";
} else {
if ($submit_info!=null) {
$sty="50px";
} else {
$sty="280px";
}
}
}else{
$submit_info=null;
if ($submit_info!=null) {
$sty="50px";
} else {
$sty="280px";
}
}
@endphp
<div class="col-lg-12 pl-5" style="margin-top: {{@$sty}};">
<div class="row" style="visibility: hidden">
<div class="col-12">
<div class="section__title3 mb_40">
<h3 class="mb-0 mt-5">{{__('assignment.Assignment')}} {{__('common.Details')}}</h3>
<h4></h4>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="section__title3 mb_40">
<h3 class="mb-0 mt-5"></h3>
<h4></h4>
</div>
</div>
</div>
<style>
.assignment_info {
margin-top: 10px;
}
</style>
<div class="table-responsive-md table-responsive-sm assignment-info-table">
<table class="table">
<thead><h3 class="mb-0 mt-5">{{__('assignment.Assignment')}} {{__('common.Details')}}</h3>
</thead>
<tr class="nowrap">
<td>
{{__('common.Title')}}
</td>
<td>
: {{@$assignment_info->title}}
</td>
<td>
{{__('courses.Course')}}
</td>
<td>
@if ($assignment_info->course->title)
: {{@$assignment_info->course->title}}
@else
: Not Assigned
@endif
</td>
</tr>
<tr class="nowrap">
<td>
{{ __('assignment.Marks') }}
</td>
<td>
: {{@$assignment_info->marks}}
</td>
<td>
{{ __('assignment.Min Percentage') }}
</td>
<td>
: {{@$assignment_info->min_parcentage}}%
</td>
</tr>
@if ($submit_info!=null)
<tr class="nowrap">
<td>
{{ __('assignment.Obtain Marks') }}
</td>
<td>
: {{@$submit_info->marks}}
</td>
<td>
{{ __('common.Status') }}
</td>
<td>
:
@if ($submit_info->assigned->pass_status==1)
Pass
@elseif($submit_info->assigned->pass_status==2)
Fail
@else
Not Marked
@endif
</td>
</tr>
@endif
<tr>
<td>
{{ __('assignment.Submit Date') }}
</td>
<td>
: {{showDate(@$assignment_info->last_date_submission)}}
</td>
<td>
{{__('assignment.Attachment')}}
</td>
<td>
@if (file_exists($assignment_info->attachment))
: <a href="{{asset(@$assignment_info->attachment)}}"
download="{{@$assignment_info->title}}_attachment">{{__('common.Download')}}</a>
@endif
</td>
</tr>
</table>
</div>
<div class="row assignment_info">
<div class="col-lg-2">
{{__('assignment.Description')}}
</div>
<div class="col-lg-12">
{!! @$assignment_info->description !!}
</div>
</div>
<hr>
@php
$todate = today()->format('Y-m-d')
@endphp
@if (isset($assignment_info->last_date_submission) && Auth::user()->role_id==3)
@if ($todate <= $assignment_info->last_date_submission || isset($submit_info) && $submit_info->assigned->pass_status==0)
@include(theme('partials._assignment_submit_section'))
@endif
@else
@if (isset($submit_info) && $submit_info->assigned->pass_status==0 && Auth::user()->role_id==3)
@include(theme('partials._assignment_submit_section'))
@endif
@endif
</div>
@endif
@else
<input type="hidden" id="course_id" value="{{$lesson->course_id}}">
<script>
var course_id = document.getElementById('course_id').value;
</script>
@if ($lesson->host=='Youtube')
@php
if (Str::contains( $lesson->video_url, '&')) {
$video_id = explode("=", $lesson->video_url);
$youtube_url= youtubeVideo($video_id[1]);
} else {
$youtube_url=getVideoId(showPicName(@$lesson->video_url));
}
@endphp
<div style="" id="video-placeholder"></div>
<input class="d-none" type="text" id="progress-bar">
<input type="hidden" name="" id="youtube_video_id" value="{{$youtube_url}}">
@push('js')
<script src="https://www.youtube.com/iframe_api"></script>
<script>
var source_video_id = $('#youtube_video_id').val();
var player;
// val youtube_video_id=$('#youtube_video_id').val();
function onYouTubeIframeAPIReady() {
console.log('yt api');
player = new YT.Player('video-placeholder', {
videoId: source_video_id,
height: '100%',
width: '100%',
playerVars: {
color: 'white',
controls: {{Settings('show_seek_bar')?1:0}},
showinfo: 0,
rel: 0,
},
events: {
onReady: initialize
}
});
}
function initialize() {
// Update the controls on load
updateTimerDisplay();
updateProgressBar();
player.playVideo();
console.log('play');
time_update_interval = setInterval(function () {
updateTimerDisplay();
updateProgressBar();
}, 1000)
}
// player.addEventListener("onStateChange", function(state){
// if(state === 0){
// console.log('video complete');
// lessonAutoComplete(course_id,{{showPicName(Request::url())}});
// }
// });
function updateProgressBar() {
$('#progress-bar').val((player.getCurrentTime() / player.getDuration()) * 100);
}
// This function is called by initialize()
function updateTimerDisplay() {
$('#currentTime').text(formatTime(player.getCurrentTime()));
$('#totalTime').text(formatTime(player.getDuration()));
// console.log('Current time : '+player.getCurrentTime());
// console.log('Duration : '+player.getDuration());
// console.log(player.getDuration()-1);
if (player.getCurrentTime() >= player.getDuration()) {
// console.log('video done');
if (!completeRequest) {
lessonAutoComplete(course_id, {{showPicName(Request::url())}});
completeRequest = true;
}
}
}
function formatTime(time) {
time = Math.round(time);
var minutes = Math.floor(time / 60),
seconds = time - minutes * 60;
seconds = seconds < 10 ? '0' + seconds : seconds;
return minutes + ":" + seconds;
}
$('#progress-bar').on('mouseup touchend', function (e) {
// Calculate the new time for the video.
// new time in seconds = total duration in seconds * ( value of range input / 100 )
var newTime = player.getDuration() * (e.target.value / 100);
// Skip video to new time.
player.seekTo(newTime);
});
// This function is called by initialize()
function updateProgressBar() {
// Update the value of our progress bar accordingly.
$('#progress-bar').val((player.getCurrentTime() / player.getDuration()) * 100);
}
</script>
@endpush
@endif
{{-- End Youtube --}}
@if ($lesson->host=='Vimeo')
<iframe class="video_iframe" id="video-id"
src="https://player.vimeo.com/video/{{getVideoId(showPicName(@$lesson->video_url))}}?autoplay=1&"
frameborder="0" controls="1" allowfullscreen></iframe>
<script src="https://f.vimeocdn.com/js/froogaloop2.min.js"></script>
@push('js')
<script src='https://player.vimeo.com/api/player.js'></script>
<script>
$(function () {
var iframe = $('#video-id')[0];
var player = new Vimeo.Player(iframe);
var status = $('.status');
player.on('pause', function () {
console.log('paused');
});
player.on('ended', function () {
console.log('ended');
console.log(completeRequest)
if (!completeRequest) {
lessonAutoComplete(course_id, {{showPicName(Request::url())}});
completeRequest = true;
}
status.text('End');
});
player.on('timeupdate', function (data) {
console.log(data.seconds + 's played');
});
});
</script>
@endpush
@endif
@push('js')
<script>
$("#autoNext").change(function () {
if ($(this).is(':checked')) {
localStorage.setItem('autoNext', 1);
} else {
localStorage.setItem('autoNext', 0);
}
});
if (localStorage.getItem('autoNext') == 0) {
$("#autoNext").prop('checked', false);
}
$("#autoNext").trigger('change');
function lessonAutoComplete(course_id, lesson_id) {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type: 'GET',
"_token": "{{ csrf_token() }}",
url: '{{route('lesson.complete.ajax')}}',
data: {course_id: course_id, lesson_id: lesson_id},
success: function (data) {
if ($('#autoNext').is(':checked')) {
@if(isModuleActive('Org') && $lesson->host=='SCORM')
$('#single_lesson_' + lesson_id).find('[type=checkbox]').prop('checked', true);
@else
reaload();
@endif
}
}
});
function reaload() {
if ($('#next_lesson_btn').length) {
jQuery('#next_lesson_btn').click();
} else {
location.reload();
}
}
if (window.outerWidth < 425) {
$('.courseListPlayer').toggleClass("active");
$('.course_fullview_wrapper').toggleClass("active");
}
}
</script>
@endpush
@if ($lesson->host=='VdoCipher')
<div id="embedBox" class="video_iframe"></div>
<script>
(function (v, i, d, e, o) {
v[o] = v[o] || {
add: function V(a) {
(v[o].d = v[o].d || []).push(a);
}
};
if (!v[o].l) {
v[o].l = 1 * new Date();
a = i.createElement(d);
m = i.getElementsByTagName(d)[0];
a.async = 1;
a.src = e;
m.parentNode.insertBefore(a, m);
}
})(
window,
document,
"script",
"https://cdn-gce.vdocipher.com/playerAssets/1.6.10/vdo.js",
"vdo"
);
vdo.add({
otp: "{{$lesson->otp}}",
playbackInfo: "{{$lesson->playbackInfo}}",
theme: "9ae8bbe8dd964ddc9bdb932cca1cb59a",
container: document.querySelector("#embedBox"),
autoplay: true
});
</script>
<script>
var isRedirect = false;
function onVdoCipherAPIReady() {
let video = vdo.getObjects()[0];
setInterval(function () {
if (video.ended) {
if (!isRedirect) {
if (!completeRequest) {
lessonAutoComplete(course_id, {{showPicName(Request::url())}});
completeRequest = true;
}
isRedirect = true;
}
}
}, 1000);
}
</script>
@endif
@if ($lesson->host=='Self')
<video class="" id="video-id" controls autoplay
onended="lessonAutoComplete(course_id, {{showPicName(Request::url())}})">
<source src="{{asset($lesson->video_url)}}" type="video/mp4"/>
<source src="{{asset($lesson->video_url)}}" type="video/ogg">
</video>
@endif
@if ($lesson->host=='URL')
<video class="" id="video-id" controls autoplay
onended="lessonAutoComplete(course_id, {{showPicName(Request::url())}})">
<source src="{{$lesson->video_url}}" type="video/mp4">
<source src="{{$lesson->video_url}}" type="video/ogg">
Your browser does not support the video.
</video>
@endif
@if ($lesson->host=='AmazonS3')
<video class=" " id="video-id" controls
onended="lessonAutoComplete(course_id, {{showPicName(Request::url())}})">
<source src="{{$lesson->video_url}}" type="video/mp4"/>
</video>
@endif
@if ($lesson->host=='XAPI' || $lesson->host=='XAPI-AwsS3')
<iframe id="video-id" class="video_iframe"
src="{{asset($lesson->video_url)}}?actor=%7B%22mbox%22%3A%22mailto%3A{{Settings('email')}}%22%2C%22name%22%3A%22{{Settings('site_title')}}%22%2C%22objectType%22%3A%22Agent%22%7D&endpoint={{url('xapi')}}&course_id={{$course->id}}&lesson_id={{$lesson->id}}&next_lesson={{$lesson_ids[$current_index+1]??''}}"
></iframe>
@endif
@if ($lesson->host=='SCORM' || $lesson->host=='SCORM-AwsS3')
@if(!empty($lesson->video_url))
<iframe class=" video_iframe" id="video-id"
src=""
@if($lesson->scorm_version=="scorm_12")
onbeforeunload="API.LMSFinish('');" width="100%"
height="100%" onunload="API.LMSFinish('');"
@endif
></iframe>
@endif
@endif
@if ($lesson->host=='Iframe')
@if(!empty($lesson->video_url))
<iframe class="video_iframe" id="video-id"
src="{{asset($lesson->video_url)}}"
></iframe>
@endif
@endif
@if ($lesson->host=='Image')
<img src="{{asset($lesson->video_url)}}" alt="" class="w-100 h-100">
@endif
@if ($lesson->host=='PDF')
<script src="{{asset('public/frontend/infixlmstheme/js/pdf.min.js')}}"></script>
<script src="{{asset('public/frontend/infixlmstheme/js/pdfjs-viewer.js')}}"></script>
<link rel="stylesheet" href="{{asset('public/frontend/infixlmstheme/css/pdfjs-viewer.css')}}"/>
<script>
var pdfjsLib = window['pdfjs-dist/build/pdf'];
pdfjsLib.GlobalWorkerOptions.workerSrc = '{{asset('public/frontend/infixlmstheme/js/pdf.worker.min.js')}}';
</script>
<div class="w-100 h-100 pdfjs-viewer"
style="border: none;min-height: 400px"></div>
<script>
let pdfViewer = new PDFjsViewer($('.pdfjs-viewer'));
pdfViewer.loadDocument("{{asset($lesson->video_url)}}").then(function () {
pdfViewer.setZoom("fit");
});
</script>
@endif
@if ($lesson->host=='Word')
<iframe class="w-100 h-100 mobile-min-height"
src="https://docs.google.com/gview?url={{asset($lesson->video_url)}}&embedded=true"></iframe>
@endif
@if ($lesson->host=='Excel' || $lesson->host=='PowerPoint' )
<iframe class="w-100 h-100 mobile-min-height"
src="https://view.officeapps.live.com/op/view.aspx?src={{asset($lesson->video_url)}}"></iframe>
@endif
@if ($lesson->host=='GoogleDrive')
<iframe class="w-100 h-100" controlsList="nodownload"
src="https://drive.google.com/uc?id={{ $lesson->video_url }}&export=view"></iframe>
@endif
@if ($lesson->host=='Text')
<div class="w-100 h-100 textViewer">
</div>
<script>
$(".textViewer").load("{{asset($lesson->video_url)}}");
</script>
@endif
{{-- Iframe video --}}
@push('js')
<script>
$(document).ready(function (e) {
if ($('#video-id').length) {
var iframe = document.getElementById("video-id");
// console.log(iframe);
var video = iframe.contentDocument.body.getElementsByTagName("video")[0];
var supposedCurrentTime = 0;
video.addEventListener('timeupdate', function () {
if (!video.seeking) {
supposedCurrentTime = video.currentTime;
}
});
// prevent user from seeking
video.addEventListener('seeking', function () {
// guard agains infinite recursion:
// user seeks, seeking is fired, currentTime is modified, seeking is fired, current time is modified, ....
var delta = video.currentTime - supposedCurrentTime;
if (Math.abs(delta) > 0.01) {
console.log("Seeking is disabled");
video.currentTime = supposedCurrentTime;
}
});
// delete the following event handler if rewind is not required
video.addEventListener('ended', function () {
if (!completeRequest) {
lessonAutoComplete(course_id, {{showPicName(Request::url())}});
completeRequest = true;
}
// reset state in order to allow for rewind
console.log('video end');
supposedCurrentTime = 0;
});
}
});
</script>
@endpush
@if ($lesson->host=='Zip')
<style>
.parent {
position: fixed;
display: flex;
align-items: center;
justify-content: center;
}
.child {
position: relative;
font-size: 10vw;
}
</style>
<div class="w-100 parent h-100 ">
<div class="">
<div class="row">
<div class="col text-center">
<div class="child">
<a class="theme_btn " href="{{asset($lesson->video_url)}}"
download="">{{__('frontend.Download File')}}</a>
</div>
</div>
</div>
</div>
</div>
@endif
@endif
{{-- </div> --}}
<input type="hidden" id="url" value="{{url('/')}}">
<div class="course__play_warp courseListPlayer ">
<div class="play_toggle_btn">
<i class="ti-menu-alt"></i>
</div>
<div class="play_warp_header d-flex justify-content-between">
<h3 class="font_16 mb-0 lesson_count default-font">
<a href="{{courseDetailsUrl(@$course->id,@$course->type,@$course->slug)}}" class="theme_btn_mini">
<i class="fas fa-arrow-left"></i>
</a>
{{@$total}} {{__('common.Lessons')}}</h3>
</div>
<div class="course__play_list">
@php
$i=1;
@endphp
<div class="theme_according mb_30" id="accordion1">
@foreach($chapters as $k=>$chapter)
<div class="card">
<div class="card-header pink_bg" id="heading{{$chapter->id}}">
<h5 class="mb-0">
<button class="btn btn-link text_white collapsed "
data-toggle="collapse"
data-target="#collapse{{$chapter->id}}"
aria-expanded="false"
aria-controls="collapse{{$chapter->id}}">
{{$chapter->name}} <br>
<span
class="course_length nowrap"> {{count($chapter->lessons)}} {{__('frontend.Lectures')}}</span>
</button>
</h5>
</div>
<div class="collapse" id="collapse{{$chapter->id}}"
aria-labelledby="heading{{$chapter->id}}"
data-parent="#accordion1">
<div class="card-body">
<div class="curriculam_list">
@if(isset($lessons))
@php
// $video_lesson_hosts=['Youtube','Vimeo','Self','URL'];
@endphp
@foreach ($lessons as $key => $singleLesson)
@if($singleLesson->chapter_id==$chapter->id)
<div class="single_play_list"
id="single_lesson_{{$singleLesson->id}}">
<a class="@if(showPicName(Request::url())==$singleLesson->id) active @endif"
href="#">
@if ($singleLesson->is_quiz==1)
<div class="course_play_name">
<label class="primary_checkbox d-flex mb-0">
{{-- <input
id="lesson_complete_check_{{$singleLesson->id}}"
type="checkbox"
data-lesson="{{$singleLesson->id}}"
data-course="{{$course->id}}"
class="course_name"
{{$singleLesson->completed && $singleLesson->completed->status == 1 ? 'checked' : ''}} name="billing_address"
value="1"> --}}
<input type="checkbox"
{{$singleLesson->completed && $singleLesson->completed->status == 1 ? 'checked' : ''}} disabled>
<span class="checkmark mr_15"
style="cursor: not-allowed"></span>
<i class="ti-check-box"></i>
</label>
@foreach ($singleLesson->quiz as $quiz)
<span class="quizLink"
onclick="goFullScreen({{$course->id}},{{$singleLesson->id}})">
<span class="quiz_name">{{$i}}. {{@$quiz->title}}</span>
</span>
</div>
@endforeach
@else
<div class="course_play_name">
@if(request()->route('lesson_id') == $singleLesson->id)
<div
class="remember_forgot_pass d-flex justify-content-between">
<label class="primary_checkbox d-flex mb-0">
@if($isEnrolled)
<input
type="checkbox"
{{$singleLesson->completed && $singleLesson->completed->status == 1 ? 'checked' : ''}} disabled>
<span style="cursor: not-allowed"
class="checkmark mr_15"></span>
<i class="ti-control-play"></i>
@else
<i class="ti-control-play"></i>
@endif
</label>
</div>
@else
<label class="primary_checkbox d-flex mb-0">
<input
type="checkbox" {{$singleLesson->completed && $singleLesson->completed->status == 1 ? 'checked' : ''}} >
<span style="cursor: not-allowed"
class="checkmark mr_15"></span>
<i class="ti-control-play"></i>
</label>
@endif
<span
onclick="goFullScreen({{$course->id}},{{$singleLesson->id}})">{{$i}}. {{$singleLesson->name}} </span>
</div>
<span
class="course_play_duration nowrap">{{MinuteFormat($singleLesson->duration)}}</span>
@endif
</a>
</div>
@php
$i++;
@endphp
@endif
@endforeach
@endif
</div>
</div>
</div>
</div>
@endforeach
</div>
<div class="row justify-content-center text-center">
@if($certificate)
@if($quizPass)
@auth()
@if($percentage>=100)
@if(isModuleActive('Survey') && $course->survey)
@if(Settings('must_survey_before_certificate'))
@if(auth()->user()->attendSurvey($course->survey))
<a href="{{route('getCertificate',[$course->id,$course->title])}}"
class="theme_btn certificate_btn mt-5">
{{__('frontend.Get Certificate')}}
</a>
@if (isModuleActive('MyClass'))
<a href="{{ route('get-transcript', [$course->id, auth()->user()->id]) }}"
class="theme_btn certificate_btn mt-5 ml-2"
target="__blank">{{ __('class.Get Transcript') }}</a>
@endif
@else
<button type="button"
data-toggle="modal"
data-target="#assignSubmit"
class="theme_btn certificate_btn mt-5">
{{__('frontend.Survey')}}
</button>
<small>
{{__('frontend.You must attend servery before getting certificate')}}
</small>
@endif
@else
@if(!auth()->user()->attendSurvey($course->survey))
<button type="button"
data-toggle="modal"
data-target="#assignSubmit"
class="theme_btn certificate_btn mt-5 mr-1">
{{__('frontend.Survey')}}
</button>
@endif
<a href="{{route('getCertificate',[$course->id,$course->title])}}"
class="theme_btn certificate_btn mt-5 ml-1">
{{__('frontend.Get Certificate')}}
</a>
@if (isModuleActive('MyClass'))
<a href="{{ route('get-transcript', [$course->id, auth()->user()->id]) }}"
class="theme_btn certificate_btn mt-5 ml-2"
target="__blank">{{ __('class.Get Transcript') }}</a>
@endif
@endif
@else
<a href="{{route('getCertificate',[$course->id,$course->title])}}"
class="theme_btn certificate_btn mt-5">
{{__('frontend.Get Certificate')}}
</a>
@if (isModuleActive('MyClass'))
<a href="{{ route('get-transcript', [$course->id, auth()->user()->id]) }}"
class="theme_btn certificate_btn mt-5 ml-2"
target="__blank">{{ __('class.Get Transcript') }}</a>
@endif
@endif
@endif
@endauth
@endif
@endif
</div>
<div class="pb-5 mb-5 d-none">
<div>{{__('frontend.Current Time')}}: <span id="currentTime">0</span></div>
<div>{{__('frontend.Total Time')}} : <span id="totalTime">0</span></div>
<div>{{__('frontend.Status')}} : <span class="status"></span></div>
</div>
</div>
</div>
</div>
<div class="modal fade " id="ShareLink"
tabindex="-1" role="dialog"
aria-labelledby=" "
aria-hidden="true">
<div class="modal-dialog modal-lg "
role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">
{{__('frontend.Share this course')}}
</h5>
</div>
<div class="modal-body">
<div class="row mb-20">
<div class="col-md-12">
<input type="text"
required
class="primary_input4 mb_20"
name=""
value="{{URL::current()}}">
</div>
</div>
<div class="row">
<div class="col-md-12 text-center">
<div class="social_btns ">
<a target="_blank"
href="https://www.facebook.com/sharer/sharer.php?u={{URL::current()}}"
class="social_btn fb_bg"> <i class="fab fa-facebook-f"></i>
</a>
<a target="_blank"
href="https://twitter.com/intent/tweet?text={{$course->title}}&url={{URL::current()}}"
class="social_btn Twitter_bg"> <i
class="fab fa-twitter"></i> </a>
<a target="_blank"
href="https://pinterest.com/pin/create/link/?url={{URL::current()}}&description={{$course->title}}"
class="social_btn Pinterest_bg"> <i
class="fab fa-pinterest-p"></i> </a>
<a target="_blank"
href="https://www.linkedin.com/shareArticle?mini=true&url={{URL::current()}}&title={{$course->title}}&summary={{$course->title}}"
class="social_btn Linkedin_bg"> <i
class="fab fa-linkedin-in"></i> </a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade " id="courseRating"
tabindex="-1" role="dialog"
aria-labelledby=" "
aria-hidden="true">
<div class="modal-dialog modal-lg "
role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">
{{__('frontend.Rate this course')}}
</h5>
</div>
<div class="modal-body">
<div class="row mb-20">
<div class="col-md-12">
<div class="rating_star text-right">
@php
$PickId=$course->id;
@endphp
@if (Auth::check())
@if(Auth::user()->role_id==3)
@if (!in_array(Auth::user()->id,$reviewer_user_ids))
<div
class="star_icon d-flex align-items-center justify-content-between">
<a class="rating">
<input type="radio" id="star5" name="rating"
value="5"
class="rating"/><label
class="full" for="star5" id="star5"
title="Awesome - 5 stars"
onclick="Rates(5, {{@$PickId }})"></label>
<input type="radio" id="star4half"
name="rating"
value="4.5"
class="rating"/><label class="half"
for="star4half"
title="Pretty good - 4.5 stars"
onclick="Rates(4.5, {{@$PickId }})"></label>
<input type="radio" id="star4" name="rating"
value="4"
class="rating"/><label
class="full" for="star4"
title="Pretty good - 4 stars"
onclick="Rates(4, {{@$PickId }})"></label>
<input type="radio" id="star3half"
name="rating"
value="3.5"
class="rating"/><label class="half"
for="star3half"
title="Meh - 3.5 stars"
onclick="Rates(3.5, {{@$PickId }})"></label>
<input type="radio" id="star3" name="rating"
value="3"
class="rating"/><label
class="full" for="star3"
title="Meh - 3 stars"
onclick="Rates(3, {{@$PickId }})"></label>
<input type="radio" id="star2half"
name="rating"
value="2.5"
class="rating"/><label class="half"
for="star2half"
title="Kinda bad - 2.5 stars"
onclick="Rates(2.5, {{@$PickId }})"></label>
<input type="radio" id="star2" name="rating"
value="2"
class="rating"/><label
class="full" for="star2"
title="Kinda bad - 2 stars"
onclick="Rates(2, {{@$PickId }})"></label>
<input type="radio" id="star1half"
name="rating"
value="1.5"
class="rating"/><label class="half"
for="star1half"
title="Meh - 1.5 stars"
onclick="Rates(1.5, {{@$PickId }})"></label>
<input type="radio" id="star1" name="rating"
value="1"
class="rating"/><label
class="full" for="star1"
title="Bad - 1 star"
onclick="Rates(1,{{@$PickId }})"></label>
<input type="radio" id="starhalf"
name="rating"
value=".5"
class="rating"/><label class="half"
for="starhalf"
title="So bad - 0.5 stars"
onclick="Rates(.5,{{@$PickId }})"></label>
</a>
</div>
@endif
@endif
@else
<p class="font_14 f_w_400 mt-0"><a href="{{url('login')}}"
class="theme_color2">{{__('frontend.Sign In')}}</a>
{{__('frontend.or')}} <a
class="theme_color2"
href="{{url('register')}}">{{__('frontend.Sign Up')}}</a>
{{__('frontend.as student to post a review')}}</p>
@endif
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal cs_modal fade admin-query" id="myModal" role="dialog">
<div class="modal-dialog modal-lg modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">{{ __('frontend.Review') }}</h5>
<button type="button" class="close" data-dismiss="modal"><i
class="ti-close "></i></button>
</div>
<form action="{{route('submitReview')}}" method="Post">
<div class="modal-body">
@csrf
<input type="hidden" name="course_id" id="rating_course_id"
value="">
<input type="hidden" name="rating" id="rating_value" value="">
<div class="text-center">
<textarea class="form-control" name="review" name=""
id=""
placeholder="{{__('frontend.Write your review') }}"
cols="30"
rows="10">{{old('review')}}</textarea>
<span class="text-danger" role="alert">{{$errors->first('review')}}</span>
</div>
</div>
<div class="modal-footer justify-content-center">
<div class="mt-40">
<button type="button" class="theme_line_btn mr-2"
data-dismiss="modal">{{ __('common.Cancel') }}
</button>
<button class="theme_btn "
type="submit">{{ __('common.Submit') }}</button>
</div>
</div>
</form>
</div>
</div>
</div>
<div id="logDisplay">
</div>
@if(isModuleActive('Survey') && $course->survey)
@include(theme('partials._survey_model'))
@endif
@endsection
@push('js')
<script>
$(document).ready(function () {
if ($('.active').length) {
let active = $('.active');
let parent = active.parents('.collapse').first();
parent.addClass('show');
}
});
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$(document).ready(function () {
let course = '{{$course->id}}';
let lesson = '{{$lesson->id}}';
/* $("iframe").each(function () {
//Using closures to capture each one
var iframe = $(this);
iframe.on("load", function () { //Make sure it is fully loaded
iframe.contents().click(function (event) {
iframe.trigger("click");
});
});
iframe.click(function () {
$.ajax({
type: 'POST',
"_token": "{{ csrf_token() }}",
url: '{{route('lesson.complete.ajax')}}',
data: {course_id: course, lesson_id: lesson},
success: function (data) {
}
});
});
});*/
if (window.outerWidth < 425) {
$('.courseListPlayer').toggleClass("active");
$('.course_fullview_wrapper').toggleClass("active");
}
$(".completeAndPlayNext").click(function () {
$.ajax({
type: 'POST',
"_token": "{{ csrf_token() }}",
url: '{{route('lesson.complete.ajax')}}',
data: {course_id: course, lesson_id: lesson},
success: function (data) {
if ($('#next_lesson_btn').length) {
$('#next_lesson_btn').trigger('click');
} else {
location.reload();
}
}
});
});
});
</script>
@if ($lesson->host=='Self'|| $lesson->host=='AmazonS3'|| $lesson->host=='URL')
<script>
let myFP = fluidPlayer(
'video-id', {
"layoutControls": {
"controlBar": {
"autoHideTimeout": 3,
"animated": true,
"autoHide": true
},
"htmlOnPauseBlock": {
"html": null,
"height": null,
"width": null
},
"autoPlay": true,
"mute": false,
"hideWithControls": false,
"allowTheatre": false,
"playPauseAnimation": true,
"playbackRateEnabled": false,
"allowDownload": false,
"playButtonShowing": true,
"fillToContainer": true,
"posterImage": ""
},
"vastOptions": {
"adList": [],
"adCTAText": false,
"adCTATextPosition": ""
}
});
</script>
@if(!Settings('show_seek_bar'))
<style>
div#video-id_fluid_controls_progress_container {
display: none;
}
</style>
<script>
if ($('#video-id').length) {
var video = document.getElementById('video-id');
var supposedCurrentTime = 0;
video.addEventListener('timeupdate', function () {
if (!video.seeking) {
supposedCurrentTime = video.currentTime;
}
});
// prevent user from seeking
video.addEventListener('seeking', function () {
// guard agains infinite recursion:
// user seeks, seeking is fired, currentTime is modified, seeking is fired, current time is modified, ....
var delta = video.currentTime - supposedCurrentTime;
if (Math.abs(delta) > 0.01) {
console.log("Seeking is disabled");
video.currentTime = supposedCurrentTime;
}
});
// delete the following event handler if rewind is not required
video.addEventListener('ended', function () {
// reset state in order to allow for rewind
console.log('video end');
if (!completeRequest) {
lessonAutoComplete(course_id, {{showPicName(Request::url())}});
completeRequest = true;
}
supposedCurrentTime = 0;
});
}
</script>
@endif
@endif
<script src="{{asset('public/frontend/infixlmstheme/js/class_details.js')}}"></script>
<script src="{{asset('public/frontend/infixlmstheme/js/full_screen_video.js')}}"></script>
@if ($lesson->is_quiz==1)
@if(!$result)
<script src="{{ asset('public/frontend/infixlmstheme/js/quiz_start.js') }}"></script>
@endif
@endif
<script src="{{asset('public/backend/js/summernote-bs4.min.js')}}"></script>
<script>
if ($('.lms_summernote').length) {
$('.lms_summernote').summernote({
codeviewFilter: true,
codeviewIframeFilter: true,
toolbar: [
['style', ['style']],
['font', ['bold', 'underline', 'clear']],
['fontname', ['fontname']],
['color', ['color']],
['para', ['ul', 'ol', 'paragraph']],
['table', ['table']],
['insert', ['link', 'picture', 'video']],
['view', ['fullscreen']],
],
placeholder: '',
tabsize: 2,
height: 188,
tooltip: true
});
}
var app_debug = $('.app_debug').val();
if (!app_debug) {
$(document).bind("contextmenu", function (e) {
e.preventDefault();
});
$(document).keydown(function (e) {
if (e.which === 123) {
return false;
}
});
document.onkeydown = function (e) {
if (event.keyCode == 123) {
return false;
}
if (e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0)) {
return false;
}
if (e.ctrlKey && e.keyCode == 'E'.charCodeAt(0)) {
return false;
}
if (e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0)) {
return false;
}
if (e.ctrlKey && e.keyCode == 'U'.charCodeAt(0)) {
return false;
}
if (e.ctrlKey && e.keyCode == 'S'.charCodeAt(0)) {
return false;
}
if (e.ctrlKey && e.keyCode == 'H'.charCodeAt(0)) {
return false;
}
if (e.ctrlKey && e.keyCode == 'F'.charCodeAt(0)) {
return false;
}
if (e.ctrlKey && e.keyCode == 'E'.charCodeAt(0)) {
return false;
}
}
}
</script>
@if ($lesson->host=='XAPI' || $lesson->host=='XAPI-AwsS3')
<script>
@if(!isset($lesson->completed->status))
function checkCompleteStatus() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
var course_id = "{{$course->id}}";
var lesson_id = "{{$lesson->id}}";
$.ajax({
type: 'POST',
url: '{{route('xapi.checkLessonStatus')}}',
data: {course_id: course_id, lesson_id: lesson_id},
success: function (data) {
if (data == 1) {
if ($('#autoNext').is(':checked')) {
if ($('#next_lesson_btn').length) {
jQuery('#next_lesson_btn').click();
} else {
location.reload();
}
}
}
}
});
}
setInterval(checkCompleteStatus, 2000)
@endif
</script>
@endif
@if ($lesson->host=='SCORM' || $lesson->host=='SCORM-AwsS3' || $lesson->host=='XAPI' || $lesson->host=='XAPI-AwsS3')
<script>
let video_element = $('#video-id');
let url = "{{asset($lesson->video_url)}}";
@auth
let full_name = "{{auth()->user()->name}}";
@if(isModuleActive('Org'))
let org_chart_name = "{{auth()->user()->branch->group}}";
@endif
@endauth
@guest()
let full_name = "Guest";
let org_chart_name = "";
@endguest
let course_name = "{{ $course->title}}";
@if($lesson->scorm_version=="scorm_12")
var API = {};
(function ($) {
$(document).ready(function () {
setupScormApi()
video_element.attr('src', url)
});
function setupScormApi() {
API.LMSInitialize = LMSInitialize;
API.LMSGetValue = LMSGetValue;
API.LMSSetValue = LMSSetValue;
API.LMSCommit = LMSCommit;
API.LMSFinish = LMSFinish;
API.LMSGetLastError = LMSGetLastError;
API.LMSGetDiagnostic = LMSGetDiagnostic;
API.LMSGetErrorString = LMSGetErrorString;
}
function LMSInitialize(initializeInput) {
displayLog("LMSInitialize: " + initializeInput);
return true;
}
function LMSGetValue(varname) {
displayLog("LMSGetValue: " + varname);
return varname;
}
function LMSSetValue(varname, varvalue) {
updateScormReport(varname, varvalue);
if (varvalue == 'completed' || varvalue == 'passed') {
lessonAutoComplete(course_id, {{showPicName(Request::url())}});
}
// displayLog("LMSSetValue: " + varname + "=" + varvalue);
return "";
}
function LMSCommit(commitInput) {
displayLog("LMSCommit: " + commitInput);
return true;
}
function LMSFinish(finishInput) {
lessonAutoComplete(course_id, {{showPicName(Request::url())}});
displayLog("LMSFinish: " + finishInput);
return true;
}
function LMSGetLastError() {
displayLog("LMSGetLastError: ");
return 0;
}
function LMSGetDiagnostic(errorCode) {
displayLog("LMSGetDiagnostic: " + errorCode);
return "";
}
function LMSGetErrorString(errorCode) {
displayLog("LMSGetErrorString: " + errorCode);
return "";
}
})(jQuery);
@elseif($lesson->scorm_version=="scorm_2004")
var API_1484_11 = {};
(function ($) {
$(document).ready(function () {
setupScormApi();
video_element.attr('src', url)
});
function setupScormApi() {
API_1484_11.Initialize = Initialize;
API_1484_11.Commit = Commit;
API_1484_11.Terminate = Terminate;
API_1484_11.GetValue = GetValue;
API_1484_11.SetValue = SetValue;
API_1484_11.GetErrorString = GetErrorString;
API_1484_11.GetDiagnostic = GetDiagnostic;
API_1484_11.GetLastError = GetLastError;
}
function Initialize(parameter) {
displayLog('Initialize ' + parameter)
return true
}
function Commit(parameter) {
displayLog('Commit ' + parameter)
return true
}
function Terminate(parameter) {
{{--lessonAutoComplete(course_id, {{showPicName(Request::url())}});--}}
displayLog('Terminate ' + parameter)
return true
}
function GetValue(name) {
displayLog('GetValue ' + name)
return "";
}
function SetValue(name, value) {
console.log('->' + value);
updateScormReport(name, value);
if (value == 'completed' || value == 'passed') {
lessonAutoComplete(course_id, {{showPicName(Request::url())}});
}
displayLog('SetValue ' + name + ' = ' + value)
return true
}
function GetErrorString() {
displayLog('GetErrorString')
return ''
}
function GetDiagnostic() {
displayLog('GetDiagnostic')
return ''
}
function GetLastError() {
displayLog('GetLastError')
return 0
}
})(jQuery);
@endif
function displayLog(textToDisplay) {
console.log(textToDisplay);
}
@if(isModuleActive('SCORM'))
function updateScormReport(key, value) {
@if(!isset($lesson->completed->status))
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
var course_id = "{{$course->id}}";
var lesson_id = "{{$lesson->id}}";
$.ajax({
type: 'POST',
url: '{{route('scorm.report.store')}}',
data: {course_id: course_id, lesson_id: lesson_id, key: key, value: value},
success: function (data) {
console.log(data);
}
});
@endif
}
@endif
</script>
@endif
@endpush