Exemple #1
0
 public function attachment($course_id, $chapter_id = null)
 {
     $course = Model\Kelas\Course::withDrafts()->findOrFail($course_id);
     $chapters = $course->chapters;
     $attachments = $chapters->map(function ($chapter, $index) {
         return ['contents' => $chapter->attachments];
     });
     $this->output->set_content_type('application/json')->set_output(json_encode($attachments->toArray()));
 }
Exemple #2
0
 public function store()
 {
     $course = Model\Kelas\Course::findOrFail(set_value('course_id'));
     $this->form_validation->set_rules('name', 'Name', 'required');
     $this->form_validation->set_rules('email', 'Email', 'required|valid_email');
     $this->form_validation->set_rules('content', 'Komentar', 'required');
     $this->form_validation->set_rules('course_id', '', 'required');
     if ($this->form_validation->run() == FALSE) {
         if ($this->request->isXmlHttpRequest()) {
             $response = new Response();
             $response->setContent(json_encode(['status' => 'error', 'data' => $this->form_validation->error_array()]));
             $response->headers->set('Content-Type', 'application/json');
         } else {
             keepValidationErrors();
             redirect($course->link . '#comments', 'refresh');
         }
     } else {
         $data = array('content' => set_value('content'), 'name' => set_value('name'), 'email' => set_value('email'), 'course_id' => set_value('course_id'), 'parent' => set_value('parent', 0), 'status' => 'draft');
         $comment = Model\Kelas\CourseComment::create($data);
         if ($user = auth()->check()) {
             $comment->user()->associate($user->id);
             if ($user->inRole(['su', 'adm', 'edt', 'ins', 'mdr'])) {
                 $comment->status = 'publish';
             } else {
                 $comment->status = 'draft';
             }
             $comment->save();
         }
         if ($this->input->is_ajax_request()) {
             $response = new Response();
             $response->setContent(json_encode(['status' => 'success', 'data' => $comment]));
             $response->headers->set('Content-Type', 'application/json');
         } else {
             if ($comment->status == 'publish') {
                 set_message_success('Komentar Anda sudah ditampilkan.');
                 redirect('course/show/' . $course->slug . '#comment-' . $comment->id, 'refresh');
             } else {
                 set_message_success('Komentar Anda akan tampil setelah dimoderasi.');
                 redirect('course/show/' . $course->slug . '#form-comment', 'refresh');
             }
         }
     }
 }
Exemple #3
0
 public function editExam($id)
 {
     if (!$this->input->post()) {
         $this->template->build('course/exam');
     } else {
         // 1. Prepare from input
         $input = collect($this->input->post('course'));
         $course = Model\Kelas\Course::withDrafts()->findOrFail($id);
         $course = Model\Kelas\Course::withDrafts()->findOrFail($id);
         $this->repository->set($course);
         // 2. Remove data
         $remove = collect($this->input->post('remove'));
         foreach ($remove->get('exams', []) as $exam_id) {
             $this->repository->deleteExamQuestion($exam_id);
         }
         // 7. Exam
         $exam = collect($input->get('exam'));
         if ($exam->get('id')) {
             $modelExam = Model\Kelas\Exam::findOrFail($exam->get('id'));
         } else {
             $modelExam = new Model\Kelas\Exam();
             $modelExam->course()->associate($course);
         }
         $modelExam->name = $exam->get('name');
         $modelExam->time = $exam->get('time');
         $modelExam->save();
         $questions = collect($exam->get('questions'));
         $questions->each(function ($question) use($modelExam, $course) {
             $question = collect($question);
             if ($question->get('id')) {
                 $modelQuestion = Model\Kelas\ExamQuestion::findOrFail($question->get('id'));
             } else {
                 $modelQuestion = new Model\Kelas\ExamQuestion();
                 $modelQuestion->exam()->associate($modelExam);
             }
             $modelQuestion->question = $question->get('question');
             $modelQuestion->option_a = $question->get('option_a');
             $modelQuestion->option_b = $question->get('option_b');
             $modelQuestion->option_c = $question->get('option_c');
             $modelQuestion->option_d = $question->get('option_d');
             $modelQuestion->correct = $question->get('correct');
             $modelQuestion->save();
         });
         redirect('dashboard/course/edit/' . $course->id . '/exam', 'refresh');
     }
 }
