AndroidCourse

This commit is contained in:
rianbtk 2022-08-21 12:21:42 +07:00
parent 2d5ee939ec
commit b9a1ac2de1
37 changed files with 1424 additions and 1482 deletions

11
app/AndroidFileresult.php Normal file
View File

@ -0,0 +1,11 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class AndroidFileResult extends Model
{
protected $table='file_results';
public $primaryKey='id';
}

View File

@ -0,0 +1,12 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class AndroidStudentSubmit extends Model
{
protected $table='student_submits';
public $primaryKey='id';
}

25
app/AndroidTask.php Normal file
View File

@ -0,0 +1,25 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class AndroidTask extends Model
{
//
protected $table='tasks';
public $primaryKey='id';
public function topic() {
return $this->belongsTo(App\AndroidTopic::class);
}
public function getTopic($id) {
return \App\AndroidTopic::find($id)->name;
}
public function getListTopic() {
return \App\AndroidTopic::pluck('name', 'id');
}
}

11
app/AndroidTaskResult.php Normal file
View File

@ -0,0 +1,11 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class AndroidTaskResult extends Model
{
protected $table='task_results';
public $primaryKey='id';
}

10
app/AndroidTestFiles.php Normal file
View File

@ -0,0 +1,10 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class AndroidTestFiles extends Model
{
//
}

22
app/AndroidTopic.php Normal file
View File

@ -0,0 +1,22 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class AndroidTopic extends Model
{
//
protected $table='topics';
public function tasks() {
return $this->hasMany('App\AndroidTask');
}
public function topic_files() {
return $this->hasMany('App\AndroidTopicFiles');
}
public function test_files() {
return $this->hasMany('App\AndroidTestFiles');
}
}

15
app/AndroidTopicFiles.php Normal file
View File

@ -0,0 +1,15 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class AndroidTopicFiles extends Model
{
//
protected $table='topic_files';
public $primaryKey='id';
public function topic() {
return $this->belongsTo(App\AndroidTopic::class);
}
}

52
app/AndroidUser.php Normal file
View File

@ -0,0 +1,52 @@
<?php
namespace App;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class AndroidUser extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'roleid', 'email', 'password','uplink','status'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function checkRoleId($roleid) {
if ($roleid=='student') {
return Redirect::to('student/Androidcourse/home');
} elseif ($roleid=='teacher') {
return Redirect::to('teacher/home');
} elseif ($roleid=='admin') {
return Redirect::to('admin/admin');
} else {
return Redirect::to('/home');
}
}
}

View File

