feat: media monitoring
This commit is contained in:
parent
d51959371c
commit
ef80dd0e74
@ -8,6 +8,7 @@
|
||||
use App\Models\ContentRecap;
|
||||
use App\Models\GovernmentAgency;
|
||||
use App\Models\Location;
|
||||
use App\Models\MediaMonitoring;
|
||||
use App\Models\News;
|
||||
use App\Models\Role;
|
||||
use App\Models\SubClassification;
|
||||
@ -481,6 +482,64 @@ public function contentRecap(Request $request){
|
||||
|
||||
}
|
||||
|
||||
public function mediaMonitoring(Request $request){
|
||||
if ($request->ajax()) {
|
||||
|
||||
|
||||
|
||||
$data = MediaMonitoring::with(['enhancer'])->get();
|
||||
|
||||
return DataTables::of($data)
|
||||
->addIndexColumn()
|
||||
->addColumn('enhancer', function ($data) {
|
||||
return $data->enhancer->name;
|
||||
})
|
||||
->addColumn('input_date', function ($data) {
|
||||
return idn_date($data->input_date, 'd F Y');
|
||||
})
|
||||
->addColumn('title', function ($data) {
|
||||
return shorten_text($data->title, 40);
|
||||
})
|
||||
->addColumn('link', function ($data) {
|
||||
return '<a href="'.$data->link.'" target="_blank">'.$data->link.'</a>';
|
||||
})
|
||||
->addColumn('action', function ($data) {
|
||||
$showUrl = route('dashboard.media.monitoring.show', ['id' => encrypt_id($data->id)]);
|
||||
|
||||
$editUrl = route('dashboard.media.monitoring.edit', ['id' => encrypt_id($data->id)]);
|
||||
|
||||
$deleteUrl = route('dashboard.media.monitoring.destroy', ['id' => encrypt_id($data->id)]);
|
||||
|
||||
$dropdown = '<div class="dropdown" style="display:flex; justify-content:center;">
|
||||
<a class="dropdown-toggle btn btn-icon btn-light" data-bs-toggle="dropdown"><em class="icon ni ni-more-v"></em></a>
|
||||
<div class="dropdown-menu dropdown-menu-end">
|
||||
<ul class="link-list-opt">
|
||||
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
||||
|
||||
if (is_role([1])) {
|
||||
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
||||
}
|
||||
|
||||
if (is_role([1])) {
|
||||
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus monitoring media '.$data->code.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
|
||||
|
||||
}
|
||||
|
||||
$dropdown .= '</ul>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
return $dropdown;
|
||||
})
|
||||
|
||||
->rawColumns(['link', 'action'])
|
||||
->make(true);
|
||||
}
|
||||
|
||||
return response()->json(['error' => 'Unauthorized'], 401);
|
||||
|
||||
}
|
||||
|
||||
public function user(Request $request){
|
||||
if ($request->ajax()) {
|
||||
|
||||
|
||||
110
app/Http/Controllers/Dashboard/MediaMonitoringController.php
Normal file
110
app/Http/Controllers/Dashboard/MediaMonitoringController.php
Normal file
@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Dashboard;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\MediaMonitoringRequest;
|
||||
use App\Models\MediaMonitoring;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class MediaMonitoringController extends Controller
|
||||
{
|
||||
public function index(){
|
||||
return view('dashboard.media-monitorings.index', [
|
||||
'title' => 'Monitoring Media'
|
||||
]);
|
||||
}
|
||||
|
||||
public function create(){
|
||||
return view('dashboard.media-monitorings.create', [
|
||||
'title' => 'Tambah Monitoring Media'
|
||||
]);
|
||||
}
|
||||
|
||||
public function store(MediaMonitoringRequest $request){
|
||||
$validatedData = $request->validated();
|
||||
$validatedData['enhancer_id'] = Auth::id();
|
||||
|
||||
$latestCode = MediaMonitoring::max('code');
|
||||
$lastNumber = $latestCode ? intval(substr($latestCode, 3)) : 0;
|
||||
$newNumber = str_pad($lastNumber + 1, 6, '0', STR_PAD_LEFT);
|
||||
$code = 'ADN'.$newNumber;
|
||||
|
||||
$validatedData['code'] = $code;
|
||||
$validatedData['image'] = store_file($validatedData['image'], 'uploads/media-monitorings', 'public')['randomFileName'];
|
||||
|
||||
$createMediaMonitoring = MediaMonitoring::create($validatedData);
|
||||
|
||||
if($createMediaMonitoring){
|
||||
return redirect()->back()->with('success-status', 'Berhasil menambahkan monitoring media.');
|
||||
}else{
|
||||
return redirect()->back()->with('failed-status', 'Gagal menambahkan monitoring media.');
|
||||
}
|
||||
}
|
||||
|
||||
public function edit($id){
|
||||
|
||||
$mediaMonitoring = MediaMonitoring::findOrFail(decrypt_id($id));
|
||||
|
||||
return view('dashboard.media-monitorings.edit', [
|
||||
'title' => 'Ubah Monitoring Media',
|
||||
'mediaMonitoring' => $mediaMonitoring
|
||||
]);
|
||||
}
|
||||
|
||||
public function update(MediaMonitoringRequest $request, $id){
|
||||
$validatedData = $request->validated();
|
||||
|
||||
$mediaMonitoring = MediaMonitoring::findOrFail(decrypt_id($id));
|
||||
$validatedData['enhancer_id'] = Auth::id();
|
||||
$validatedData['code'] = $mediaMonitoring->code;
|
||||
|
||||
if($request->has('image')){
|
||||
delete_file('app/public/uploads/media-monitorings/'.$mediaMonitoring->image);
|
||||
$validatedData['image'] = store_file($validatedData['image'], '/uploads/media-monitorings', 'public')['randomFileName'];
|
||||
}else{
|
||||
$validatedData['image'] = $mediaMonitoring->image;
|
||||
}
|
||||
|
||||
$updatedMediaMonitoring = $mediaMonitoring->update($validatedData);
|
||||
|
||||
if($updatedMediaMonitoring){
|
||||
return redirect()->back()->with('success-status', 'Berhasil mengubah monitoring media.');
|
||||
}else{
|
||||
return redirect()->back()->with('failed-status', 'Gagal mengubah monitoring media.');
|
||||
}
|
||||
}
|
||||
|
||||
public function show($id){
|
||||
|
||||
$mediaMonitoring = MediaMonitoring::findOrFail(decrypt_id($id));
|
||||
|
||||
return view('dashboard.media-monitorings.show', [
|
||||
'title' => 'Detail Monitoring Media',
|
||||
'mediaMonitoring' => $mediaMonitoring
|
||||
]);
|
||||
}
|
||||
|
||||
public function destroy($id){
|
||||
try {
|
||||
$mediaMonitoring = MediaMonitoring::findOrFail(decrypt_id($id));
|
||||
delete_file('app/public/uploads/media-monitorings/'.$mediaMonitoring->image);
|
||||
$mediaMonitoring->delete();
|
||||
|
||||
|
||||
return response()->json(['message' => 'Berhasil menghapus monitoring media.']);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json(['message' => 'Gagal menghapus monitoring media.'], 500);
|
||||
}
|
||||
}
|
||||
|
||||
public function checkLink(Request $request)
|
||||
{
|
||||
$linkExists = MediaMonitoring::where('link', $request->link)->exists();
|
||||
|
||||
return response()->json([
|
||||
'exists' => $linkExists
|
||||
]);
|
||||
}
|
||||
}
|
||||
84
app/Http/Requests/MediaMonitoringRequest.php
Normal file
84
app/Http/Requests/MediaMonitoringRequest.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class MediaMonitoringRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*/
|
||||
public function authorize(): bool
|
||||
{
|
||||
return Auth::check() && is_role(['1','2']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
$rules = [
|
||||
'media_name' => ['required', 'max:100'],
|
||||
'theme' => ['required', 'max:100'],
|
||||
'title' => ['required'],
|
||||
'link' => ['nullable', 'url'],
|
||||
'writter' => ['required'],
|
||||
'channel'=> ['required', 'in:website,tiktok,youtube,instagram,facebook,twitter,cetak'],
|
||||
'content' => ['required'],
|
||||
'influencer' => ['nullable'],
|
||||
'keyword' => ['required'],
|
||||
'quote' => ['nullable'],
|
||||
'release_date' => ['required', 'date'],
|
||||
];
|
||||
|
||||
if($this->isMethod('post')){
|
||||
$rules['image'] = ['required', 'image', 'mimes:png,jpg,jpeg', 'max:2048'];
|
||||
}else if($this->isMethod('put')){
|
||||
$rules['image'] = ['nullable', 'image', 'mimes:png,jpg,jpeg', 'max:2048'];
|
||||
}
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function messages()
|
||||
{
|
||||
return [
|
||||
'media_name.required' => 'Nama media wajib diisi.',
|
||||
'media_name.max' => 'Nama media tidak boleh lebih dari 100 karakter.',
|
||||
|
||||
'theme.required' => 'Tema wajib diisi.',
|
||||
'theme.max' => 'Tema tidak boleh lebih dari 100 karakter.',
|
||||
|
||||
'title.required' => 'Judul wajib diisi.',
|
||||
|
||||
'link.url' => 'Link harus dalam format URL yang valid.',
|
||||
|
||||
'writter.required' => 'Nama penulis wajib diisi.',
|
||||
|
||||
'channel.required' => 'Channel wajib dipilih.',
|
||||
'channel.in' => 'Channel yang dipilih tidak valid.',
|
||||
|
||||
'content.required' => 'Konten wajib diisi.',
|
||||
|
||||
'influencer.nullable' => 'Nama influencer boleh dikosongkan.',
|
||||
|
||||
'keyword.required' => 'Keyword wajib diisi.',
|
||||
|
||||
'quote.nullable' => 'Quote boleh dikosongkan.',
|
||||
|
||||
'release_date.required' => 'Tanggal rilis wajib diisi.',
|
||||
'release_date.date' => 'Tanggal rilis harus dalam format tanggal yang valid.',
|
||||
|
||||
'image.required' => 'Gambar wajib diunggah.',
|
||||
'image.image' => 'File yang diunggah harus berupa gambar.',
|
||||
'image.mimes' => 'Gambar hanya boleh berformat PNG, JPG, atau JPEG.',
|
||||
'image.max' => 'Gambar tidak boleh lebih dari 2MB.',
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
34
app/Models/MediaMonitoring.php
Normal file
34
app/Models/MediaMonitoring.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class MediaMonitoring extends Model
|
||||
{
|
||||
protected $table = 'media_monitorings';
|
||||
|
||||
protected $fillable = [
|
||||
'code',
|
||||
'media_name',
|
||||
'theme',
|
||||
'title',
|
||||
'channel',
|
||||
'writter',
|
||||
'link',
|
||||
'news_page',
|
||||
'quote',
|
||||
'content',
|
||||
'influencer',
|
||||
'keyword',
|
||||
'image',
|
||||
'release_date',
|
||||
'enhancer_id',
|
||||
];
|
||||
|
||||
public function enhancer()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'enhancer_id', 'id');
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('media_monitorings', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('code');
|
||||
$table->string('media_name');
|
||||
$table->string('theme');
|
||||
$table->text('title');
|
||||
$table->string('channel');
|
||||
$table->string('writter');
|
||||
$table->string('link')->nullable();
|
||||
$table->string('news_page')->nullable();
|
||||
$table->text('quote')->nullable();
|
||||
$table->text('content');
|
||||
$table->string('influencer')->nullable();
|
||||
$table->string('keyword');
|
||||
$table->string('image');
|
||||
$table->date('release_date');
|
||||
$table->unsignedBigInteger('enhancer_id');
|
||||
$table->foreign('enhancer_id')->references('id')->on('users');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('media_monitorings');
|
||||
}
|
||||
};
|
||||
17
database/seeders/MediaMonitoringSeeder.php
Normal file
17
database/seeders/MediaMonitoringSeeder.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class MediaMonitoringSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@ -1,29 +1,81 @@
|
||||
document.getElementById("email").addEventListener("keyup", function() {
|
||||
var password = this.value;
|
||||
var strengthStatus = document.getElementById("password-strength-status");
|
||||
var colorClass = '';
|
||||
// document.getElementById("email").addEventListener("keyup", function() {
|
||||
// var password = this.value;
|
||||
// var strengthStatus = document.getElementById("password-strength-status");
|
||||
// var colorClass = '';
|
||||
|
||||
console.log("Password input:", password); // Menambahkan log untuk debug
|
||||
// console.log("Password input:", password); // Menambahkan log untuk debug
|
||||
|
||||
// Regex untuk memeriksa kriteria kata sandi
|
||||
var hasUpper = /[A-Z]/.test(password); // Memeriksa huruf besar
|
||||
var hasLower = /[a-z]/.test(password); // Memeriksa huruf kecil
|
||||
var hasNumber = /\d/.test(password); // Memeriksa angka
|
||||
var hasSymbol = /[!@#$%^&*(),.?":{}|<>]/.test(password); // Memeriksa simbol
|
||||
// // Regex untuk memeriksa kriteria kata sandi
|
||||
// var hasUpper = /[A-Z]/.test(password); // Memeriksa huruf besar
|
||||
// var hasLower = /[a-z]/.test(password); // Memeriksa huruf kecil
|
||||
// var hasNumber = /\d/.test(password); // Memeriksa angka
|
||||
// var hasSymbol = /[!@#$%^&*(),.?":{}|<>]/.test(password); // Memeriksa simbol
|
||||
|
||||
// Cek apakah kata sandi memenuhi semua kriteria
|
||||
if (hasUpper && hasLower && hasNumber && hasSymbol) {
|
||||
strengthStatus.textContent = 'Kata sandi valid';
|
||||
colorClass = 'valid'; // Jika valid, set warna hijau
|
||||
} else {
|
||||
strengthStatus.textContent = 'Kata sandi tidak memenuhi syarat';
|
||||
colorClass = 'invalid'; // Jika tidak memenuhi syarat, set warna merah
|
||||
}
|
||||
// // Cek apakah kata sandi memenuhi semua kriteria
|
||||
// if (hasUpper && hasLower && hasNumber && hasSymbol) {
|
||||
// strengthStatus.textContent = 'Kata sandi valid';
|
||||
// colorClass = 'valid'; // Jika valid, set warna hijau
|
||||
// } else {
|
||||
// strengthStatus.textContent = 'Kata sandi tidak memenuhi syarat';
|
||||
// colorClass = 'invalid'; // Jika tidak memenuhi syarat, set warna merah
|
||||
// }
|
||||
|
||||
// Ubah warna input dan border sesuai dengan status
|
||||
this.classList.remove("invalid", "valid");
|
||||
this.classList.add(colorClass);
|
||||
// // Ubah warna input dan border sesuai dengan status
|
||||
// this.classList.remove("invalid", "valid");
|
||||
// this.classList.add(colorClass);
|
||||
|
||||
// Set warna indikator kekuatan
|
||||
strengthStatus.className = colorClass;
|
||||
// // Set warna indikator kekuatan
|
||||
// strengthStatus.className = colorClass;
|
||||
// });
|
||||
|
||||
$(document).ready(function() {
|
||||
// Setup CSRF token untuk semua AJAX request
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
}
|
||||
});
|
||||
|
||||
let typingTimer;
|
||||
let delay = 500;
|
||||
|
||||
$('#link').on('keyup', function() {
|
||||
clearTimeout(typingTimer);
|
||||
let inputField = $(this);
|
||||
let linkValue = inputField.val();
|
||||
|
||||
if (linkValue.length > 0) {
|
||||
typingTimer = setTimeout(function() {
|
||||
$.ajax({
|
||||
url: '/dashboard/media-monitorings/check-link', // Sesuaikan dengan route yang benar
|
||||
method: 'POST',
|
||||
data: { link: linkValue }, // CSRF sudah otomatis ditambahkan
|
||||
success: function(response) {
|
||||
console.log('Response:', response);
|
||||
if (response.exists) {
|
||||
$('#linkFeedback')
|
||||
.removeClass('d-none text-success')
|
||||
.addClass('text-danger')
|
||||
.text('Link tersebut sudah ada di database!');
|
||||
inputField.addClass('is-invalid').removeClass('is-valid');
|
||||
} else {
|
||||
$('#linkFeedback')
|
||||
.removeClass('d-none text-danger')
|
||||
.addClass('text-success')
|
||||
.text('Link tidak ada di database.');
|
||||
inputField.addClass('is-valid').removeClass('is-invalid');
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
console.error('AJAX Error:', error); // Debugging
|
||||
}
|
||||
});
|
||||
}, delay);
|
||||
} else {
|
||||
$('#linkFeedback').addClass('d-none');
|
||||
inputField.removeClass('is-invalid is-valid');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
170
resources/views/dashboard/media-monitorings/create.blade.php
Normal file
170
resources/views/dashboard/media-monitorings/create.blade.php
Normal file
@ -0,0 +1,170 @@
|
||||
@include('partials.dashboard.head')
|
||||
@include('partials.dashboard.sidebar', ['page' => 'media_monitorings'])
|
||||
@include('partials.dashboard.header')
|
||||
<!-- content @s -->
|
||||
<div class="nk-content ">
|
||||
<div class="container-fluid">
|
||||
<div class="nk-content-inner">
|
||||
<div class="nk-content-body">
|
||||
<div class="nk-block nk-block-lg">
|
||||
<div class="card card-bordered card-preview">
|
||||
<div class="card-inner">
|
||||
<div class="card-head">
|
||||
<h5 class="card-title">{{$title}}</h5>
|
||||
</div>
|
||||
<form action="{{route('dashboard.media.monitoring.store')}}" method="post" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="row g-4">
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="media_name">Nama Media<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('media_name') border-danger @enderror" id="media_name" name="media_name" placeholder="Masukan nama media" value="{{old('media_name')}}">
|
||||
</div>
|
||||
@error('media_name')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="theme">Tema<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('theme') border-danger @enderror" id="theme" name="theme" placeholder="Masukan tema" value="{{old('theme')}}">
|
||||
</div>
|
||||
@error('theme')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="title">Judul Berita<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('title') border-danger @enderror" id="title" name="title" placeholder="Masukan judul berita" value="{{old('title')}}">
|
||||
</div>
|
||||
@error('title')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="link">Link</label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('link') border-danger @enderror" id="link" name="link" placeholder="Masukan link" value="{{old('link')}}">
|
||||
<small id="linkFeedback" class="d-none"></small>
|
||||
</div>
|
||||
@error('link')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="writter">Penulis<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('writter') border-danger @enderror" id="writter" name="writter" placeholder="Masukan penulis" value="{{old('writter')}}">
|
||||
</div>
|
||||
@error('writter')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label">Kanal<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<select class="form-select js-select2" name="channel" data-search="on">
|
||||
<option value="website" {{old('channel') == 'website' ? 'selected' : ''}}>Website</option>
|
||||
<option value="tiktok" {{old('channel') == 'tiktok' ? 'selected' : ''}}>Tiktok</option>
|
||||
<option value="youtube" {{old('channel') == 'youtube' ? 'selected' : ''}}>YouTube</option>
|
||||
<option value="instagram" {{old('channel') == 'instagram' ? 'selected' : ''}}>Instagram</option>
|
||||
<option value="facebook" {{old('channel') == 'facebook' ? 'selected' : ''}}>Facebook</option>
|
||||
<option value="twitter" {{old('channel') == 'twitter' ? 'selected' : ''}}>Twitter</option>
|
||||
<option value="cetak" {{old('channel') == 'cetak' ? 'selected' : ''}}>Cetak</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="content">Konten<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<textarea class="tinymce-basic form-control" name="content" id="content">{!!old('content')!!}</textarea>
|
||||
</div>
|
||||
@error('content')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="influencer">Influencer</label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('influencer') border-danger @enderror" id="influencer" name="influencer" placeholder="Masukan influencer" value="{{old('influencer')}}">
|
||||
</div>
|
||||
@error('influencer')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="keyword">Kata Kunci<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('keyword') border-danger @enderror" id="keyword" name="keyword" placeholder="Masukan kata kunci" value="{{old('keyword')}}">
|
||||
</div>
|
||||
@error('keyword')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="quote">Kutipan</label>
|
||||
<div class="form-control-wrap">
|
||||
<textarea class="tinymce-basic form-control" name="quote" id="quote">{!!old('quote')!!}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="release_date">Tanggal Rilis<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="date" class="form-control @error('release_date') border-danger @enderror" id="release_date" name="release_date" placeholder="Masukan Tanggal rilis" value="{{old('release_date')}}">
|
||||
</div>
|
||||
@error('release_date')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="image">Gambar<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="file" class="form-control @error('image') border-danger @enderror" id="image" name="image" accept="image/*">
|
||||
</div>
|
||||
@error('image')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<hr>
|
||||
<div class="form-group d-flex justify-content-end">
|
||||
<a href="{{route('dashboard.media.monitoring.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
|
||||
<button type="submit" class="btn btn-md btn-primary">Tambahkan</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- content @e -->
|
||||
@include('partials.dashboard.footer', ['rich_editor' => true])
|
||||
171
resources/views/dashboard/media-monitorings/edit.blade.php
Normal file
171
resources/views/dashboard/media-monitorings/edit.blade.php
Normal file
@ -0,0 +1,171 @@
|
||||
@include('partials.dashboard.head')
|
||||
@include('partials.dashboard.sidebar', ['page' => 'media_monitorings'])
|
||||
@include('partials.dashboard.header')
|
||||
<!-- content @s -->
|
||||
<div class="nk-content ">
|
||||
<div class="container-fluid">
|
||||
<div class="nk-content-inner">
|
||||
<div class="nk-content-body">
|
||||
<div class="nk-block nk-block-lg">
|
||||
<div class="card card-bordered card-preview">
|
||||
<div class="card-inner">
|
||||
<div class="card-head">
|
||||
<h5 class="card-title">{{$title}}</h5>
|
||||
</div>
|
||||
<form action="{{route('dashboard.media.monitoring.update', ['id' => encrypt_id($mediaMonitoring->id)])}}" method="post" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@method('put')
|
||||
<div class="row g-4">
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="media_name">Nama Media<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('media_name') border-danger @enderror" id="media_name" name="media_name" placeholder="Masukan nama media" value="{{$mediaMonitoring->media_name}}">
|
||||
</div>
|
||||
@error('media_name')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="theme">Tema<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('theme') border-danger @enderror" id="theme" name="theme" placeholder="Masukan tema" value="{{$mediaMonitoring->theme}}">
|
||||
</div>
|
||||
@error('theme')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="title">Judul Berita<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('title') border-danger @enderror" id="title" name="title" placeholder="Masukan judul berita" value="{{$mediaMonitoring->title}}">
|
||||
</div>
|
||||
@error('title')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="link">Link</label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('link') border-danger @enderror" id="link" name="link" placeholder="Masukan link" value="{{$mediaMonitoring->link}}">
|
||||
<small id="linkFeedback" class="d-none"></small>
|
||||
</div>
|
||||
@error('link')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="writter">Penulis<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('writter') border-danger @enderror" id="writter" name="writter" placeholder="Masukan penulis" value="{{$mediaMonitoring->writter}}">
|
||||
</div>
|
||||
@error('writter')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label">Kanal<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<select class="form-select js-select2" name="channel" data-search="on">
|
||||
<option value="website" {{$mediaMonitoring->channel == 'website' ? 'selected' : ''}}>Website</option>
|
||||
<option value="tiktok" {{$mediaMonitoring->channel == 'tiktok' ? 'selected' : ''}}>Tiktok</option>
|
||||
<option value="youtube" {{$mediaMonitoring->channel == 'youtube' ? 'selected' : ''}}>YouTube</option>
|
||||
<option value="instagram" {{$mediaMonitoring->channel == 'instagram' ? 'selected' : ''}}>Instagram</option>
|
||||
<option value="facebook" {{$mediaMonitoring->channel == 'facebook' ? 'selected' : ''}}>Facebook</option>
|
||||
<option value="twitter" {{$mediaMonitoring->channel == 'twitter' ? 'selected' : ''}}>Twitter</option>
|
||||
<option value="cetak" {{$mediaMonitoring->channel == 'cetak' ? 'selected' : ''}}>Cetak</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="content">Konten<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<textarea class="tinymce-basic form-control" name="content" id="content">{!!$mediaMonitoring->content!!}</textarea>
|
||||
</div>
|
||||
@error('content')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="influencer">Influencer</label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('influencer') border-danger @enderror" id="influencer" name="influencer" placeholder="Masukan influencer" value="{{$mediaMonitoring->influencer}}">
|
||||
</div>
|
||||
@error('influencer')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="keyword">Kata Kunci<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('keyword') border-danger @enderror" id="keyword" name="keyword" placeholder="Masukan kata kunci" value="{{$mediaMonitoring->keyword}}">
|
||||
</div>
|
||||
@error('keyword')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="quote">Kutipan</label>
|
||||
<div class="form-control-wrap">
|
||||
<textarea class="tinymce-basic form-control" name="quote" id="quote">{!!$mediaMonitoring->quote!!}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="release_date">Tanggal Rilis<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="date" class="form-control @error('release_date') border-danger @enderror" id="release_date" name="release_date" placeholder="Masukan Tanggal rilis" value="{{$mediaMonitoring->release_date}}">
|
||||
</div>
|
||||
@error('release_date')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="image">Gambar</label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="file" class="form-control @error('image') border-danger @enderror" id="image" name="image" accept="image/*">
|
||||
</div>
|
||||
@error('image')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<hr>
|
||||
<div class="form-group d-flex justify-content-end">
|
||||
<a href="{{route('dashboard.media.monitoring.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
|
||||
<button type="submit" class="btn btn-md btn-primary">Tambahkan</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- content @e -->
|
||||
@include('partials.dashboard.footer', ['rich_editor' => true])
|
||||
65
resources/views/dashboard/media-monitorings/index.blade.php
Normal file
65
resources/views/dashboard/media-monitorings/index.blade.php
Normal file
@ -0,0 +1,65 @@
|
||||
@include('partials.dashboard.head')
|
||||
@include('partials.dashboard.sidebar', ['page' => 'media_monitorings'])
|
||||
@include('partials.dashboard.header')
|
||||
<!-- content @s -->
|
||||
<div class="nk-content ">
|
||||
<div class="container-fluid">
|
||||
<div class="nk-content-inner">
|
||||
<div class="nk-content-body">
|
||||
<div class="nk-block-head nk-block-head-sm">
|
||||
<div class="nk-block-between">
|
||||
<div class="nk-block-head-content">
|
||||
<h3 class="nk-block-title page-title">{{$title}}</h3>
|
||||
</div><!-- .nk-block-head-content -->
|
||||
<div class="nk-block-head-content">
|
||||
<div class="toggle-wrap nk-block-tools-toggle">
|
||||
<a href="#" class="btn btn-icon btn-trigger toggle-expand me-n1" data-target="pageMenu"><em class="icon ni ni-more-v"></em></a>
|
||||
<div class="toggle-expand-content" data-content="pageMenu">
|
||||
<ul class="nk-block-tools g-3">
|
||||
{{-- <li>
|
||||
<div class="drodown">
|
||||
<a href="#" class="dropdown-toggle btn btn-white btn-dim btn-outline-light" data-bs-toggle="dropdown"><em class="d-none d-sm-inline icon ni ni-calender-date"></em><span><span class="d-none d-md-inline">Last</span> 30 Days</span><em class="dd-indc icon ni ni-chevron-right"></em></a>
|
||||
<div class="dropdown-menu dropdown-menu-end">
|
||||
<ul class="link-list-opt no-bdr">
|
||||
<li><a href="#"><span>Last 30 Days</span></a></li>
|
||||
<li><a href="#"><span>Last 6 Months</span></a></li>
|
||||
<li><a href="#"><span>Last 1 Years</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li> --}}
|
||||
<li class="nk-block-tools-opt"><a href="{{route('dashboard.media.monitoring.create')}}" class="btn btn-primary"><em class="icon ni ni-plus"></em><span>Tambah</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- .nk-block-between -->
|
||||
</div><!-- .nk-block-head -->
|
||||
<div class="nk-block nk-block-lg">
|
||||
<div class="card card-bordered card-preview">
|
||||
<div class="card-inner">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-bordered nowrap" id="mediaMonitoringsTable" border="1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 10% !important;">No</th>
|
||||
<th>Oleh</th>
|
||||
<th>Kode</th>
|
||||
<th>Tanggal Input</th>
|
||||
<th style="width: 30% !important;">Judul</th>
|
||||
<th>Media</th>
|
||||
<th>Link</th>
|
||||
<th style="width: 10% !important;"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- content @e -->
|
||||
@include('partials.dashboard.footer' ,['datatable' => 'media_monitoring'])
|
||||
144
resources/views/dashboard/media-monitorings/show.blade.php
Normal file
144
resources/views/dashboard/media-monitorings/show.blade.php
Normal file
@ -0,0 +1,144 @@
|
||||
@include('partials.dashboard.head')
|
||||
@include('partials.dashboard.sidebar', ['page' => 'media_monitorings'])
|
||||
@include('partials.dashboard.header')
|
||||
<!-- content @s -->
|
||||
<div class="nk-content ">
|
||||
<div class="container-fluid">
|
||||
<div class="nk-content-inner">
|
||||
<div class="nk-content-body">
|
||||
<div class="nk-block nk-block-lg">
|
||||
<div class="card">
|
||||
<div class="card-aside-wrap">
|
||||
<div class="card-content">
|
||||
<ul class="nav nav-tabs nav-tabs-mb-icon nav-tabs-card">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-primary" href="#"><em class="icon ni ni-info"></em><span>Detail Monitoring Media</span></a>
|
||||
</li>
|
||||
</ul><!-- .nav-tabs -->
|
||||
<div class="card-inner">
|
||||
<div class="nk-block">
|
||||
{{-- <div class="nk-block-head">
|
||||
<h5 class="title">Personal Information</h5>
|
||||
<p>Basic info, like your name and address, that you use on Nio Platform.</p>
|
||||
</div> --}}
|
||||
<div class="profile-ud-list">
|
||||
<div class="profile-ud-item">
|
||||
<div class="profile-ud wider">
|
||||
<span class="profile-ud-label">Nama Media</span>
|
||||
<span class="profile-ud-value">{{$mediaMonitoring->media_name}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="profile-ud-item">
|
||||
<div class="profile-ud wider">
|
||||
<span class="profile-ud-label">Tema</span>
|
||||
<span class="profile-ud-value">{{$mediaMonitoring->theme}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="profile-ud-item">
|
||||
<div class="profile-ud wider">
|
||||
<span class="profile-ud-label">Judul</span>
|
||||
<span class="profile-ud-value">{{$mediaMonitoring->title}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="profile-ud-item">
|
||||
<div class="profile-ud wider">
|
||||
<span class="profile-ud-label">Link</span>
|
||||
<span class="profile-ud-value">
|
||||
@if ($mediaMonitoring->link != '' || $mediaMonitoring != null)
|
||||
<a href="{{$mediaMonitoring->link}}" target="__blank">{{$mediaMonitoring->link}}</a>
|
||||
@else
|
||||
-
|
||||
@endif
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="profile-ud-item">
|
||||
<div class="profile-ud wider">
|
||||
<span class="profile-ud-label">Penulis</span>
|
||||
<span class="profile-ud-value">{{$mediaMonitoring->writter}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="profile-ud-item">
|
||||
<div class="profile-ud wider">
|
||||
<span class="profile-ud-label">Kanal</span>
|
||||
<span class="profile-ud-value">{{$mediaMonitoring->channel}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="profile-ud-item">
|
||||
<div class="profile-ud wider">
|
||||
<span class="profile-ud-label">Influencer</span>
|
||||
<span class="profile-ud-value">{{$mediaMonitoring->influencer}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="profile-ud-item">
|
||||
<div class="profile-ud wider">
|
||||
<span class="profile-ud-label">Kata Kunci</span>
|
||||
<span class="profile-ud-value">{{$mediaMonitoring->keyword}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="profile-ud-item">
|
||||
<div class="profile-ud wider">
|
||||
<span class="profile-ud-label">Tanggal Input</span>
|
||||
<span class="profile-ud-value">{{idn_date($mediaMonitoring->created_at, 'l, m F Y')}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="profile-ud-item">
|
||||
<div class="profile-ud wider">
|
||||
<span class="profile-ud-label">Tanggal Rilis</span>
|
||||
<span class="profile-ud-value">{{idn_date($mediaMonitoring->release_date, 'l, m F Y')}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- .profile-ud-list -->
|
||||
</div><!-- .nk-block -->
|
||||
{{-- <div class="nk-divider divider md"></div> --}}
|
||||
<div class="nk-block">
|
||||
<div class="nk-block-head nk-block-head-sm nk-block-between">
|
||||
<span class="profile-ud-label">Kutipan</span>
|
||||
</div><!-- .nk-block-head -->
|
||||
<div class="bq-note">
|
||||
<div class="bq-note-item">
|
||||
<div class="bq-note-text">
|
||||
{!!$mediaMonitoring->quote!!}
|
||||
</div>
|
||||
</div><!-- .bq-note-item -->
|
||||
</div><!-- .bq-note -->
|
||||
</div><!-- .nk-block -->
|
||||
<div class="nk-block">
|
||||
<div class="nk-block-head nk-block-head-sm nk-block-between">
|
||||
<span class="profile-ud-label">Konten</span>
|
||||
</div><!-- .nk-block-head -->
|
||||
<div class="bq-note">
|
||||
<div class="bq-note-item">
|
||||
<div class="bq-note-text">
|
||||
{!!$mediaMonitoring->content!!}
|
||||
</div>
|
||||
</div><!-- .bq-note-item -->
|
||||
</div><!-- .bq-note -->
|
||||
</div><!-- .nk-block -->
|
||||
<div class="nk-block">
|
||||
<div class="nk-block-head nk-block-head-sm nk-block-between">
|
||||
<span class="profile-ud-label">Gambar</span>
|
||||
</div><!-- .nk-block-head -->
|
||||
<div class="bq-note">
|
||||
<div class="bq-note-item">
|
||||
<div class="bq-note-text">
|
||||
<img src="{{asset('storage/uploads/media-monitorings/'. $mediaMonitoring->image)}}" alt="">
|
||||
</div>
|
||||
</div><!-- .bq-note-item -->
|
||||
</div><!-- .bq-note -->
|
||||
</div><!-- .nk-block -->
|
||||
<div class="nk-block d-flex justify-content-end">
|
||||
<a href="{{route('dashboard.content.recaps.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
|
||||
<a href="{{route('dashboard.content.recaps.edit', ['id' => encrypt_id($mediaMonitoring->id)])}}" class="btn btn-warning"><span>Ubah</span></a>
|
||||
</div><!-- .nk-block -->
|
||||
</div><!-- .card-inner -->
|
||||
</div><!-- .card-content -->
|
||||
</div><!-- .card-aside-wrap -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- content @e -->
|
||||
@include('partials.dashboard.footer', ['rich_editor' => false])
|
||||
@ -213,6 +213,33 @@
|
||||
</script>
|
||||
@endif
|
||||
|
||||
@if ($datatable === 'media_monitoring')
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#mediaMonitoringsTable').DataTable({
|
||||
processing: true,
|
||||
serverSide: true,
|
||||
ajax: '{{ route('dashboard.media.monitoring.data') }}',
|
||||
columns: [
|
||||
{ data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false },
|
||||
{ data: 'enhancer', name: 'enhancer' },
|
||||
{ data: 'code', name: 'code' },
|
||||
{ data: 'input_date', name: 'input_date' },
|
||||
{ data: 'title', name: 'title' },
|
||||
{ data: 'media_name', name: 'media_name' },
|
||||
{ data: 'link', name: 'link' },
|
||||
{ data: 'action', name: 'action', orderable: false, searchable: false },
|
||||
{ data: 'id', name: 'id', orderable: true, searchable: false, visible: false },
|
||||
],
|
||||
language: datatableLanguage,
|
||||
autoWidth: false,
|
||||
order: [[1, 'desc']],
|
||||
lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']]
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
|
||||
@if ($datatable === 'user')
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
||||
@ -51,6 +51,7 @@
|
||||
<!-- JavaScript -->
|
||||
<script src="{{asset('assets/dashboard/js/bundle.js?ver=3.0.3')}}"></script>
|
||||
<script src="{{asset('assets/dashboard/js/scripts.js?ver=3.0.3')}}"></script>
|
||||
<script src="{{asset('assets/dashboard/js/custom.js')}}"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
|
||||
|
||||
@include('partials.app.sweetalert')
|
||||
|
||||
@ -145,7 +145,7 @@
|
||||
</a>
|
||||
</li><!-- .nk-menu-item -->
|
||||
<li class="nk-menu-item">
|
||||
<a href="javascript:void(0);" class="nk-menu-link">
|
||||
<a href="{{route('dashboard.media.monitoring.index')}}" class="nk-menu-link {{$page === 'media_monitorings' ? 'active-page' : ''}}">
|
||||
<span class="nk-menu-icon"><em class="icon ni ni-layers"></em></span>
|
||||
<span class="nk-menu-text">Monitoring Media</span>
|
||||
</a>
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
use App\Http\Controllers\Dashboard\DatatableController;
|
||||
use App\Http\Controllers\Dashboard\GovernmentAgencyController;
|
||||
use App\Http\Controllers\Dashboard\LocationController;
|
||||
use App\Http\Controllers\Dashboard\MediaMonitoringController;
|
||||
use App\Http\Controllers\Dashboard\NewsController;
|
||||
use App\Http\Controllers\Dashboard\OverviewController;
|
||||
use App\Http\Controllers\Dashboard\RoleController;
|
||||
@ -159,6 +160,21 @@
|
||||
Route::get('/data', [DatatableController::class, 'contentRecap'])->name('data');
|
||||
});
|
||||
|
||||
Route::prefix('media-monitorings')->name('media.monitoring.')->group(function(){
|
||||
Route::controller(MediaMonitoringController::class)->group(function(){
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('/create', 'create')->name('create');
|
||||
Route::post('/', 'store')->name('store');
|
||||
Route::post('/check-link', 'checkLink')->name('check.link');
|
||||
Route::get('/{id}/show', 'show')->name('show');
|
||||
Route::get('/{id}/edit', 'edit')->name('edit');
|
||||
Route::put('/{id}', 'update')->name('update');
|
||||
Route::delete('/{id}', 'destroy')->name('destroy');
|
||||
});
|
||||
|
||||
Route::get('/data', [DatatableController::class, 'mediaMonitoring'])->name('data');
|
||||
});
|
||||
|
||||
Route::prefix('users')->name('users.')->group(function(){
|
||||
Route::controller(UserController::class)->group(function(){
|
||||
Route::get('/', 'index')->name('index');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user