Exemple #4
0
 public function indexDraft()
 {
     $courses = Model\Kelas\Course::onlyInstructor(sentinel()->getUser())->onlyDrafts()->get();
     $this->template->build('index_draft', compact('courses'));
 }
Exemple #5
0
 public function index()
 {
     $user = auth()->getUser();
     $request = Request::createFromGlobals();
     $articles = Model\Portal\Article::withPrivate()->published()->contributor($user->id)->latest('date')->get();
     $drafts = Model\Portal\Article::withPrivate()->onlyDrafts()->contributor($user->id)->latest('date')->get();
     $toptenarticles = Model\Portal\Article::groupBy('contributor_id')->orderBy('contributor_id', 'desc')->take(10)->get();
     $data['toptenarticlecount'] = Model\Portal\Article::selectRaw('count(`contributor_id`) as `occurences`')->groupBy('contributor_id')->orderBy('contributor_id', 'desc')->take(10)->get();
     $draftcount = $drafts->count();
     $courses = Model\Kelas\Course::latest()->get();
     $myclasscourse = Model\Kelas\CourseMember::where('user_id', $user->id)->has('course')->get();
     $coursecomments = Model\Kelas\CourseComment::where('parent', '0')->has('course')->get();
     $toptenactiveclass = Model\Kelas\CourseMember::groupBy('user_id')->orderBy('user_id', 'desc')->take(10)->get();
     $data['toptenactiveclasscount'] = Model\Kelas\CourseMember::selectRaw('count(`user_id`) as `counttotal`')->groupBy('user_id')->orderBy('user_id', 'desc')->take(10)->get();
     /* Start Activity Konsultasi */
     $data['konsultasiCat'] = $this->Mod_konsultasi->getKonsultasiKategori();
     $data['latestReply'] = $this->Mod_konsultasi->getLatestReply($user->id);
     $konsultasi = collect($this->Mod_konsultasi->getKonsultasi($user->id));
     $data['latestKonsultasi'] = $konsultasi;
     /* End Activity Konsultasi */
     $category = $this->medialib->getCategory();
     $categories = $category->with(['media' => function ($query) {
         $query->userId(sentinel()->getUser()->id)->withDrafts();
     }])->get();
     $data['categories'] = $categories;
     $data['categories_checkbox'] = (new Model\Portal\Category())->generateCheckbox();
     $data['artikel'] = pagination($articles, 4, 'dashboard/my-article');
     $data['drafts'] = $drafts;
     $data['draftcount'] = $draftcount;
     $data['links'] = $this->Mod_link->read();
     $data['toptenarticles'] = $toptenarticles;
     $data['toptenactiveclass'] = $toptenactiveclass;
     $data['courses'] = $courses;
     $data['myclasscourse'] = $myclasscourse;
     $data['coursecomments'] = $coursecomments;
     $data['forumNotif'] = $this->Mod_forum->getMemberNotif($user->id);
     $data['forumCategories'] = $this->Mod_forum->getCategoryMember($user->id);
     $latestComment = $this->Mod_forum->getLatestComment($user->id);
     $data['forumLatestComment'] = $latestComment;
     if (!empty($latestComment)) {
         foreach ($latestComment as $latest) {
             $data['threadLatestComment'] = $this->Mod_forum->threadLatestComment($latest->reply_to);
         }
     }
     $data['allThreads'] = $this->Mod_forum->allThreads($user->id);
     $listNewThreadComments = array();
     if (!empty($data['allThreads'])) {
         foreach ($data['allThreads'] as $thr) {
             $listNewThreadComments[] = $thr->id;
         }
         $data['newThreadComments'] = $this->Mod_forum->newComments($listNewThreadComments);
     }
     // START: Recent activity elibrary
     $data['recentMedia'] = $this->medialib->onlyUserId($user->id)->latestById()->slice(0, 5);
     // END: Recent activity elibrary
     $data['recentMedia'] = $this->medialib->onlyUserId($user->id)->latestById()->slice(0, 5);
     $data['recentArticleComment'] = $this->Mod_artikel->getRecentComment($user->id);
     $this->template->set('sidebar');
     $this->template->set_layout('privatepage');
     $this->template->build('index', $data);
 }
Exemple #6
0
 public function indexDraft()
 {
     $courses = Model\Kelas\Course::onlyInstructor(sentinel()->getUser())->onlyDrafts()->get();
     $courses = pagination($courses, 15, 'dashboard')->appends(['status' => 'draft']);
     $this->template->build('index_draft', compact('courses'));
 }