@ -0,0 +1,249 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Auth;
use Redirect;
use Session;
class AndroidController extends Controller
{
//
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index(Request $request) {
if (Auth::user()->roleid=='student/androidcourse') {
$check=\App\User::find(Auth::user()->id);
if ($check->status!='active') return view('student/androidcourse/home')->with(['status'=>$check->status]);
}
$topiclist=\App\AndroidTopic::where('status','=','1')
->orderBy('name','asc')->get();
$items = \App\AndroidTopic::where('status','=','1')
->orderBy('status','desc')
->orderBy('name','asc')
->pluck('name', 'id');
$itemslearning = \App\AndroidTopic::where('status','=','1')
->orderBy('status','desc')
->orderBy('name','asc')
->where('level','=','1')
->pluck('name', 'id');
$filter = $request->input('topicList',$topiclist[0]['id']);
if ($filter=='0') {
$entities=\App\AndroidTask::all();
} else {
$entities = \App\AndroidTask::where('topic','=',$filter)
->select(
'tasks.id',
'tasks.taskno',
'tasks.desc',
'tasks.topic',
'topics.name'
)
->join(
'topics',
'topics.id','=','tasks.topic'
)
->orderBy('tasks.taskno','asc')
->get();
}
if (Auth::user()->roleid=='admin') {
return view('admin/tasks/index')
->with(compact('entities'))
->with(compact('items'))
->with(compact('filter'));
} else {
$topic = \App\AndroidTopic::where('topics.id','=',$filter)
->select(
'topics.id',
'topics.name',
'topics.desc',
'learning_files.guide',
'learning_files.testfile',
'learning_files.supplement',
'learning_files.other'
)
->leftJoin('learning_files', 'learning_files.topic', '=', 'topics.id')
->first();
return view('student/androidcourse/tasks/index')
->with(compact('entities'))
->with(compact('items'))
->with(compact('itemslearning'))
->with(compact('filter'))
->with(compact('topic'));
}
}
public function getTopic($id){
$items = \App\AndroidTopic::find($id);
return $items['name'];
}
public function filterTask() {
$filters = \App\AndroidTopic::get();
$filter = \App\AndroidTopic::findOrFail(Input::get('filter_id'));
$data= \App\AndroidTask::with('topic')->where('topic', '=' , $filter->id )->latest()->get();
return View::make('admin.tasks.index',compact('filters'))->withProfiles($data)->with('title', 'filter');
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
//
$items = \App\AndroidTopic::pluck('name', 'id');
//echo "kljasd;lkasdl";
return view('admin/tasks/create')->with(compact('items'));
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store(Request $request)
{
//echo "YAAANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN";
//
$rules =[
'taskno'=>'required',
'desc'=>'required'
];
$msg=[
'taskno.required'=>'Task number must not empty',
'desc.required'=>'Description must not empty'
];
$validator=Validator::make($request->all(),$rules,$msg);
//jika data ada yang kosong
if ($validator->fails()) {
//refresh halaman
return Redirect::to('admin/tasks/create')
->withErrors($validator);
}else{
$entity=new \App\AndroidTask;
$entity->desc=$request->get('desc');
$entity->taskno=$request->get('taskno');
$entity->topic=$request->get('topic');
$entity->save();
Session::flash('message','A New Task Stored');
//return "Add new topic is success";
return Redirect::to('admin/tasks');
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return Response
*/
public function show(Request $request, $id)
{
$entity = \App\AndroidTask::find($id);
$topic = \App\AndroidTopic::find($entity->topic);
$x=['data'=>$entity, 'topic'=>$topic];
if ($request->is('admin/*')) {
return view('admin/tasks/show')->with($x);
} else {
return view('student/androidcourse/tasks/show')->with($x);
}
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
//
$entity = \App\AndroidTask::find($id);
$x=['data'=>$entity];
$items = \App\AndroidTopic::pluck('name', 'id');
return view('admin/tasks/edit')->with($x)->with(compact('items'));
}
/**
* Update the specified resource in storage.
*
* @param int $id
* @return Response
*/
public function update(Request $request, $id)
{
//
$rules =[
'taskno'=>'required',
'desc'=>'required'
];
$msg=[
'taskno.required'=>'Task number must not empty',
'desc.required'=>'Description must not empty'
];
$validator=Validator::make($request->all(),$rules,$msg);
if ($validator->fails()) {
return Redirect::to('admin/topics/'.$id.'/edit')
->withErrors($validator);
}else{
$entity=\App\AndroidTask::find($id);
$entity->desc=$request->get('desc');
$entity->taskno=$request->get('taskno');
$entity->topic=$request->get('topic');
$entity->save();
Session::flash('message','Task with Id='.$id.' is changed');
return Redirect::to('admin/tasks');
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return Response
*/
public function destroy($id)
{
//
$entity = \App\AndroidTask::find($id);
$entity->delete();
Session::flash('message','Task with Id='.$id.' is deleted');
return Redirect::to('admin/tasks');
}
}

View File

@ -0,0 +1,131 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Auth;
use Redirect;
use Session;
class AndroidFileResultController extends Controller
{
public function create($id) {
//
$topic = \App\AndroidTopic::find($id);
$files = \App\AndroidTopicFiles::where('topic','=',$id)->get();
return view('student/androidcourse/lfiles/create')
->with(compact('files'))
->with(compact('topic'));
}
public function store(Request $request)
{
//
$rules =[
'rscfile'=>'required'
];
$msg=[
'rscfile.required'=>'Resource File must not empty'
];
$validator=Validator::make($request->all(),$rules,$msg);
//jika data ada yang kosong
if ($validator->fails()) {
return Redirect::to('student/androidcourse/lfiles/create/'.$request->get('topic'))
->withErrors($validator);
} else {
$file = $request->file('rscfile');
$filename = $file->getClientOriginalName();
$fileinfo = \App\AndroidTopicFiles::find($request->get('fileid'));
if ($fileinfo['fileName']!=$filename) {
return Redirect::to('student/androidcourse/lfiles/create/'.$request->get('topic'))
->withErrors("File name should be ".$fileinfo['fileName']);
} else {
$result = \App\AndroidFileResult::where('userid','=',Auth::user()->id)
->where('fileid','=',$request->get('fileid'))
->get();
if (count($result)>0) {
return Redirect::to('student/androidcourse/lfiles/create/'.$request->get('topic'))
->withErrors('File '.$fileinfo['fileName'].' was already submitted');
} else {
$rsc=$file->store('resource','public');
$entity=new \App\AndroidFileResult;
$entity->userid=Auth::user()->id;
$entity->fileid=$request->get('fileid');
$entity->rscfile=$rsc;
$entity->save();
Session::flash('message','A New File Result Stored');
//return "Add new topic is success";
return Redirect::to('student/androidcourse/results?topicList='.$fileinfo['topic'])->with( [ 'topic' => $request->get('topic') ] );
}
}
}
}
public function destroy(Request $request,$id)
{
//
$entity = \App\AndroidFileResult::find($id);
$path = storage_path('app\\public\\').$entity['rscfile'];
//$path = str_replace('\\',DIRECTORY_SEPARATOR,$path);
//$dirpath = storage_path('app\\public\\\');
File::delete(getPath($path));
$entity->delete();
Session::flash('File Result with Id='.$id.' is deleted');
return Redirect::to('student/androidcourse/results?topicList='.$request->get('topic'));
}
public function delete($id,$topic)
{
//
$entity = \App\AndroidFileResult::find($id);
$path = storage_path('app\\public\\').$entity['rscfile'];
//$path = str_replace('\\',DIRECTORY_SEPARATOR,$path);
//$dirpath = storage_path('app\\public\\\');
File::delete($path);
$entity->delete();
Session::flash('File Result with Id='.$id.' is deleted');
return Redirect::to('student/androidcourse/results?topicList='.$topic.'&option=files');
}
public function submit($id) {
//
$entity=new \App\AndroidStudentSubmit;
$entity->userid=Auth::user()->id;
$entity->topic=$id;
$entity->validstat="valid";
$entity->save();
$topic = \App\AndroidTopic::find($id);
Session::flash('message','Topic '.$topic['name'].' Validation is Success');
//return "Add new topic is success";
return Redirect::to('student/androidcourse/results?topicList='.$id);
}
public function getPath($path) {
$res = str_replace('\\',DIRECTORY_SEPARATOR,$path);
return str_replace('/',DIRECTORY_SEPARATOR,$res);
}
}

View File

@ -0,0 +1,404 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Auth;
use Redirect;
use Session;
class AndroidResultController extends Controller
{
public function index(Request $request) {
//$check=\App\StudentTeacher::where('student','=',Auth::user()->id);
//if ($check->count()==0) return view('student/home')->with(['count'=>$check->count()]);
$check=\App\User::find(Auth::user()->id);
if ($check->status!='active') return view('student/androidcourse/home')->with(['status'=>$check->status]);
$filter = $request->input('topicList','6');
if ($filter=='0') {
$entities=\App\AndroidTaskResult::where('userid','=',Auth::user()->id);
} else {
$entities = \App\AndroidTask::where('tasks.topic','=',$filter)
->select(
'task_results.id',
'task_results.taskid',
'task_results.userid',
'task_results.status',
'task_results.duration',
'task_results.comment',
'task_results.imgFile',
'tasks.taskno',
'tasks.desc',
'tasks.topic'
)
->leftJoin('task_results', function($join)
{
$join->on('tasks.id','=','task_results.taskid')
->where('task_results.userid', '=', Auth::user()->id);
}
)
->orderBy('tasks.taskno', 'asc')
->get();
}
$lfiles = \App\AndroidTopicFiles::where('topic_files.topic','=',$filter)
->select(
'file_results.id',
'file_results.userid',
'file_results.rscfile',
'file_results.fileid',
'topic_files.fileName',
'topic_files.path',
'topic_files.desc'
)
->leftJoin('file_results', function($join)
{
$join->on('topic_files.id','=','file_results.fileid')
->where('file_results.userid', '=', Auth::user()->id);
}
)
->orderBy('topic_files.fileName', 'asc')
->get();
$items = \App\AndroidTopic::
where('status','>=','0')
->where('androidclass','=','AndroidX')
->orderBy('name','asc')
->orderBy('level','asc')
->pluck('name', 'id');
$valid = \App\AndroidStudentSubmit::where('userid','=',Auth::user()->id)
->where('topic','=',$filter)
->get()->count();
$option = $request->input('option','github');
$currtopic = \App\AndroidTopic::find($filter);
return view('student/androidcourse/results/index')
->with(compact('entities'))
->with(compact('lfiles'))
->with(compact('items'))
->with(compact('filter'))
->with(compact('option'))
->with(compact('currtopic'))
->with(compact('valid'));
}
public function getTaskData($topic) {
$items = \App\AndroidTask::where('tasks.topic','=',$topic)
->select(
'tasks.id',
'tasks.taskno',
'tasks.desc',
'topics.name'
)
->join(
'topics',
'topics.id','=','tasks.topic'
)
->orderBy('topics.name', 'asc')
->orderBy('tasks.taskno', 'asc')
->get();
return $items;
}
public function create($id)
{
$items = \App\AndroidTask::where('topic','=',$id)
->orderBy('taskno', 'asc')
->get();
$topic = \App\AndroidTopic::find($id);
return view('student/androidcourse/results/create')
->with(compact('topic'))
->with(compact('items'));
}
private function validateByFiles($userid, $topic) {
//
$entity=new \App\AndroidStudentSubmit;
$entity->userid=$userid;
$entity->topic=$topic;
$entity->validstat="valid";
$entity->save();
$data = \App\AndroidTopic::find($topic);
Session::flash('message','Topic '.$data['name'].' Validation is Success');
//return "Add new topic is success";
return Redirect::to('student/androidcourse/results?topicList='.$topic.'&option=files');
}
private function validateZipFile($userid, $topic, $file, $path) {
//
//$file = $request->file('zipfile');
if ($path!='' ) {
//$array = explode('.', $path);
//$ext = strtolower(end($array));
$ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));
if ($ext=="zip") {
$zipFile=$file->store('results','public');
if ($zipFile!='') {
$entity=new \App\AndroidStudentSubmit;
$entity->userid=$userid;
$entity->topic=$topic;
$entity->validstat="valid";
$entity->projectfile=$zipFile;
$entity->save();
$data = \App\AndroidTopic::find($topic);
Session::flash('message','Topic '.$data['name'].' Validation by Uploading Zip Project is Success');
} else {
Session::flash('message','Storing file '.$request->file('zipfile').' was FAILED');
}
} else {
Session::flash('message','File extension is not zip -> '.$path.' is wrong .'.$ext);
}
} else {
Session::flash('message','Zip File is empty');
}
//return "Add new topic is success";
return Redirect::to('student/androidcourse/results?topicList='.$topic.'&option=zipfile');
}
private function validateGithubLink($userid, $topic, $link, $projname) {
//
$trimmedlink = trim($link);
if ($this->validateUrl($trimmedlink,$projname)) {
/*
$zipFile=$file->store('results','public');
if ($zipFile!='') {
$entity=new \App\AndroidStudentSubmit;
$entity->userid=$userid;
$entity->topic=$topic;
$entity->validstat="valid";
$entity->projectfile=$zipFile;
$entity->save();
$data = \App\AndroidTopic::find($topic);
Session::flash('message','Topic '.$data['name'].' Validation is Success');
} else {
Session::flash('message','Storing file '.$request->file('zipfile').' was FAILED');
}
*/
$entity=new \App\AndroidStudentSubmit;
$entity->userid=$userid;
$entity->topic=$topic;
$entity->validstat="valid";
$entity->githublink=$trimmedlink;
$entity->save();
$data = \App\AndroidTopic::find($topic);
Session::flash('message','Topic '.$data['name'].' Validation by submitting GitHub link is Success');
//Session::flash('message','URL valid '.$link);
} else {
Session::flash('message','URL is not VALID '.$link);
}
//return "Add new topic is success";
return Redirect::to('student/androidcourse/results?topicList='.$topic.'&option=github');
}
private function validateUrl($url,$projname) {
$path = parse_url($url, PHP_URL_PATH);
$encoded_path = array_map('urlencode', explode('/', $path));
$url = str_replace($path, implode('/', $encoded_path), $url);
if (filter_var($url, FILTER_VALIDATE_URL)) {
$result = parse_url($url);
if ( ($result['scheme']=='https') && ($this->endsWith($result['host'],'github.com'))
&& (strpos($result['path'],$projname)) ) {
return true;
} else {
return false;
}
} else {
return false;
}
}
private function endsWith($haystack, $needle) {
return substr_compare($haystack, $needle, -strlen($needle)) === 0;
}
private function saveTaskResult(Request $request)
{
//
$rules =[
'duration'=>'required',
'image'=>'required',
'comment'=>'required'
];
$msg=[
'duration.required'=>'Duration time must not empty',
'image.required'=>'Evidence image file must not empty',
'comment.required'=>'Comment must not empty'
];
$validator=Validator::make($request->all(),$rules,$msg);
//jika data ada yang kosong
if ($validator->fails()) {
//refresh halaman
return Redirect::to('student/androidcourse/results/create/'.$request->get('topic'))
->withErrors($validator);
} else {
$check = \App\AndroidTaskResult::where('userid','=',Auth::user()->id)
->where('taskid','=',$request->get('taskid'))
->get();
if (sizeof($check)>0) {
$task = \App\AndroidTask::find($request->get('taskid'));
$message = 'Result of Task '.$task['desc'].' is already submitted!!';
//Session::flash('message',);
return Redirect::to('student/androidcourse/results/create'.$request->get('topic'))->withErrors($message);
} else {
$file = $request->file('image');
$imgFile=$file->store('results','public');
$entity=new \App\AndroidTaskResult;
$comment = ($request->get('comment')==null)?'-':$request->get('comment');
$entity->userid=Auth::user()->id;
$entity->taskid=$request->get('taskid');
$entity->status=$request->get('status');
$entity->duration=$request->get('duration');
$entity->comment=$comment;
$entity->imgFile=$imgFile;
$entity->save();
Session::flash('message','A New Task Result Stored');
//return "Add new topic is success";
return Redirect::to('student/androidcourse/results?topicList='.$request->get('topic'))->with( [ 'topic' => $request->get('topic') ] );
}
}
}
public function store(Request $request)
{
if (strlen($request->get('option'))>3) {
if (($request->get('action')=='validate') && (strlen($request->submitbutton)>5)) {
if ($request->get('option')=='files') {
return $this->validateByFiles(Auth::user()->id, $request->get('topic'));
} else if ($request->get('option')=='zipfile') {
$file = $request->file('zipfile');
$filename = $file->getClientOriginalName();
return $this->validateZipFile(Auth::user()->id, $request->get('topic'), $file, $filename);
} else if ($request->get('option')=='github') {
return $this->validateGithubLink(Auth::user()->id, $request->get('topic'), $request->get('githublink'),
$request->get('projname'));
} else {
return Redirect::to('student/androidcourse/results?topicList='.$request->get('topic').'&option='.$request->get('option').
'&submit='.$request->submitbutton);
}
} else { //clicking radio button
return Redirect::to('student/androidcourse/results?topicList='.$request->get('topic').'&option='.$request->get('option'));
//'&submit='.$request->submitbutton);
}
} else { //echo $request;
return $this->saveTaskResult($request);
}
}
public function destroy(Request $request, $id)
{
//
$entity = \App\AndroidTaskResult::find($id);
$entity->delete();
Session::flash('message','Task Result with Id='.$id.' is deleted');
return Redirect::to('student/androidcourse/results?topicList='.$request->get('topic'));
}
public function edit($id)
{
//
$entity = \App\AndroidTaskResult::where('id','=',$id)->first();
$task = \App\AndroidTask::where('id','=',$entity['taskid'])->first();
return view('student/androidcourse/results/edit')->with(compact('entity'))
->with(compact('task'));
}
public function valsub(Request $request)
{
$items = \App\AndroidTask::where('topic','=',$id)
->orderBy('taskno', 'asc')
->get();
$topic = \App\AndroidTopic::find($id);
return view('student/androidcourse/results/create')
->with(compact('topic'))
->with(compact('items'));
}
public function update(Request $request, $id) {
//
$rules =[
'duration'=>'required',
];
$msg=[
'duration.required'=>'Duration time must not empty',
];
$validator=Validator::make($request->all(),$rules,$msg);
if ($validator->fails()) {
return Redirect::to('student/androidcourse/results/'.$id.'/edit')
->withErrors($validator);
}else{
$file = $request->file('image');
$entity=\App\AndroidTaskResult::find($id);
$entity->taskid=$request->get('taskid');
$entity->status=$request->get('status');
$entity->duration=$request->get('duration');
$entity->comment=$request->get('comment');
if ($file!='') {
$imgFile=$file->store('results','public');
$entity->imgFile=$imgFile;
}
$entity->save();
Session::flash('message','Task Result with Id='.$id.' is changed');
$task = \App\AndroidTask::find($request->get('taskid'));
return Redirect::to('student/androidcourse/results?topicList='.$task['topic']);
}
}
}

View File

@ -0,0 +1,379 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Auth;
use Redirect;
use Session;
class AndroidTaskResultController extends Controller
{
public function index(Request $request) {
$check=\App\AndroidUser::find(Auth::user()->id);
if ($check->status!='active') return view('student/androidcourse/home')->with(['status'=>$check->status]);
$filter = $request->input('topicList','6');
if ($filter=='0') {
$entities=\App\AndroidTaskResult::where('userid','=',Auth::user()->id);
} else {
$entities = \App\AndroidTask::where('tasks.topic','=',$filter)
->select(
'task_results.id',
'task_results.taskid',
'task_results.userid',
'task_results.status',
'task_results.duration',
'task_results.comment',
'task_results.imgFile',
'tasks.taskno',
'tasks.desc',
'tasks.topic'
)
->leftJoin('task_results', function($join)
{
$join->on('tasks.id','=','task_results.taskid')
->where('task_results.userid', '=', Auth::user()->id);
}
)
->orderBy('tasks.taskno', 'asc')
->get();
}
$lfiles = \App\AndroidTopicFiles::where('topic_files.topic','=',$filter)
->select(
'file_results.id',
'file_results.userid',
'file_results.rscfile',
'file_results.fileid',
'topic_files.fileName',
'topic_files.path',
'topic_files.desc'
)
->leftJoin('file_results', function($join)
{
$join->on('topic_files.id','=','file_results.fileid')
->where('file_results.userid', '=', Auth::user()->id);
}
)
->orderBy('topic_files.fileName', 'asc')
->get();
$items = \App\AndroidTopic::
where('status','>=','0')
->where('androidclass','=','AndroidX')
->orderBy('name','asc')
->orderBy('level','asc')
->pluck('name', 'id');
$valid = \App\AndroidStudentSubmit::where('userid','=',Auth::user()->id)
->where('topic','=',$filter)
->get()->count();
$option = $request->input('option','github');
$currtopic = \App\AndroidTopic::find($filter);
return view('student/androidcourse/results/index')
->with(compact('entities'))
->with(compact('lfiles'))
->with(compact('items'))
->with(compact('filter'))
->with(compact('option'))
->with(compact('currtopic'))
->with(compact('valid'));
}
public function getTaskData($topic) {
$items = \App\AndroidTask::where('tasks.topic','=',$topic)
->select(
'tasks.id',
'tasks.taskno',
'tasks.desc',
'topics.name'
)
->join(
'topics',
'topics.id','=','tasks.topic'
)
->orderBy('topics.name', 'asc')
->orderBy('tasks.taskno', 'asc')
->get();
return $items;
}
public function create($id)
{
$items = \App\AndroidTask::where('topic','=',$id)
->orderBy('taskno', 'asc')
->get();
$topic = \App\AndroidTopic::find($id);
return view('student/androidcourse/results/create')
->with(compact('topic'))
->with(compact('items'));
}
private function validateByFiles($userid, $topic) {
//
$entity=new \App\AndroidStudentSubmit;
$entity->userid=$userid;
$entity->topic=$topic;
$entity->validstat="valid";
$entity->save();
$data = \App\AndroidTopic::find($topic);
Session::flash('message','Topic '.$data['name'].' Validation is Success');
return Redirect::to('student/androidcourse/results?topicList='.$topic.'&option=files');
}
private function validateZipFile($userid, $topic, $file, $path) {
if ($path!='' ) {
$ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));
if ($ext=="zip") {
$zipFile=$file->store('results','public');
if ($zipFile!='') {
$entity=new \App\AndroidStudentSubmit;
$entity->userid=$userid;
$entity->topic=$topic;
$entity->validstat="valid";
$entity->projectfile=$zipFile;
$entity->save();
$data = \App\AndroidTopic::find($topic);
Session::flash('message','Topic '.$data['name'].' Validation by Uploading Zip Project is Success');
} else {
Session::flash('message','Storing file '.$request->file('zipfile').' was FAILED');
}
} else {
Session::flash('message','File extension is not zip -> '.$path.' is wrong .'.$ext);
}
} else {
Session::flash('message','Zip File is empty');
}
//return "Add new topic is success";
return Redirect::to('student/androidcourse/results?topicList='.$topic.'&option=zipfile');
}
private function validateGithubLink($userid, $topic, $link, $projname) {
//
$trimmedlink = trim($link);
if ($this->validateUrl($trimmedlink,$projname)) {
$entity=new \App\AndroidStudentSubmit;
$entity->userid=$userid;
$entity->topic=$topic;
$entity->validstat="valid";
$entity->githublink=$trimmedlink;
$entity->save();
$data = \App\AndroidTopic::find($topic);
Session::flash('message','Topic '.$data['name'].' Validation by submitting GitHub link is Success');
//Session::flash('message','URL valid '.$link);
} else {
Session::flash('message','URL is not VALID '.$link);
}
//return "Add new topic is success";
return Redirect::to('student/androidcourse/results?topicList='.$topic.'&option=github');
}
private function validateUrl($url,$projname) {
$path = parse_url($url, PHP_URL_PATH);
$encoded_path = array_map('urlencode', explode('/', $path));
$url = str_replace($path, implode('/', $encoded_path), $url);
if (filter_var($url, FILTER_VALIDATE_URL)) {
$result = parse_url($url);
if ( ($result['scheme']=='https') && ($this->endsWith($result['host'],'github.com'))
&& (strpos($result['path'],$projname)) ) {
return true;
} else {
return false;
}
} else {
return false;
}
}
private function endsWith($haystack, $needle) {
return substr_compare($haystack, $needle, -strlen($needle)) === 0;
}
private function saveTaskResult(Request $request)
{
//
$rules =[
'duration'=>'required',
'image'=>'required',
'comment'=>'required'
];
$msg=[
'duration.required'=>'Duration time must not empty',
'image.required'=>'Evidence image file must not empty',
'comment.required'=>'Comment must not empty'
];
$validator=Validator::make($request->all(),$rules,$msg);
//jika data ada yang kosong
if ($validator->fails()) {
//refresh halaman
return Redirect::to('student/androidcourse/results/create/'.$request->get('topic'))
->withErrors($validator);
} else {
$check = \App\AndroidTaskResult::where('userid','=',Auth::user()->id)
->where('taskid','=',$request->get('taskid'))
->get();
if (sizeof($check)>0) {
$task = \App\AndroidTask::find($request->get('taskid'));
$message = 'Result of Task '.$task['desc'].' is already submitted!!';
//Session::flash('message',);
return Redirect::to('student/androidcourse/results/create'.$request->get('topic'))->withErrors($message);
} else {
$file = $request->file('image');
$imgFile=$file->store('result','public');
$entity=new \App\AndroidTaskResult;
$comment = ($request->get('comment')==null)?'-':$request->get('comment');
$entity->userid=Auth::user()->id;
$entity->taskid=$request->get('taskid');
$entity->status=$request->get('status');
$entity->duration=$request->get('duration');
$entity->comment=$comment;
$entity->imgFile=$imgFile;
$entity->save();
Session::flash('message','A New Task Result Stored');
//return "Add new topic is success";
return Redirect::to('student/androidcourse/results?topicList='.$request->get('topic'))->with( [ 'topic' => $request->get('topic') ] );
}
}
}
public function store(Request $request)
{
if (strlen($request->get('option'))>3) {
if (($request->get('action')=='validate') && (strlen($request->submitbutton)>5)) {
if ($request->get('option')=='files') {
return $this->validateByFiles(Auth::user()->id, $request->get('topic'));
} else if ($request->get('option')=='zipfile') {
$file = $request->file('zipfile');
$filename = $file->getClientOriginalName();
return $this->validateZipFile(Auth::user()->id, $request->get('topic'), $file, $filename);
} else if ($request->get('option')=='github') {
return $this->validateGithubLink(Auth::user()->id, $request->get('topic'), $request->get('githublink'),
$request->get('projname'));
} else {
return Redirect::to('student/androidcourse/results?topicList='.$request->get('topic').'&option='.$request->get('option').
'&submit='.$request->submitbutton);
}
} else { //clicking radio button
return Redirect::to('student/androidcourse/results?topicList='.$request->get('topic').'&option='.$request->get('option'));
//'&submit='.$request->submitbutton);
}
} else { //echo $request;
return $this->saveTaskResult($request);
}
}
public function destroy(Request $request, $id)
{
//
$entity = \App\AndroidTaskResult::find($id);
$entity->delete();
Session::flash('message','Task Result with Id='.$id.' is deleted');
return Redirect::to('student/androidcourse/results?topicList='.$request->get('topic'));
}
public function edit($id)
{
//
$entity = \App\AndroidTaskResult::where('id','=',$id)->first();
$task = \App\AndroidTask::where('id','=',$entity['taskid'])->first();
return view('student/androidcourse/results/edit')->with(compact('entity'))
->with(compact('task'));
}
public function valsub(Request $request)
{
$items = \App\AndroidTask::where('topic','=',$id)
->orderBy('taskno', 'asc')
->get();
$topic = \App\AndroidTopic::find($id);
return view('student/androidcourse/results/create')
->with(compact('topic'))
->with(compact('items'));
}
public function update(Request $request, $id) {
//
$rules =[
'duration'=>'required',
];
$msg=[
'duration.required'=>'Duration time must not empty',
];
$validator=Validator::make($request->all(),$rules,$msg);
if ($validator->fails()) {
return Redirect::to('student/androidcourse/results/'.$id.'/edit')
->withErrors($validator);
}else{
$file = $request->file('image');
$entity=\App\AndroidTaskResult::find($id);
$entity->taskid=$request->get('taskid');
$entity->status=$request->get('status');
$entity->duration=$request->get('duration');
$entity->comment=$request->get('comment');
if ($file!='') {
$imgFile=$file->store('results','public');
$entity->imgFile=$imgFile;
}
$entity->save();
Session::flash('message','Task Result with Id='.$id.' is changed');
$task = \App\AndroidTask::find($request->get('taskid'));
return Redirect::to('student/androidcourse/results?topicList='.$task['topic']);
}
}
}

View File

@ -1,206 +0,0 @@
@extends('student/androidcourse/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">
<form
method="GET"
action="http://learning.aplas.online/aplas/public/student/tasks"
accept-charset="UTF-8"
>
<div class="form-group">
<label for="topic">Learning Topic:</label>
<select
class="form-control"
id="topicList"
onchange="this.form.submit();"
name="topicList"
>
<option value="6" selected="selected">
A2:Android Java - AsyncTask - for Android Studio
</option>
</select>
<div class="form-group">
<label for="description">Description</label>
<textarea
id="desc"
class="form-control"
disabled=""
rows="2"
>
Java Edition for Android Studio
This topic contains learning about AsyncTask
</textarea
>
</div>
<!--
<label for="topic">Topic:</label>
<select class="form-control" onchange="doSomething(this)" id="topic" name="topic"><option value="6">A1:Java - Basic UI Java Edition - for Android Studio 3.x</option><option value="28">A1:Java - Basic UI Java Edition - for Android Studio 4.x</option><option value="15">A1:Kotlin - Basic UI Kotlin Edition</option><option value="7">B1:Java - Basic Activity Java Edition - for Android Studio 3.x</option><option value="30">B1:Java - Basic Activity Java Edition - for Android Studio 4.x</option><option value="16">B1:Kotlin - Basic Activity Kotlin Edition</option><option value="8">B2:Java - Advanced Widgets Java Edition - for Android Studio 3.x</option><option value="32">B2:Java - Advanced Widgets Java Edition - for Android Studio 4.x</option><option value="17">B2:Kotlin - Advanced Widgets Kotlin Edition</option><option value="4">B3:Java - Multiple Activities Java Edition - for Android Studio 3.x</option><option value="34">B3:Java - Multiple Activities Java Edition - for Android Studio 4.x</option><option value="21">B3:Kotlin - Multiple Activities Kotlin Edition</option><option value="5">B4:Java - Multimedia Resources Java Edition</option><option value="23">B4:Kotlin - Multimedia Resources Kotlin Edition</option><option value="26">C1:Java - Basic Data Storage Java Edition</option></select>
-->
</div>
</form>
<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
>C2:Java - AsyncTask - for
Android Studio </b
>
</td>
<td class="text-center">
<div class="btn-group">
<div class="btn-group">
<a class="btn btn-success" href="{{asset('download/asynctask/GUIDE ASYNCTASK.rar')}}"><i class="fa fa-download"></i>&nbsp;Download</a>
</div>
</div>
</td>
<td class="text-center">
<div class="btn-group">
<div class="btn-group">
<a class="btn btn-warning" href="{{asset('download/asynctask/TEST FILE.rar')}}"><i class="fa fa-download"></i>&nbsp;Download</a>
</div>
</div>
</td>
<td class="text-center">
<div class="btn-group">
<div class="btn-group">
<a class="btn btn-primary" href="{{asset('download/asynctask/SUPLEMENT FILE.rar')}}"><i class="fa fa-download"></i>&nbsp;Download</a>
</div>
</div>
</td>
<td class="text-center">
<div class="btn-group">
<div class="btn-group">
<a class="btn btn-info" href="{{asset('download/asynctask/GUIDE ASYNCTASK.rar')}}"><i class="fa fa-download"></i>&nbsp;Download</a>
</div>
</div>
</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>
<tr>
<td class="text-center">1</td>
<td> Create Layout and Project Configuration</td>
<td>
C2:Java- AsyncTask Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/39"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">2</td>
<td> Create Layout Activity_Main Image Download </td>
<td>
C2:Java- AsyncTask Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/31"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">3</td>
<td>Create Layout Activity_Audio Play Music</td>
<td>
C2:Java- AsyncTask Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/32"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">4</td>
<td>Configuration MainActivity Download Image with AsyncTask</td>
<td>
C2:Java- AsyncTask Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/33"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">5</td>
<td>Configuration Activity Play Music with AsyncTask</td>
<td>
C2:Java- AsyncTask Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/34"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -1,336 +0,0 @@
@extends('student/androidcourse/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">
<form
method="GET"
action="http://learning.aplas.online/aplas/public/student/tasks"
accept-charset="UTF-8"
>
<div class="form-group">
<label for="topic">Learning Topic:</label>
<select
class="form-control"
id="topicList"
onchange="this.form.submit();"
name="topicList"
>
<option value="6" selected="selected">
A1:Java - Basic UI Java Edition - for Android Studio
3.x
</option>
<option value="28">
A1:Java - Basic UI Java Edition - for Android Studio
4.x
</option>
<option value="15">
A1:Kotlin - Basic UI Kotlin Edition
</option>
<option value="7">
B1:Java - Basic Activity Java Edition - for Android
Studio 3.x
</option>
<option value="30">
B1:Java - Basic Activity Java Edition - for Android
Studio 4.x
</option>
<option value="16">
B1:Kotlin - Basic Activity Kotlin Edition
</option>
<option value="8">
B2:Java - Advanced Widgets Java Edition - for
Android Studio 3.x
</option>
<option value="32">
B2:Java - Advanced Widgets Java Edition - for
Android Studio 4.x
</option>
<option value="17">
B2:Kotlin - Advanced Widgets Kotlin Edition
</option>
<option value="4">
B3:Java - Multiple Activities Java Edition - for
Android Studio 3.x
</option>
<option value="34">
B3:Java - Multiple Activities Java Edition - for
Android Studio 4.x
</option>
<option value="21">
B3:Kotlin - Multiple Activities Kotlin Edition
</option>
<option value="5">
B4:Java - Multimedia Resources Java Edition
</option>
<option value="23">
B4:Kotlin - Multimedia Resources Kotlin Edition
</option>
<option value="26">
C1:Java - Basic Data Storage Java Edition
</option>
</select>
<div class="form-group">
<label for="description">Description</label>
<textarea
id="desc"
class="form-control"
disabled=""
rows="2"
>
Java Edition for Android Studio 3.x
This topic contains several material lessons including project properties, layout design using XML and definition and management of resources like drawable, colors, strings and styles. This is an important step in learning Android, where users will start creating Android applications by designing interfaces with XML.
(NB: Panduan dalam bahasa Indonesia ada file Others)</textarea
>
</div>
<!--
<label for="topic">Topic:</label>
<select class="form-control" onchange="doSomething(this)" id="topic" name="topic"><option value="6">A1:Java - Basic UI Java Edition - for Android Studio 3.x</option><option value="28">A1:Java - Basic UI Java Edition - for Android Studio 4.x</option><option value="15">A1:Kotlin - Basic UI Kotlin Edition</option><option value="7">B1:Java - Basic Activity Java Edition - for Android Studio 3.x</option><option value="30">B1:Java - Basic Activity Java Edition - for Android Studio 4.x</option><option value="16">B1:Kotlin - Basic Activity Kotlin Edition</option><option value="8">B2:Java - Advanced Widgets Java Edition - for Android Studio 3.x</option><option value="32">B2:Java - Advanced Widgets Java Edition - for Android Studio 4.x</option><option value="17">B2:Kotlin - Advanced Widgets Kotlin Edition</option><option value="4">B3:Java - Multiple Activities Java Edition - for Android Studio 3.x</option><option value="34">B3:Java - Multiple Activities Java Edition - for Android Studio 4.x</option><option value="21">B3:Kotlin - Multiple Activities Kotlin Edition</option><option value="5">B4:Java - Multimedia Resources Java Edition</option><option value="23">B4:Kotlin - Multimedia Resources Kotlin Edition</option><option value="26">C1:Java - Basic Data Storage Java Edition</option></select>
-->
</div>
</form>
<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
>A1:Java - Basic UI Java Edition - for
Android Studio 3.x</b
>
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-success"
href="http://learning.aplas.online/aplas/public/download/guide/hZjj0c869MhrdzSSGWQAtgLbkvdkRSnlXj8lwHPw.zip/A1:Java-BasicUIJavaEdition-forAndroidStudio3.x"
><i class="fa fa-download"></i
>&nbsp;Download</a
>
</div>
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-warning"
href="http://learning.aplas.online/aplas/public/download/test/U9nBOg4RkEqocQ0iJv52iEkmGaCeS6GpiXnnmeJc.zip/A1:Java-BasicUIJavaEdition-forAndroidStudio3.x"
><i class="fa fa-download"></i
>&nbsp;Download</a
>
</div>
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-primary"
href="http://learning.aplas.online/aplas/public/download/supp/UxgFVP2PZ5Weo3y9XYXGNMKlCQ6CGLHKl3mDHKv6.zip/A1:Java-BasicUIJavaEdition-forAndroidStudio3.x"
><i class="fa fa-download"></i
>&nbsp;Download</a
>
</div>
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/download/other/fGmOJ5QWh79TRZxN8gMLBhCAvDAnuxdKuiZzv6D0.zip/A1:Java-BasicUIJavaEdition-forAndroidStudio3.x"
><i class="fa fa-download"></i
>&nbsp;Download</a
>
</div>
</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>
<tr>
<td class="text-center">1</td>
<td>Project Configuration</td>
<td>
A1:Java - Basic UI Java Edition - for
Android Studio 3.x
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/39"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">2</td>
<td>Resource configuration</td>
<td>
A1:Java - Basic UI Java Edition - for
Android Studio 3.x
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/31"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">3</td>
<td>Main layout, textview, button</td>
<td>
A1:Java - Basic UI Java Edition - for
Android Studio 3.x
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/32"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">4</td>
<td>Space and Child layout</td>
<td>
A1:Java - Basic UI Java Edition - for
Android Studio 3.x
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/33"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">5</td>
<td>String-array, EditText, Spinner</td>
<td>
A1:Java - Basic UI Java Edition - for
Android Studio 3.x
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/34"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">6</td>
<td>Checkbox</td>
<td>
A1:Java - Basic UI Java Edition - for
Android Studio 3.x
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/35"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">7</td>
<td>RadioGroup</td>
<td>
A1:Java - Basic UI Java Edition - for
Android Studio 3.x
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/36"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">8</td>
<td>Image resource and ImageView</td>
<td>
A1:Java - Basic UI Java Edition - for
Android Studio 3.x
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/37"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">9</td>
<td>Drawable resource and Table layout</td>
<td>
A1:Java - Basic UI Java Edition - for
Android Studio 3.x
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/38"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -1,286 +0,0 @@
@extends('student/androidcourse/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">
<form
method="GET"
action="http://learning.aplas.online/aplas/public/student/tasks"
accept-charset="UTF-8"
>
<div class="form-group">
<label for="topic">Learning Topic:</label>
<select
class="form-control"
id="topicList"
onchange="this.form.submit();"
name="topicList"
>
<option value="6" selected="selected">
A3:Android Java - Firebase - for Android Studio
</option>
</select>
<div class="form-group">
<label for="description">Description</label>
<textarea
id="desc"
class="form-control"
disabled=""
rows="2"
>
Java Edition for Android Studio
This topic contains learning about Firebase
</textarea
>
</div>
<!--
<label for="topic">Topic:</label>
<select class="form-control" onchange="doSomething(this)" id="topic" name="topic"><option value="6">A1:Java - Basic UI Java Edition - for Android Studio 3.x</option><option value="28">A1:Java - Basic UI Java Edition - for Android Studio 4.x</option><option value="15">A1:Kotlin - Basic UI Kotlin Edition</option><option value="7">B1:Java - Basic Activity Java Edition - for Android Studio 3.x</option><option value="30">B1:Java - Basic Activity Java Edition - for Android Studio 4.x</option><option value="16">B1:Kotlin - Basic Activity Kotlin Edition</option><option value="8">B2:Java - Advanced Widgets Java Edition - for Android Studio 3.x</option><option value="32">B2:Java - Advanced Widgets Java Edition - for Android Studio 4.x</option><option value="17">B2:Kotlin - Advanced Widgets Kotlin Edition</option><option value="4">B3:Java - Multiple Activities Java Edition - for Android Studio 3.x</option><option value="34">B3:Java - Multiple Activities Java Edition - for Android Studio 4.x</option><option value="21">B3:Kotlin - Multiple Activities Kotlin Edition</option><option value="5">B4:Java - Multimedia Resources Java Edition</option><option value="23">B4:Kotlin - Multimedia Resources Kotlin Edition</option><option value="26">C1:Java - Basic Data Storage Java Edition</option></select>
-->
</div>
</form>
<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
>A3:Java - Firebase - for
Android Studio </b
>
</td>
<td class="text-center">
<div class="btn-group">
<div class="btn-group">
<a class="btn btn-success" href="{{asset('download/firebase/GUIDE_FIREBASE.rar')}}"><i class="fa fa-download"></i>&nbsp;Download</a>
</div>
</div>
</td>
<td class="text-center">
<div class="btn-group">
<div class="btn-group">
<a class="btn btn-warning" href="{{asset('download/firebase/test-file.rar')}}"><i class="fa fa-download"></i>&nbsp;Download</a>
</div>
</div>
</td>
<td class="text-center">
<div class="btn-group">
<div class="btn-group">
<a class="btn btn-primary" href="{{asset('download/firebase/suplement-file.rar')}}"><i class="fa fa-download"></i>&nbsp;Download</a>
</div>
</div>
</td>
<td class="text-center">
<div class="btn-group">
<div class="btn-group">
<a class="btn btn-info" href="{{asset('download/firebase/GUIDE ASYNCTASK.rar')}}"><i class="fa fa-download"></i>&nbsp;Download</a>
</div>
</div>
</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>
<tr>
<td class="text-center">1</td>
<td>Firebase Configuration</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/39"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">2</td>
<td>Create Register Activity</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/31"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">3</td>
<td>Create Login Activity</td>
<td>
C3:Java - CFirebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/32"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">4</td>
<td>Desain UI Seller Home and develope Seller Home Activity</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/33"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">5</td>
<td>Desain UI Seller Home AddProduct and Develope Seller Home</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/34"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">6</td>
<td>Desain UI Seller Home Detail Product dan Develop Seller Home Detail Product Activity</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/34"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">7</td>
<td>Desain UI Buyer Home dan Develop Buyer Home Activity</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/34"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">8</td>
<td>Desain UI Buyer Home Detail Productdan Develop Buyer Home Detail ProductActivity</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/34"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">9</td>
<td>Desain UI Cart dan Develop Cart Activity</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/34"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">10</td>
<td>Desain UI Detail Cart dan Develop Detail Cart Activity</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/34"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -1,286 +0,0 @@
@extends('student/androidcourse/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">
<form
method="GET"
action="http://learning.aplas.online/aplas/public/student/tasks"
accept-charset="UTF-8"
>
<div class="form-group">
<label for="topic">Learning Topic:</label>
<select
class="form-control"
id="topicList"
onchange="this.form.submit();"
name="topicList"
>
<option value="6" selected="selected">
A3:Android Java - Firebase - for Android Studio
</option>
</select>
<div class="form-group">
<label for="description">Description</label>
<textarea
id="desc"
class="form-control"
disabled=""
rows="2"
>
Java Edition for Android Studio
This topic contains learning about Firebase
</textarea
>
</div>
<!--
<label for="topic">Topic:</label>
<select class="form-control" onchange="doSomething(this)" id="topic" name="topic"><option value="6">A1:Java - Basic UI Java Edition - for Android Studio 3.x</option><option value="28">A1:Java - Basic UI Java Edition - for Android Studio 4.x</option><option value="15">A1:Kotlin - Basic UI Kotlin Edition</option><option value="7">B1:Java - Basic Activity Java Edition - for Android Studio 3.x</option><option value="30">B1:Java - Basic Activity Java Edition - for Android Studio 4.x</option><option value="16">B1:Kotlin - Basic Activity Kotlin Edition</option><option value="8">B2:Java - Advanced Widgets Java Edition - for Android Studio 3.x</option><option value="32">B2:Java - Advanced Widgets Java Edition - for Android Studio 4.x</option><option value="17">B2:Kotlin - Advanced Widgets Kotlin Edition</option><option value="4">B3:Java - Multiple Activities Java Edition - for Android Studio 3.x</option><option value="34">B3:Java - Multiple Activities Java Edition - for Android Studio 4.x</option><option value="21">B3:Kotlin - Multiple Activities Kotlin Edition</option><option value="5">B4:Java - Multimedia Resources Java Edition</option><option value="23">B4:Kotlin - Multimedia Resources Kotlin Edition</option><option value="26">C1:Java - Basic Data Storage Java Edition</option></select>
-->
</div>
</form>
<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
>A3:Java - Firebase - for
Android Studio </b
>
</td>
<td class="text-center">
<div class="btn-group">
<div class="btn-group">
<a class="btn btn-success" href="{{asset('download/firebase/GUIDE_FIREBASE.rar')}}"><i class="fa fa-download"></i>&nbsp;Download</a>
</div>
</div>
</td>
<td class="text-center">
<div class="btn-group">
<div class="btn-group">
<a class="btn btn-warning" href="{{asset('download/firebase/test-file.rar')}}"><i class="fa fa-download"></i>&nbsp;Download</a>
</div>
</div>
</td>
<td class="text-center">
<div class="btn-group">
<div class="btn-group">
<a class="btn btn-primary" href="{{asset('download/firebase/suplement-file.rar')}}"><i class="fa fa-download"></i>&nbsp;Download</a>
</div>
</div>
</td>
<td class="text-center">
<div class="btn-group">
<div class="btn-group">
<a class="btn btn-info" href="{{asset('download/firebase/GUIDE ASYNCTASK.rar')}}"><i class="fa fa-download"></i>&nbsp;Download</a>
</div>
</div>
</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>
<tr>
<td class="text-center">1</td>
<td>Firebase Configuration</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/39"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">2</td>
<td>Create Register Activity</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/31"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">3</td>
<td>Create Login Activity</td>
<td>
C3:Java - CFirebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/32"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">4</td>
<td>Desain UI Seller Home and develope Seller Home Activity</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/33"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">5</td>
<td>Desain UI Seller Home AddProduct and Develope Seller Home</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/34"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">6</td>
<td>Desain UI Seller Home Detail Product dan Develop Seller Home Detail Product Activity</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/34"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">7</td>
<td>Desain UI Buyer Home dan Develop Buyer Home Activity</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/34"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">8</td>
<td>Desain UI Buyer Home Detail Productdan Develop Buyer Home Detail ProductActivity</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/34"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">9</td>
<td>Desain UI Cart dan Develop Cart Activity</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/34"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
<td class="text-center">10</td>
<td>Desain UI Detail Cart dan Develop Detail Cart Activity</td>
<td>
C3:Java - Firebase Java Edition
</td>
<td class="text-center">
<div class="btn-group">
<a
class="btn btn-info"
href="http://learning.aplas.online/aplas/public/student/tasks/34"
><i class="fa fa-eye"></i
></a>
</div>
</td>
</tr>
<tr>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</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-white navbar-light" style="background-color: lavender;">
<!-- 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

@ -1,84 +0,0 @@
<!DOCTYPE html>
<!--
This is a starter template page. Use this page to start your new project from
scratch. This page gets rid of all links and provides the needed markup only.
-->
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>iCLOP - Administrator Site</title>
<!-- Font Awesome Icons -->
<link rel="stylesheet" href="{{asset('lte/plugins/fontawesome-free/css/all.min.css')}}">
<!-- Theme style -->
<link rel="stylesheet" href="{{asset('lte/dist/css/adminlte.min.css')}}">
<!-- Google Font: Source Sans Pro -->
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
</head>
<body class="hold-transition sidebar-mini">
<div class="wrapper">
<!-- Navbar -->
@include('student/header')
<!-- /.navbar -->
<!-- Main Sidebar Container -->
@include('student/sidebar')
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<!-- /.content-header -->
<!-- Main content -->
@yield('content')
<!-- /.content -->
@if (isset($count))
@if ($count==0)
<div class="content">
<center>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h1>Sorry, you can not use this features yet!!</h1>
<h2>You are not assigned yet by a teacher, please kindly wait to be assigned.</h2>
<p>&nbsp;</p>
<img src="{{asset('lte/dist/img/logo-aplas.png')}}" alt="APLAS logo" class="brand-image elevation-3"
style="opacity: .8">
</center>
</div>
@endif
@endif
</div>
<!-- /.content-wrapper -->
<!-- Control Sidebar -->
<aside class="control-sidebar control-sidebar-dark">
<!-- Control sidebar content goes here -->
<div class="p-3">
<h5>Title</h5>
<p>Sidebar content</p>
</div>
</aside>
<!-- /.control-sidebar -->
<!-- Main Footer -->
@include('student/footer')
</div>
<!-- ./wrapper -->
<!-- REQUIRED SCRIPTS -->
<!-- jQuery -->
<script src="{{asset('lte/plugins/jquery/jquery.min.js')}}"></script>
<!-- Bootstrap 4 -->
<script src="{{asset('lte/plugins/bootstrap/js/bootstrap.bundle.min.js')}}"></script>
<!-- AdminLTE App -->
<script src="{{asset('lte/dist/js/adminlte.min.js')}}"></script>
</body>
</html>

View File

@ -1,4 +1,4 @@
@extends('student/home')
@extends('student/androidcourse/home')
@section('content')
<div class="row">
<div class="col-12">

View File

@ -3,8 +3,8 @@
<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>
<div class="card-header" style="background-color: #F8F8FF">
<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/androidcourse/home')
@section('content')
<div class="row">
<div class="col-12">
@ -47,10 +47,15 @@
</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 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> -->
</div>
<!-- </form> -->
{{ Form::close() }}

View File

@ -1,4 +1,4 @@
@extends('student/home')
@extends('student/androidcourse/home')
@section('content')
<div class="row">
<div class="col-12">

View File

@ -3,28 +3,23 @@
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<div class="card-header" style="background-color: #F8F8FF">
<h3 class="card-title">Student's Task Results Submission</h3>
</div>
<div class="card-body">
<div class="card-body" style="background-color: #F8F8FF">
@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']) }}
{{ Form::open(['method' => 'GET']) }}
<div class="form-group">
{!! Form::label('topic', 'Topic:') !!}
{!! Form::label('topic', 'Learning 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">
@ -32,7 +27,7 @@
{!! 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>
<a class="btn btn-success" href="{{ URL::to('/student/androidcourse/results/create/'.$filter)}}"><i class="fa fa-plus"></i>&nbsp;Submit a Task Result</a>
@endif
<table class="table table-bordered table-hover">
<thead>
@ -64,14 +59,12 @@
<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']) }}">
<form method="POST" action="{{ URL::to('/student/androidcourse/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>
<a class="btn btn-success" href="{{ URL::to('/student/androidcourse/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>
@ -130,9 +123,9 @@
<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-info" href="{{ URL::to('/student/androidcourse/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>
<!-- <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>

View File

@ -1,9 +1,10 @@
<aside class="main-sidebar sidebar-dark-primary elevation-4">
<!-- Brand Logo -->
<a href="#" class="brand-link">
<img src="{{asset('lte/dist/img/logo-aplas.png')}}" alt="APLAS logo" class="brand-image elevation-3"
style="opacity: .8">
<span class="brand-text font-weight-light">WebApps</span>
<img src="{{asset('lte/dist/img/iclop-logo.png')}}" alt="iCLOP logo" class="brand-image elevation-3"
style="width:120px;height:60px;">
<br>
<span class="brand-text font-weight-light" style="font-size:160%;"> &nbsp; Android Course</span>
</a>
<!-- Sidebar -->
@ -32,111 +33,17 @@
</a>
<ul role="menu" class="nav nav-pills nav-sidebar flex-column">
<li class="nav-item">
<a href="{{URL::to('student/tasks')}}" class="nav-link"><i class="nav-icon fas fa-angle-right"></i>
<a href="{{URL::to('student/androidcourse/tasks')}}" class="nav-link"><i class="nav-icon fas fa-angle-right"></i>
<p>Download Materials</p>
</a >
</li>
<li class="nav-item">
<a href="{{URL::to('student/results')}}" class="nav-link">
<a href="{{URL::to('student/androidcourse/results')}}" class="nav-link">
<i class="nav-icon fas fa-angle-right"></i>
<p>Submit Your Project </p>
</a>
</li>
<li class="nav-item">
<a href="{{URL::to('student/valid')}}" class="nav-link">
<i class="nav-icon fas fa-angle-right"></i>
<p>
Validation Results
</p>
</a>
</li>
<li class="nav-item">
<a href="{{URL::to('student/rankview')}}" class="nav-link">
<i class="nav-icon fas fa-angle-right""></i>
<p>
Top 20 Rank
</p>
</a>
</li>
</ul>
</li>
<li class="treeview">
<a href="#" class="nav-link" style="background-color:#FCF3CF;color:black;">
<i class="nav-icon fas fa-motorcycle"></i>
<p><b>Take Exercise</b>
</p>
</a>
<ul role="menu" class="nav nav-pills nav-sidebar flex-column">
<li class="nav-item">
<a href="{{URL::to('student/exercise')}}" class="nav-link"><i class="nav-icon fas fa-angle-right"></i>
<p>List of Exercises <span class="right badge badge-danger">New</span>
</p>
</a >
</li>
<li class="nav-item">
<a href="{{URL::to('student/exercisesubmission')}}" class="nav-link">
<i class="nav-icon fas fa-angle-right"></i>
<p>Submit Your Exercise </p>
</a>
</li>
<li class="nav-item">
<a href="{{URL::to('student/exercisevalid')}}" class="nav-link">
<i class="nav-icon fas fa-angle-right"></i>
<p>
Validation Results
</p>
</a>
</li>
</ul>
</li>
<li class="treeview">
<a href="#" class="nav-link" style="background-color:#EDCBFC;color:black;">
<i class="nav-icon fas fa-image"></i>
<p>&nbsp;<b>Learning UI Design</b>
</p>
</a>
<ul role="menu" class="nav nav-pills nav-sidebar flex-column">
<li class="nav-item">
<a href="{{URL::to('student/uitasks')}}" 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/uiresview')}}" class="nav-link"><i class="nav-icon fas fa-angle-right"></i>
<p>Learning Results
</p>
</a >
</li>
</ul>
</li>
<li class="treeview">
<a href="{{URL::to('student/jplasdown')}}" class="nav-link" style="background-color:#FFBF00;color:black;">
<i class="nav-icon fas fa-map"></i>
<p><b>Learning JPLAS</b>
</p>
</a>
</li>
</ul>
</nav>
<!-- /.sidebar-menu -->

View File

@ -106,7 +106,7 @@
<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>
<a class="btn btn-info" href="{{ URL::to('/student/androidcourse/tasks/'.$entity['id']) }}"><i class="fa fa-eye"></i></a>
</div>
</td>
</tr>

View File

@ -1,4 +1,4 @@
@extends('admin/admin')
@extends('student/androidcourse/home')
@section('content')
<div class="row">
<div class="col-12">

View File

@ -1,109 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<title>iCLOP Baru - Index</title>
<meta content="" name="description">
<meta content="" name="keywords">
<!-- Favicons -->
<link href="assets/img/favicon.png" rel="icon">
<link href="assets/img/apple-touch-icon.png" rel="apple-touch-icon">
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Roboto:300,300i,400,400i,500,500i,600,600i,700,700i|Poppins:300,300i,400,400i,500,500i,600,600i,700,700i" rel="stylesheet">
<!-- Vendor CSS Files -->
<link href="{{asset('lte/dist/vendor/aos/aos.css')}}" rel="stylesheet">
<link href="{{asset('lte/dist/vendor/bootstrap/css/bootstrap.min.css')}}" rel="stylesheet">
<link href="{{asset('lte/dist/vendor/bootstrap-icons/bootstrap-icons.css')}}" rel="stylesheet">
<link href="{{asset('lte/dist/vendor/boxicons/css/boxicons.min.css')}}" rel="stylesheet">
<link href="{{asset('lte/dist/vendor/glightbox/css/glightbox.min.css')}}" rel="stylesheet">
<link href="{{asset('lte/dist/vendor/swiper/swiper-bundle.min.css')}}" rel="stylesheet">
<!-- Template Main CSS File -->
<link href="{{asset('lte/dist/css/style.css')}}" rel="stylesheet">
<!-- =======================================================
* Template Name: BizLand - v3.7.0
* Template URL: https://bootstrapmade.com/bizland-bootstrap-business-template/
* Author: BootstrapMade.com
* License: https://bootstrapmade.com/license/
======================================================== -->
</head>
<body>
<main id="main">
<!-- ======= Featured Services Section ======= -->
<section id="featured-services" class="featured-services">
<div class="container" data-aos="fade-up">
<div class="Title-pembelajaran">
<h1 class="mb-5 text-center">Pembelajaran</h1>
</div>
<div class="row">
<div onclick="window.open('{{URL::to('student/androidcourse/asynctask')}}','android-aplas');" class="col-md-6 col-lg-4 d-flex align-items-stretch mb-5">
<div class="icon-box" data-aos="fade-up" data-aos-delay="100">
<div class="icon"><i class='bx bxl-android'></i></div>
<h4 class="title"><a href="">AsyncTask</a></h4>
<p class="description">Voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi</p>
</div>
</div>
<div onclick="window.open('{{URL::to('student/androidcourse/firebase')}}','android-aplas');" class="col-md-6 col-lg-4 d-flex align-items-stretch mb-5">
<div class="icon-box" data-aos="fade-up" data-aos-delay="200">
<div class="icon"><i class='bx bxl-android'></i></div>
<h4 class="title"><a href="">Firebase</a></h4>
<p class="description">Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore</p>
</div>
</div>
<div onclick="window.open('Python','mywindow');" class="col-md-6 col-lg-4 d-flex align-items-stretch mb-5">
<div class="icon-box" data-aos="fade-up" data-aos-delay="200">
<div class="icon"><i class='bx bxl-python'></i></div>
<h4 class="title"><a href="">REST API</a></h4>
<p class="description">Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore</p>
</div>
</div>
<div onclick="window.open('Python','mywindow');" class="col-md-6 col-lg-4 d-flex align-items-stretch mb-5">
<div class="icon-box" data-aos="fade-up" data-aos-delay="200">
<div class="icon"><i class='bx bxl-python'></i></div>
<h4 class="title"><a href="">REST API</a></h4>
<p class="description">Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore</p>
</div>
</div>
</div>
</div>
</section><!-- End Featured Services Section -->
<div class="container py-4">
<div class="copyright">
<strong>Copyright &copy; 2020 <a href="https://aplas.org">Android Programming Learning Assistance System (APLAS)</a>.</strong> All rights reserved.
</div>
</div>
</footer><!-- End Footer -->
<a href="#" class="back-to-top d-flex align-items-center justify-content-center"><i class="bi bi-arrow-up-short"></i></a>
<!-- Vendor JS Files -->
<script src="{{asset('lte/dist/vendor/purecounter/purecounter.js')}}"></script>
<script src="{{asset('lte/dist/vendor/aos/aos.js')}}"></script>
<script src="{{asset('lte/dist/vendor/bootstrap/js/bootstrap.bundle.min.js')}}"></script>
<script src="{{asset('lte/dist/vendor/glightbox/js/glightbox.min.js')}}"></script>
<script src="{{asset('lte/dist/vendor/isotope-layout/isotope.pkgd.min.js')}}"></script>
<script src="{{asset('lte/dist/vendor/swiper/swiper-bundle.min.js')}}"></script>
<script src="{{asset('lte/dist/vendor/waypoints/noframework.waypoints.js')}}"></script>
<script src="{{asset('lte/dist/vendor/php-email-form/validate.js')}}"></script>
<!-- Template Main JS File -->
<script src="{{asset('lte/dist/js/main.js')}}"></script>
</body>
</html>

View File

@ -1,4 +1,4 @@
@extends('student/home')
@extends('student/androidcourse/home')
@section('content')
<div class="row">
<div class="col-12">
@ -47,7 +47,7 @@
<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>
<a class="btn btn-info" href="{{ URL::to('/student/androidcourse/valid/'.$entity['id']) }}"><i class="fa fa-eye">&nbsp;Show Detail</i></a>
</div>
</td>
</tr>

View File

@ -1,4 +1,4 @@
@extends('student/home')
@extends('student/androidcourse/home')
@section('content')
<div class="row">
<div class="col-12">

View File

@ -1,4 +1,4 @@
@extends('student/home')
@extends('student/fluttercourse/home')
@section('content')
<div class="row">
<div class="col-12">
@ -47,7 +47,7 @@
<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>
<a class="btn btn-info" href="{{ URL::to('/student/fluttercourse/valid/'.$entity['id']) }}"><i class="fa fa-eye">&nbsp;Show Detail</i></a>
</div>
</td>
</tr>

View File

@ -1,4 +1,4 @@
@extends('student/home')
@extends('student/fluttercourse/home')
@section('content')
<div class="row">
<div class="col-12">

View File

@ -1,4 +1,4 @@
@extends('student/home')
@extends('student/nodejscourse/home')
@section('content')
<div class="row">
<div class="col-12">
@ -47,7 +47,7 @@
<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>
<a class="btn btn-info" href="{{ URL::to('/student/nodejscourse/valid/'.$entity['id']) }}"><i class="fa fa-eye">&nbsp;Show Detail</i></a>
</div>
</td>
</tr>

View File

@ -1,4 +1,4 @@
@extends('student/home')
@extends('student/nodejscourse/home')
@section('content')
<div class="row">
<div class="col-12">

View File

@ -1,4 +1,4 @@
@extends('student/home')
@extends('student/unitycourse/home')
@section('content')
<div class="row">
<div class="col-12">
@ -47,7 +47,7 @@
<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>
<a class="btn btn-info" href="{{ URL::to('/student/unitycourse/valid/'.$entity['id']) }}"><i class="fa fa-eye">&nbsp;Show Detail</i></a>
</div>
</td>
</tr>

View File

@ -1,4 +1,4 @@
@extends('student/home')
@extends('student/unitycourse/home')
@section('content')
<div class="row">
<div class="col-12">

View File

@ -110,11 +110,17 @@ Route::group(['middleware' => ['auth', 'teacher']], function() {
});
Route::group(['middleware' => ['auth', 'student']], function() {
//Android//
Route::patch('/student/androidcourse/results/valsub',['as' => 'results.valsub', 'uses' => 'AndroidTaskResultController@valsub']);
Route::get('student/androidcourse/results/create/{topic}', 'AndroidTaskResultController@create');
Route::get('/student/androidcourse', 'StudentController@androidcourse');
Route::get('/student/androidcourse/topic', 'StudentController@androidcoursetopic');
Route::get('/student/androidcourse', 'StudentController@androidcourse');
Route::resource('/student/androidcourse/tasks', 'TaskStdController');
Route::resource('/student/androidcourse/results', 'TaskResultController');
Route::resource('/student/androidcourse/tasks', 'AndroidController');
Route::resource('/student/androidcourse/results', 'AndroidResultController');
Route::resource('/student/androidcourse/lfiles', 'AndroidFileResultController');
Route::get('student/lfiles/androidcourse/create/{topic}', 'AndroidFileResultController@create');
Route::get('student/lfiles/androidcourse/valid/{topic}', 'AndroidFileResultController@submit');
Route::get('student/lfiles/androidcourse/delete/{id}/{topic}', 'AndroidFileResultController@delete');
// Flutter //
Route::patch('/student/fluttercourse/results/valsub',['as' => 'results.valsub', 'uses' => 'FlutterTaskResultController@valsub']);
Route::get('student/fluttercourse/results/create/{topic}', 'FlutterTaskResultController@create');