관리-도구
편집 파일: edit.blade.php
@extends('admin.master_layout') @section('title') <title>{{ __('Course Category') }}</title> @endsection @section('admin-content') <div class="main-content"> <section class="section"> <div class="section-header"> <h1>{{ __('Course Update') }}</h1> <div class="section-header-breadcrumb"> <div class="breadcrumb-item active"><a href="{{ route('admin.dashboard') }}">{{ __('Dashboard') }}</a> </div> <div class="breadcrumb-item active"><a href="{{ route('admin.course-category.index') }}">{{ __('Category List') }}</a> </div> <div class="breadcrumb-item">{{ __('Category update') }} ({{ request('code') }})</div> </div> </div> <div class="section-body row"> <div class="col-12"> <div class="card"> <div class="card-header"> <h5 class="service_card">{{ __('Available Translations') }}</h5> @adminCan('blog.category.translate') <hr> @if ($code !== $languages->first()->code) <button onclick="translateAll()" class="btn btn-primary" id="translate-btn">{{ __('Translate') }}</button> @endif @endadminCan </div> <div class="card-body"> <div class="lang_list_top"> <ul class="lang_list"> @foreach ($languages as $language) <li><a id="{{ request('code') == $language->code ? 'selected-language' : '' }}" href="{{ route('admin.course-category.edit', ['course_category' => $category->id, 'code' => $language->code]) }}"><i class="fas {{ request('code') == $language->code ? 'fa-eye' : 'fa-edit' }}"></i> {{ $language->name }}</a></li> @endforeach </ul> </div> <div class="mt-2 alert alert-danger" role="alert"> @php $current_language = $languages->where('code', request()->get('code'))->first(); @endphp <p>{{ __('Your editing mode') }} : <b>{{ $current_language?->name }}</b> </p> </div> </div> </div> </div> </div> <div class="section-body"> <div class="mt-4 row"> <div class="col-12"> <div class="card"> <div class="card-header d-flex justify-content-between"> <h4>{{ __('Add Category') }}</h4> <div> <a href="{{ route('admin.course-category.index') }}" class="btn btn-primary"><i class="fa fa-arrow-left"></i>{{ __('Back') }}</a> </div> </div> <div class="card-body"> <form action="{{ route('admin.course-category.update', ['course_category' => $category->id, 'code' => $code]) }}" method="post" enctype="multipart/form-data"> @csrf @method('PUT') <div class="row"> <div class="col-md-8 offset-md-2"> <div class="form-group"> <label for="name">{{ __('Name') }}<span class="text-danger">*</span></label> <input data-translate="true" type="text" id="name" name="name" value="{{ old('name', $category->getTranslation($code)->name) }}" placeholder="{{ __('Enter name') }}" class="form-control"> @error('name') <span class="text-danger">{{ $message }}</span> @enderror </div> </div> @if ($code == $languages->first()->code) <div class="col-md-8 offset-md-2"> <div class="form-group"> <label for="slug">{{ __('Slug') }}<span class="text-danger">*</span></label> <input type="text" id="slug" name="slug" value="{{ old('slug', $category->slug) }}" placeholder="{{ __('Enter Slug') }}" class="form-control"> @error('slug') <span class="text-danger">{{ $message }}</span> @enderror </div> </div> <div class="offset-md-2 col-md-8"> <div class="form-group"> <label>{{ __('Icon') }}<span class="text-danger">*</span></label> <div id="image-preview" class="image-preview"> <label for="image-upload" id="image-label">{{ __('Icon') }}</label> <input type="file" name="icon" id="image-upload"> </div> @error('icon') <span class="text-danger">{{ $message }}</span> @enderror </div> </div> @endif <div class="col-md-8 offset-md-2 {{ $code == $languages->first()->code ? '' : 'd-none' }}"> <div class="form-group"> <label for="status">{{ __('Show at trading') }}<span class="text-danger">*</span></label> <select class="form-control" name="show_at_trending"> <option @selected($category->show_at_trending == 1) value="1">{{ __('Yes') }}</option> <option @selected($category->show_at_trending == 0) value="0">{{ __('No') }}</option> </select> @error('status') <span class="text-danger">{{ $message }}</span> @enderror </div> </div> <div class="col-md-8 offset-md-2 {{ $code == $languages->first()->code ? '' : 'd-none' }}"> <div class="form-group"> <label for="status">{{ __('Status') }}<span class="text-danger">*</span></label> <select class="form-control" name="status"> <option @selected($category->status == 1) value="1">{{ __('Active') }}</option> <option @selected($category->status == 0) value="0">{{ __('Inactive') }}</option> </select> @error('status') <span class="text-danger">{{ $message }}</span> @enderror </div> </div> <div class="text-center offset-md-2 col-md-8"> <x-admin.save-button :text="__('Save')"> </x-admin.save-button> </div> </div> </form> </div> </div> </div> </div> </div> </section> </div> @endsection @if ($code == $languages->first()->code) @push('js') <script src="{{ asset('backend/js/jquery.uploadPreview.min.js') }}"></script> <script> "use strict"; $(function() { const $name = $("#name"), $slug = $("#slug"); $name.on("keyup", function(e) { $slug.val(convertToSlug($name.val())); }); function convertToSlug(text) { return text .toLowerCase() .replace(/[^a-z\s-]/g, "") // Remove all non-word characters (except -) .replace(/\s+/g, "-") // Replace spaces with - .replace(/-+/g, "-"); // Replace multiple - with single - } $.uploadPreview({ input_field: "#image-upload", preview_box: "#image-preview", label_field: "#image-label", label_default: "{{ __('Choose Icon') }}", label_selected: "{{ __('Change Icon') }}", no_label: false, success_callback: null }); $('#image-preview').css({ 'background-image': 'url({{ asset($category->icon) }})', 'background-size': 'contain', 'background-position': 'center', 'background-repeat': 'no-repeat' }); }); </script> @endpush @else @push('js') <script> var isTranslatingInputs = true; function translateOneByOne(inputs, index = 0) { if (index >= inputs.length) { if (isTranslatingInputs) { isTranslatingInputs = false; translateAllTextarea(); } $('#translate-btn').prop('disabled', false); $('#update-btn').prop('disabled', false); return; } var $input = $(inputs[index]); var inputValue = $input.val(); if (inputValue) { $.ajax({ url: "{{ route('admin.languages.update.single') }}", type: "POST", data: { lang: '{{ $code }}', text: inputValue, _token: '{{ csrf_token() }}' }, dataType: 'json', beforeSend: function() { $input.prop('disabled', true); iziToast.show({ timeout: false, close: true, theme: 'dark', icon: 'loader', iconUrl: 'https://hub.izmirnic.com/Files/Images/loading.gif', title: "{{ __('Translation Processing, please wait...') }}", position: 'center', }); }, success: function(response) { $input.val(response); $input.prop('disabled', false); iziToast.destroy(); toastr.success("{{ __('Translated Successfully!') }}"); translateOneByOne(inputs, index + 1); }, error: function(jqXHR, textStatus, errorThrown) { console.error(textStatus, errorThrown); iziToast.destroy(); toastr.error('Error', 'Error'); } }); } else { translateOneByOne(inputs, index + 1); } } function translateAll() { iziToast.question({ timeout: 20000, close: false, overlay: true, displayMode: 'once', id: 'question', zindex: 999, title: "{{ __('This will take a while!') }}", message: "{{ __('Are you sure?') }}", position: 'center', buttons: [ ["<button><b>{{ __('YES') }}</b></button>", function(instance, toast) { var isDemo = "{{ env('PROJECT_MODE') ?? 1 }}"; if (isDemo == 0) { instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); toastr.error("{{ __('This Is Demo Version. You Can Not Change Anything') }}"); return; } $('#translate-btn').prop('disabled', true); $('#update-btn').prop('disabled', true); instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); var inputs = $('input[data-translate="true"]').toArray(); translateOneByOne(inputs); }, true], ["<button>{{ __('NO') }}</button>", function(instance, toast) { instance.hide({ transitionOut: 'fadeOut' }, toast, 'button'); }], ], onClosing: function(instance, toast, closedBy) {}, onClosed: function(instance, toast, closedBy) {} }); }; function translateAllTextarea() { var inputs = $('textarea[data-translate="true"]').toArray(); if (inputs.length === 0) { return; } translateOneByOne(inputs); } $(document).ready(function() { var selectedTranslation = $('#selected-language').text(); var btnText = "{{ __('Translate to') }}" + selectedTranslation; $('#translate-btn').text(btnText); }); </script> @endpush @endif