Add file upload function. modify paramiter FILESYSTEM_DISK=public in file .env
This commit is contained in:
39
resources/views/components/table-words.blade.php
Normal file
39
resources/views/components/table-words.blade.php
Normal file
@@ -0,0 +1,39 @@
|
||||
@props(['items' => []])
|
||||
@props(['fields' => []])
|
||||
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">ID#</th>
|
||||
<th scope="col">Italian Word</th>
|
||||
<th scope="col">Dialect Translation</th>
|
||||
<th scope="col">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@forelse ($items as $item)
|
||||
<tr>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $item->{$fields[0]} }}</td>
|
||||
<td>{{ $item->{$fields[1]} }}</td>
|
||||
<td>
|
||||
|
||||
@can('edit-user')
|
||||
<a href="edit_record/{{ $item->id }}"><button class="btn btn-primary btn-xs">Edit</button> </a>
|
||||
@endcan
|
||||
@can('delete-user')
|
||||
<a href="delete_record/{{ $item->id }}"><button class="btn btn-danger btn-xs">Delete</button> </a>
|
||||
@endcan
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<td colspan="5">
|
||||
<span class="text-danger">
|
||||
<strong>No User Found!</strong>
|
||||
</span>
|
||||
</td>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -4,32 +4,13 @@
|
||||
{{ __('Table Words') }}
|
||||
</h2>
|
||||
</x-slot>
|
||||
|
||||
<div class="py-12">
|
||||
<div class="row">
|
||||
<div class="col-lg-7 col-xl-8 grid-margin stretch-card">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="p-4 sm:p-8 bg-white dark:bg-gray-800 shadow sm:rounded-lg">
|
||||
<div class="max-w-xl">
|
||||
@include('words.partials.insert-word-form')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-5 col-xl-4 grid-margin stretch-card">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="p-4 sm:p-8 bg-white dark:bg-gray-800 shadow sm:rounded-lg">
|
||||
<div class="max-w-xl">
|
||||
@include('words.partials.upload-file')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">Manage Words Translation</div>
|
||||
<div class="card-body">
|
||||
<a href="{{ route('words.edit') }}" class="btn btn-success btn-sm my-2"><i class="bi bi-plus-circle"></i> Insert Word</a>
|
||||
<a href="{{ route('words.insertFile') }}" class="btn btn-success btn-sm my-2"><i class="bi bi-plus-circle"></i> Upload File</a>
|
||||
<x-table-words :items="$words" :fields="array('name','translation')" />
|
||||
</div>
|
||||
{{ $words->links('vendor.pagination.bootstrap-5') }}
|
||||
</div>
|
||||
<x-table :items="$words" :fields="array('name','translation')" />
|
||||
</x-app-layout>
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
<x-app-layout>
|
||||
<section>
|
||||
<header>
|
||||
<h2 class="text-lg font-medium text-gray-900 dark:text-gray-100">
|
||||
{{ __('Insert Word') }}
|
||||
</h2>
|
||||
|
||||
<p class="mt-1 text-sm text-gray-600 dark:text-gray-400">
|
||||
{{ __("Enter the word Italian and its dialect translation") }}
|
||||
</p>
|
||||
</header>
|
||||
|
||||
<form method="post" action="{{ route('words.update', $id) }}" class="mt-6 space-y-6">
|
||||
@csrf
|
||||
|
||||
<div>
|
||||
<x-input-label for="name" :value="__('Italian Word')" />
|
||||
<x-text-input id="name" name="name" value="{{$name}}" type="text" class="mt-1 block w-full" placeholder="Italian Word" required autofocus autocomplete="name"/>
|
||||
<x-input-error :messages="$errors->get('name')" class="mt-2" />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<x-input-label for="translation" :value="__('Dialect Word')" />
|
||||
<x-text-input id="translation" name="translation" value="{{$translation}}" type="text" class="mt-1 block w-full" placeholder="Dialectic Word" required autofocus autocomplete="translation" />
|
||||
<x-input-error :messages="$errors->get('translation')" class="mt-2" />
|
||||
</div>
|
||||
<div class="flex items-center gap-4">
|
||||
<x-primary-button>{{ __('Submit') }}</x-primary-button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
</x-app-layout>
|
||||
@@ -1,31 +1,42 @@
|
||||
<section>
|
||||
<header>
|
||||
<h2 class="text-lg font-medium text-gray-900 dark:text-gray-100">
|
||||
{{ __('Insert Word') }}
|
||||
</h2>
|
||||
|
||||
<p class="mt-1 text-sm text-gray-600 dark:text-gray-400">
|
||||
{{ __("Enter the word Italian and its dialect translation") }}
|
||||
</p>
|
||||
</header>
|
||||
|
||||
<form method="post" action="{{ route('words.insert') }}" class="mt-6 space-y-6">
|
||||
@csrf
|
||||
|
||||
<div>
|
||||
<x-input-label for="name" :value="__('Italian Word')" />
|
||||
<x-text-input id="name" name="name" type="text" class="mt-1 block w-full" placeholder="Italian Word" autofocus autocomplete="name"/>
|
||||
<x-input-error :messages="$errors->get('name')" class="mt-2" />
|
||||
<x-app-layout>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div>
|
||||
<h2 class="text-lg font-medium text-gray-900 dark:text-gray-100">
|
||||
{{ __('Insert Word') }}
|
||||
</h2>
|
||||
<p class="mt-1 text-sm text-gray-600 dark:text-gray-400">
|
||||
{{ __("Enter the word Italian and its dialect translation") }}
|
||||
</p>
|
||||
</div>
|
||||
<div class="float-end">
|
||||
<a href="{{ route('words.index') }}" class="btn btn-primary"> Back</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<x-input-label for="translation" :value="__('Dialect Word')" />
|
||||
<x-text-input id="translation" name="translation" type="text" class="mt-1 block w-full" placeholder="Dialectic Word" autofocus autocomplete="translation" />
|
||||
<x-input-error :messages="$errors->get('translation')" class="mt-2" />
|
||||
</div>
|
||||
<div class="flex items-center gap-4">
|
||||
<x-primary-button>{{ __('Submit') }}</x-primary-button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
<div class="card-body">
|
||||
<form method="post" action="{{ route('words.insert') }}" class="mt-6 space-y-6">
|
||||
@csrf
|
||||
|
||||
<div class="mb-3 row">
|
||||
<x-input-label for="name" :value="__('Italian Word')" />
|
||||
<div class="col-md-6">
|
||||
<x-text-input id="name" name="name" type="text" class="mt-1 block w-full" placeholder="Italian Word" autofocus autocomplete="name"/>
|
||||
<x-input-error :messages="$errors->get('name')" class="mt-2" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 row">
|
||||
<x-input-label for="translation" :value="__('Dialect Word')" />
|
||||
<div class="col-md-6">
|
||||
<x-text-input id="translation" name="translation" type="text" class="mt-1 block w-full" placeholder="Dialectic Word" autofocus autocomplete="translation" />
|
||||
<x-input-error :messages="$errors->get('translation')" class="mt-2" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<x-primary-button>{{ __('Submit') }}</x-primary-button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
|
||||
41
resources/views/words/partials/modify-word-form.blade.php
Normal file
41
resources/views/words/partials/modify-word-form.blade.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<x-app-layout>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h2 class="text-lg font-medium text-gray-900 dark:text-gray-100">
|
||||
{{ __('Insert Word') }}
|
||||
</h2>
|
||||
|
||||
<p class="mt-1 text-sm text-gray-600 dark:text-gray-400">
|
||||
{{ __("Enter the word Italian and its dialect translation") }}
|
||||
</p>
|
||||
<div class="float-end">
|
||||
<a href="{{ route('words.index') }}" class="btn btn-primary"> Back</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<form method="post" action="{{ route('words.update', $id) }}" class="mt-6 space-y-6">
|
||||
@csrf
|
||||
|
||||
<div class="mb-3 row">
|
||||
<x-input-label for="name" :value="__('Italian Word')" />
|
||||
<div class="col-md-6">
|
||||
<x-text-input id="name" name="name" value="{{$name}}" type="text" class="mt-1 block w-full" placeholder="Italian Word" autofocus autocomplete="name"/>
|
||||
<x-input-error :messages="$errors->get('name')" class="mt-2" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 row">
|
||||
<x-input-label for="translation" :value="__('Dialect Word')" />
|
||||
<div class="col-md-6">
|
||||
<x-text-input id="translation" name="translation" value="{{$translation}}" type="text" class="mt-1 block w-full" placeholder="Dialectic Word" autofocus autocomplete="translation" />
|
||||
<x-input-error :messages="$errors->get('translation')" class="mt-2" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<x-primary-button>{{ __('Submit') }}</x-primary-button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
@@ -1,22 +1,30 @@
|
||||
<section>
|
||||
<header>
|
||||
<h2 class="text-lg font-medium text-gray-900 dark:text-gray-100">
|
||||
{{ __('Upload CSV File ') }}
|
||||
</h2>
|
||||
<x-app-layout>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h2 class="text-lg font-medium text-gray-900 dark:text-gray-100">
|
||||
{{ __('Upload CSV File ') }}
|
||||
</h2>
|
||||
|
||||
<p class="mt-1 text-sm text-gray-600 dark:text-gray-400">
|
||||
{{ __("Upload file to add group of word in db") }}
|
||||
</p>
|
||||
</header>
|
||||
|
||||
<form action="{{ route('store') }}" method="post" class="mt-6 space-y-6" enctype="multipart/form-data">
|
||||
@csrf
|
||||
|
||||
<x-text-input type="file" id="filetoinsert" name="filetoinsert"/>
|
||||
<x-input-error class="mt-2" :messages="$errors->get('filetoinsert')" />
|
||||
<div class="flex items-center gap-4">
|
||||
<br>
|
||||
<x-primary-button>{{ __('Submit') }}</x-primary-button>
|
||||
<p class="mt-1 text-sm text-gray-600 dark:text-gray-400">
|
||||
{{ __("Upload file to add group of word in db") }}
|
||||
</p>
|
||||
<div class="float-end">
|
||||
<a href="{{ route('words.index') }}" class="btn btn-primary"> Back</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<div class="card-body">
|
||||
<form action="{{ route('words.uploadFile') }}" method="post" class="mt-6 space-y-6" enctype="multipart/form-data">
|
||||
@csrf
|
||||
|
||||
<div class="mb-3 row">
|
||||
<x-text-input type="file" id="filetoinsert" name="filetoinsert"/>
|
||||
<x-input-error class="mt-2" :messages="$errors->get('filetoinsert')" />
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<x-primary-button>{{ __('Submit') }}</x-primary-button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</x-app-layout>
|
||||
|
||||
Reference in New Issue
Block a user