Report Industrial Work Practice - Revised Version 3 (Miss Revisi Bab 4)
Report Industrial Work Practice - Revised Version 3 (Miss Revisi Bab 4)
Report Industrial Work Practice - Revised Version 3 (Miss Revisi Bab 4)
By:
NIS : 212210431
Approved By:
Advisor 1, Advisor 2,
Approved By:
Industry Advisor,
Maman
PREFACE
blessings and grace to the author, by which the author can finish this Industrial
this report is also aimed as the evidence that the author had carried the Industrial
people who have helped her a lot, always supported and motivated during the
1. To my beloved and honorable parents who always give me support and never
Katapang;
3. Mr. Ayep Nurdin, S.ST., as the head of Software Engineering Major (RPL);
5. Mr. Lulu Unadid Sasmita, S.Pd.I , as advisor 2 who has guided me in arrange
this report;
future.
10. To all Hubin staffs who has arranged this Industrial Work Practice Program.
11. To all my friends who has supported, helped, and comforted me in every hard
12. And to everyone who has helped and supported me that I can’t mention one
by one.
May Allah SWT reward all of you more than you’ve gave. Besides that I
really wait for the suggestions and constructive criticism for the better version of
this report. The author always hopes for further improvement. Finally, hopefully
INTRODUCTION
1.1 Background
resources (SDM) in building educated people into the assets of nations that
experts and educated people that hopefully will make Indonesia more
advanced .
expertise of the program and the trends of the work world nowadays.
1.2 Legal Regulation
resources building;
out tasks;
A. For industry
1. The company will analyze the quality of students who will carry
company believes that the students who carry out Industrial Work
Practice (PKL) are good quality and have competency, they can
needs.
learned at schools.
result.
3. Increase competency and build the high work ethic in the real
industrial world.
rules.
work.
b. As written evidence for students who carry out Industrial Work Practice
for the students themselves and for the next generation of students.
e. As written proof that the student has carried out the internship;
problem so that the research is more focused and makes discussion easier.
COMPANY PROFILE
2.1.1 Profile
Kota Bandung.
Labs is one of the big software companies that has collaborated with
figure, named Mr. Ahmad Syarif.. A lot of people never expect him to
Besides that, he earned his living by doing some freelance jobs. Once
he did it for improving his skills, not just getting money. At the same
time, he proves himself that diligence and desire is the key of success.
some equipment. But everyone now can see Cyber Labs has grown
2.2 Partnership
Looking at how it has grown it describes how many partnerships they have.
2.4.1 Vision
possible.
2.4.2 Mission
THEORETICAL BASIS
3.1 Application
mobile phone or relates to the operation of the device itself. It usually used
by the end-user for the example the word processors application, accounting
groups, including;
1
Figure 3.1 Application
(Aplication Software, 2023)
3.1.2 Web Application
YouTube.
Figure 3.3 Mobile Application
3.2 Website
2
(Website, 2023)
name and published on at least one web server. Websites are
the title of website. We then just need to click one of the options
3
(Website History, 2023)
3.3 PHP
Figure 3. 5 PHP
web server, the result of interpreted and executed PHP code which
4
(PHP Programming Language, 2023)
3.3.2 The History of PHP
some web forms and communicate with databases and call this
implementation PHP/FI.
5
(PHP, 2023)
3.4 Xampp
PHP and Perl programming languages. Since most actual web server
6
(Xampp, 2023)
3.5 Database
Figure 3. 7 Databases
(DBMS).
to make processing and data querying efficient. The data can then be
7
(Databases, 2023) (Databases, 2023)
3.5.1 MYSQL
Figure 3. 8 MSQL
Figure 3. 9 Laravel
8
(Laravel, 2023)
3.6.2 The History of Laravel
9
(niagahoster, 2023)
c) Query builder, available since Laravel 3, provides a more
queries.
Figure 3. 10 VsCode
and embedded Git. Users can change the theme, keyboard shortcuts,
use it. It increased its use among those learning to code versus
10
(Apa itu Visual Studio Code, 2023)
It is based on the Electron framework (software framework).
the Blink layout engine. Visual Studio Code employs the same
Team Services).
3.8 Hosting
service that hosts websites for clients, i.e. it offers the facilities
The most basic is web page and small-scale file hosting, where
interface. The files are usually delivered to the Web "as is" or with
11
(Apa Itu Hosting, 2023)
2. Free web hosting
hosting often has a higher expense depending upon the size and
email, files, etc. to other sites. The company may use the
Sockets Layer (SSL) is used for websites that wish to encrypt the
transmitted data.
3.9 FileZillla
Server. Clients are available for Windows, Linux, and macOS. Both
server and client support FTP and FTPS (FTP over SSL/TLS), while
available, and they didn't think that they would sell a single copy if
2001, FileZilla has been released under the GNU General Public
12
(Apa Itu FillZilla Dan Bagaimana Mengguanakannya, 2023)
CHAPTER 4
SPECIAL DESCRIPTION
4.1 Analysis
4.1.1 System Description
There are guest and admin. For guest side, the system consists of
information about healthy and tasty foods. While for the admin side,
the system is created to help the admin manage and control the
4.1.2 Software
2. Xampp
3. Web Browser
4. Visual Pardigm
5. Balsamiq wireframes
6. Filezilla
4.1.3 Hardware
In the process of creating this project. There are some
2.50 GHz
Device ID 34EAA202-EC8F-41B2-8C44-FCA4B61F7B65
Product ID 00342-50546-68535-AAOEM
Pen and touch No pen or touch input is available for this display
Figure 4. 1 Usecase
Admin System
1. Admin enters the 2. System views the
web browser and Login form.
attempts to access
CMS ()
3. Admin fills out the 4. Validate the email and
form with the password.
password and email.
5. Login success, system
views the dashboard of
management system.
6.Login success system direct
to dashboard view.
Alternative scenario
4. View the error “something
went wrong try again!!”
6. Admin fills out the form 5. System views the Login
with the right password and form.
email.
7. System validates the email
and password.
8.Login success system direct
to dashboard view.
Table 4. 1 Autentication Scenario
Admin System
1. System views
management news
dashboard.
2. Admin selects “add 3. System views the add
News Option” news form.
4. Fill out the form and 5. System validates data
submit. according to the
requirement.
6. System saves the data,
success add new news.
Alternative scenario.
5. View the error “something
went wrong try again!!”
6. System views the add news
form.
7. Fill out the form 8. System validates data
carefully and submit. according to the requirement.
Admin System
1. System views
management news
dashboard.
2. Admin selects news 3. System views the edit
to edit. news form.
4. Fill out the form 5. System validates data
and submit. according to the
requirement.
6. System saves the data,
success Edit new
news.
Alternative scenario.
5. View the error “something
went wrong try again!!”
6. System views the edit news
form.
7. Fill out the form 8. System validates data
carefully and submit. according to the requirement.
Admin System
1. System views management
news dashboard.
2.Admin selects news to 3. System views the
delete. Confirmation form. “Delete
this news?”
4. Select option ‘yes’ to 5. System deletes the news
delete the news. “news deleted successfully!!”
Alternative Scenario
3. System views the
Confirmation form. “Delete
this news?”
4.Select option ‘no’ to delete 5. System cancels to delete
the news. the news .
Table 4. 4 Delete News Scenario
Admin System
1.System view management
gallery dashboard.
2. Admin Select “add image 3. System View the add
Option” image form.
4. Fill out the form and 5.System validate data
submit. according to the requirement.
6.System save the data, success
add new image.
Alternative scenario.
5. Viewed the error “something
went wrong try again!!”
Admin System
1. System view management
Gallery dashboard.
2.Admin Select Image to 3. System View the
delete. Confirmation form. “Delete
this Image?”
4.Select option ‘yes’ to delete 5. System delete the news
the image. “Image deleted successfully!”
Alternative Scenario
3. System View the
Confirmation form. “Delete
this image?”
4.Select option ‘no’ to delete 5. System cancel to delete the
the image. image .
Table 4. 6 Delete Image Scenario
Admin System
1. System view
management contact
dashboard.
2. System View the edit
Contact form.
3. Fill out the form 4. System validate data
and submit. according to the
requirement.
5. System save the data,
success Edit contact.
Alternative scenario.
5. Viewed the error
“something went wrong try
again!!”
6. System View the edit
contact form.
7.Fill out the form carefully 8. System validate data
and submit. according to the requirement.
B. Admin Interface
1. Users
2. News
3. Galleries
4. Contact
4.3 Implementation
4.3.4 Database Implementation and Models
C. User Table
public function up(): void
{
Schema::create('users', function (Blueprint
$table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
D. News Table
E. Galleries Table
F. Contact Table
public function up(): void
{
Schema::create('contacts', function
(Blueprint $table) {
$table->id();
$table->string('email');
$table->string('phone');
$table->string('location');
$table->timestamps();
});
}
<?php
namespace App\Models;
use App\Models\Comment;
Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
b) Galleries Model
<?php
namespace App\Models;
Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Contact extends Model
{
use HasFactory;
protected $fillable = [
'email',
'phone',
'location',
];
}
c) Contact Model
<?php
namespace App\Models;
Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use HasFactory;
protected $fillable = [
'image',
];
}
B. View
a) NewsView
<center>
<div class="col-11">
<div class="card">
<div class="card-header">
<h3 class="card-title"></h3>
<div class="card-tools">
<form action="{{route('admin.index')}}"
method="get" enctype="multipart/form-data">
<div class="input-group input-group-sm"
style="width: 150px;">
<input type="text" name="search"
class="form-control float-right" placeholder="Search"
value="{{$request->get('search')}}">
<div class="input-group-append">
<button type="submit" class="btn btn-
default">
<i class="fas fa-search"></i>
</button>
</div>
</div>
</form>
</div>
</div>
<!-- /.card-header -->
<div class="card-body table-responsive p-0"
style="height: 470px;">
<table class="table table-head-fixed text-nowrap"
>
<thead>
<tr>
<th>No</th>
<th>Preview</th>
<th>Title</th>
<th>Content</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach($data as $d)
<tr>
<td>{{$loop->iteration}}</td>
<td>
<img src="{{ asset('berita-images/'.
$d->image)}}" class="img-thumbnail" style="max: width 50px;
height: 100px;"
alt="image">
</td>
<td >{{Str::limit($d->title,15)}}</td>
<td ><p>{{Str::limit($d->content, 20)}}</p></td>
<td>
<a href="{{ route('admin.detail', $d->id) }}"
class="btn btn-primary btn-sm">
<div class="card-footer">
<button type="submit" class="btn btn-
primary">Submit</button>
</div>
</form>
</div>
@endsection
<div class="card-footer">
<button type="submit" class="btn btn-
primary">Submit</button>
</div>
</form>
</div>
@endsection
b) Galleries View
1. Gallery Index View
@extends('admin.asset.dash')
@push('style')
<style>
.galery{
padding: 30px;
}
.galery .imagecont{
display: grid;
grid-template-columns: repeat(4,1fr);
flex-wrap: wrap;
}
.galery .imagecont .image{
margin:5px;
height: 230px;
width: 230px;
overflow: hidden;
box-shadow: 0 3px 5px rgba(0,0,0,.3);
border-radius: 2rem;
}
}
</style>
@endpush
@section('ec')
<div class="col-12">
<div class="d-flex justify-content-between"
style="padding:5px 5%;">
<div>
<h2>Already Post</h2>
</div>
<div >
<div>
<a href="{{ route('admin.galeri.add') }}"
class="btn btn-success">
<i class="fas fa-plus"></i> New
</a>
</div>
</div>
</div>
</div>
<br>
<center>
<div class="card-body table-responsive p-0" style="height:
470px;">
<table class="table table-head-fixed text-nowrap"
>
<thead>
<tr>
<th>No</th>
<th>Preview</th>
<th>Action</th>
<tr>
@foreach($photo as $p)
<td>{{$loop->iteration}}</td>
<td>
<img src="{{ asset('galeri-images/'.
$p->image)}}" class="img-thumbnail" style="max: width 50px;
height: 100px;"
alt="image">
</td>
<td>
<a
href="{{ route('admin.galeri.delete', $p->id) }}" class="btn btn-
danger btn-sm">
<i class=" fas fa-trash"></i>
DELETE
</a>
@csrf
@method('DELETE')
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<!-- /.card-body -->
@endsection
</center>
<div class="card-footer">
<button type="submit" class="btn btn-
primary">Submit</button>
</div>
</form>
</div>
@endsection
c) Contact View
@extends('admin.asset.dash')
@section('ec')
</div>
<!-- /.card-header -->
@csrf
@method('PUT')
<div class="card-body" >
<Center style=" display:flex; justify-
content:space-between; padding-left:5rem; padding-right:5rem;">
<input type="Text" name="email"
value="{{$kontak->email}}" style="text-align:center;">
<input type="number" name="phone"
value="{{$kontak->phone}}" style="text-align:center;">
<input type="Text" name="location"
value="{{$kontak->location}}" style="text-align:center;">
</Center>
</form>
</div>
@endsection
C. Controller
a) News Controller
<?php
namespace App\Http\Controllers;
use App\Models\berita;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
}
$data=$data->latest()->get();
return
view('admin.berita.index',compact('data','request'));
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
return view('admin.berita.add');
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
$cek = $request->validate([
'title' => 'required|min:5|max:20',
'content' => 'required|min:10|max:200',
'image' => 'required|image|mimes:jpeg,jpg,png',
]);
$imageName = $request->file('image')->hashName();
$cek['image'] = $imageName;
$path= public_path() .'/berita-images';
$request->file('image')->move($path, $imageName);
berita::create($cek);
return redirect()->route('admin.index')->with('berhasil',
' Berita berhasil ditambahkan.');
/**
* Show the form for editing the specified resource.
*/
public function edit(string $id)
{
$data = berita::find($id);
/**
* Update the specified resource in storage.
*/
public function update(Request $request, string $id)
{
$data = berita::find($id);
$cek = $request->validate([
'title' => 'required|min:5|max:20',
'content' => 'required|min:10|max:200',
'image' => 'nullable',
]);
if($request->image){
File::delete(public_path() .'/berita-images');
$imageName = $request->file('image')->hashName();
$cek['image'] = $imageName;
$path= public_path() .'/berita-images';
$request->file('image')->move($path, $imageName);
}
$data->update($cek);
return redirect()->route('admin.index')->with('berhasil',
'Berita berhasil diedit.');
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
b) Galleries Controller
<?php
namespace App\Http\Controllers;
use App\Models\Gallery;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
/**
* Show the form for creating a new resource.
*/
public function create()
{
return view('admin.galeri.addgaleri');
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$cek = $request->validate([
'image' => 'required|image|mimes:jpeg,jpg,png',
]);
$imageName = $request->file('image')->hashName();
$cek['image'] = $imageName;
$path= public_path() .'/galeri-images';
$request->file('image')->move($path, $imageName);
Gallery::create($cek);
return redirect()->route('admin.galeri.index')-
>with('berhasil', ' gambar berhasil ditambahkan.');
/**
* Display the specified resource.
*/
public function show(string $id)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(string $id)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, string $id)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
//
$data = Gallery::find ($id);
$data->delete();
return redirect()->route('admin.galeri.index')-
>with('berhasil', ' berhasil dihapus.');
}
}
c) Contact Controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Contact;
return view('admin.kontak.kontak_edit',
compact('kontak'));
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request,)
{
$kontak = Contact::first();
$cek = $request->validate([
'email' => 'required',
'phone' => 'required',
'location' => 'required',
]);
$kontak->update($cek);
return redirect()->route('admin.contact.edit')-
>with('berhasil', 'Berita berhasil update.');
}
}
<section class="about">
<div class="us" data-aos="zoom-in-up">
<h2>TENTANG KAMI</h2><br><br>
<h1>BERITA KAMI</h1>
<br><br><br>
<div class="grid">
<label for=check><a
href="{{route('berita')}}">Baca Selengkapnya</a></label>
<i class="fa-solid fa-
ellipsis"></i>
</div>
</div>
@foreach($berita1 as $d)
<div class="n1" data-aos="fade-right" data-aos-
duration="2000">
<img src="{{ asset('berita-images/'.$d-
>image)}}">
<div class="content">
<h2>{{Str::limit($d->title, 10)}}</h2>
</div>
<div class="cont">
<p >{{Str::limit($d->content, 100)}}</p>
<label for=check><a
href="{{route('berita')}}">Baca Selengkapnya</a></label>
<i class="fa-solid fa-ellipsis"></i>
</div>
</div>
@endforeach
</div>
</section>
<section class="galery">
<h1>GALERI KAMI</h1><br><br>
<div class="imagecont">
@foreach($photo as $p)
<a href="" class="image dish"data-aos="flip-up"
data-aos-duration="1000">
<img src="{{ asset('galeri-images/'.$p-
>image)}}"alt="">
</a>
@endforeach
</div>
<br>
<div class="click">
<button><a href="{{route('galeri')}}">LIHAT LEBIH
BANYAK</a></button>
</div>
</div>
@endsection
@push('js')
<script>
import AOS from 'aos';
import 'aos/dist/aos.css'; // You can also use <link> for styles
// ..
AOS.init();
</script>
@endpush
B. Home Controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\berita;
use App\Models\Gallery;
use App\Models\Contact;
use App\Models\Tentang;
use App\Models\User;
class UserController extends Controller
{
public function index()
{
$data['beritak']=berita::latest()->limit(5)->get();
$data['berita1']=$data['beritak']->pop(4);
$data['beritab']=berita::latest()->limit(1)->get();
$data['berita2']=$data['beritab']->pop();
$photo = Gallery::latest()->limit(6)->get();
$ingpo=Contact::first();
return view('user.page.home',
$data,compact('photo','ingpo'));
}
}
CHAPTER 5
CLOSING
5.1 Conclusion
While carrying out Field Work Practices (PKL), the author found
industrial environment. The author feels that the scope of industry and school
is very different, the results achieved while working must be the result of
maximum effort.
Teknologi Mulia (CyberLabs) for 4 months, the author has gained experience
in:
author concludes that this report content about the creation of a website-based
5.4 Closing
These are the suggestions that the author can convey in the hope
that the industrial Work Practices (PKL) in the following years can be better.
The author is aware that this writing still has a lot of mistakes and
shortcomings, therefore, if there are better suggestions and input, the author
understand better.
The author believes that both industry and school have tried their
(PKL) so smoothly. Therefore, the author would like to thank all parties who
have helped make this Field Work Practice (PKL) run smoothly.
References