Файловый менеджер - Редактировать - /home/c7lekhnath/silverray.com.au/Modules/Language/database/seeders/68334/NewsLetter.tar
Назад
lang/.gitkeep 0000644 00000000000 15012236406 0007103 0 ustar 00 module.json 0000644 00000000352 15012236406 0006723 0 ustar 00 { "name": "NewsLetter", "alias": "newsletter", "description": "", "keywords": [], "priority": 0, "providers": [ "Modules\\NewsLetter\\app\\Providers\\NewsLetterServiceProvider" ], "files": [] } tests/Unit/.gitkeep 0000644 00000000000 15012236406 0010243 0 ustar 00 tests/Feature/.gitkeep 0000644 00000000000 15012236406 0010717 0 ustar 00 vite.config.js 0000644 00000001312 15012236406 0007311 0 ustar 00 import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig({ build: { outDir: '../../public/build-newsletter', emptyOutDir: true, manifest: true, }, plugins: [ laravel({ publicDirectory: '../../public', buildDirectory: 'build-newsletter', input: [ __dirname + '/resources/assets/sass/app.scss', __dirname + '/resources/assets/js/app.js' ], refresh: true, }), ], }); //export const paths = [ // 'Modules/$STUDLY_NAME$/resources/assets/sass/app.scss', // 'Modules/$STUDLY_NAME$/resources/assets/js/app.js', //]; wsus.json 0000644 00000000627 15012236406 0006444 0 ustar 00 { "name": "Newsletter Addon", "is_default": true, "description": "This is Newsletter Addon", "author": { "name": "Websolutionsus", "email": "websolutionus1@gmail.com", "website": "https://websolutionus.com" }, "license": "Proprietary", "url": "", "options" : { "route" : "home" }, "last_update": "2024-03-31", "version": "1.0.0" } routes/.gitkeep 0000644 00000000000 15012236406 0007503 0 ustar 00 routes/error_log 0000644 00000001114 15012236406 0007776 0 ustar 00 [07-May-2025 22:28:30 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Support\Facades\Route" not found in /home/lekhnath/silverray.com.au/Modules/NewsLetter/routes/api.php:5 Stack trace: #0 {main} thrown in /home/lekhnath/silverray.com.au/Modules/NewsLetter/routes/api.php on line 5 [07-May-2025 23:37:43 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Support\Facades\Route" not found in /home/lekhnath/silverray.com.au/Modules/NewsLetter/routes/web.php:7 Stack trace: #0 {main} thrown in /home/lekhnath/silverray.com.au/Modules/NewsLetter/routes/web.php on line 7 routes/web.php 0000644 00000002037 15012236406 0007354 0 ustar 00 <?php use Illuminate\Support\Facades\Route; use Modules\NewsLetter\app\Http\Controllers\Admin\NewsLetterController as AdminNewsLetterController; use Modules\NewsLetter\app\Http\Controllers\NewsLetterController; Route::group(['as' => 'admin.', 'prefix' => 'admin', 'middleware' => ['auth:admin', 'translation']], function () { Route::get('subscriber-list', [AdminNewsLetterController::class, 'index'])->name('subscriber-list'); Route::delete('subscriber-delete/{id}', [AdminNewsLetterController::class, 'destroy'])->name('subscriber-delete'); Route::get('send-mail-to-newsletter', [AdminNewsLetterController::class, 'create'])->name('send-mail-to-newsletter'); Route::post('send-mail-to-subscriber', [AdminNewsLetterController::class, 'store'])->name('send-mail-to-subscriber'); }); Route::post('newsletter-request', [NewsLetterController::class, 'newsletter_request'])->name('newsletter-request'); Route::get('newsletter-verification/{token}', [NewsLetterController::class, 'newsletter_verification'])->name('newsletter-verification'); routes/api.php 0000644 00000000214 15012236406 0007343 0 ustar 00 <?php use Illuminate\Support\Facades\Route; Route::middleware(['auth:sanctum'])->prefix('v1')->name('api.')->group(function () { }); composer.json 0000644 00000001317 15012236406 0007267 0 ustar 00 { "name": "nwidart/newsletter", "description": "", "authors": [ { "name": "Nicolas Widart", "email": "n.widart@gmail.com" } ], "extra": { "laravel": { "providers": [], "aliases": { } } }, "autoload": { "psr-4": { "Modules\\NewsLetter\\": "", "Modules\\NewsLetter\\App\\": "app/", "Modules\\NewsLetter\\Database\\Factories\\": "database/factories/", "Modules\\NewsLetter\\Database\\Seeders\\": "database/seeders/" } }, "autoload-dev": { "psr-4": { "Modules\\NewsLetter\\Tests\\": "tests/" } } } config/config.php 0000644 00000000057 15012236406 0007770 0 ustar 00 <?php return [ 'name' => 'NewsLetter', ]; config/.gitkeep 0000644 00000000000 15012236406 0007427 0 ustar 00 package.json 0000644 00000000410 15012236406 0007024 0 ustar 00 { "private": true, "type": "module", "scripts": { "dev": "vite", "build": "vite build" }, "devDependencies": { "axios": "^1.1.2", "laravel-vite-plugin": "^0.7.5", "sass": "^1.69.5", "postcss": "^8.3.7", "vite": "^4.0.0" } } app/Http/Controllers/.gitkeep 0000644 00000000000 15012236406 0012167 0 ustar 00 app/Http/Controllers/NewsLetterController.php 0000644 00000003660 15012236406 0015426 0 ustar 00 <?php namespace Modules\NewsLetter\app\Http\Controllers; use App\Http\Controllers\Controller; use App\Traits\GlobalMailTrait; use Illuminate\Http\Request; use Illuminate\Support\Str; use Modules\NewsLetter\app\Models\NewsLetter; class NewsLetterController extends Controller { use GlobalMailTrait; public function newsletter_request(Request $request) { $request->validate([ 'email' => 'required|unique:news_letters', ], [ 'email.required' => __('Email is required'), 'email.unique' => __('Email already exist'), ]); $newsletter = new NewsLetter(); $newsletter->email = $request->email; $newsletter->verify_token = Str::random(100); $newsletter->save(); [$subject, $message] = $this->fetchEmailTemplate('subscribe_notification'); $link = [__('CONFIRM YOUR EMAIL') => route('newsletter-verification', $newsletter->verify_token)]; $this->sendMail($newsletter->email, $subject, $message, $link); return response()->json(['message' => __('A verification link has been sent to your email. Please verify it to start receiving our newsletter.')]); } public function newsletter_verification($token) { $newsletter = NewsLetter::where('verify_token', $token)->first(); if ($newsletter) { $newsletter->verify_token = null; $newsletter->status = 'verified'; $newsletter->save(); $notification = __('Newsletter verification successfully'); $notification = ['messege' => $notification, 'alert-type' => 'success']; return redirect()->route('home')->with($notification); } else { $notification = __('Newsletter verification faild for invalid token'); $notification = ['messege' => $notification, 'alert-type' => 'error']; return redirect()->route('home')->with($notification); } } } app/Http/Controllers/Admin/NewsLetterController.php 0000644 00000005540 15012236406 0016455 0 ustar 00 <?php namespace Modules\NewsLetter\app\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Services\MailSenderService; use App\Traits\MailSenderTrait; use Illuminate\Http\Request; use Modules\NewsLetter\app\Models\NewsLetter; class NewsLetterController extends Controller { //use MailSenderTrait; public function index(Request $request) { checkAdminHasPermissionAndThrowException('newsletter.view'); $query = NewsLetter::query()->where('status', 'verified'); $query->when($request->filled('keyword'), function ($qa) use ($request) { $qa->where('email', 'like', '%'.$request->keyword.'%'); }); $orderBy = $request->filled( 'order_by' ) && $request->order_by == 1 ? 'asc' : 'desc'; if ($request->filled('par-page')) { $newsletters = $request->get('par-page') == 'all' ? $query->orderBy( 'id', $orderBy )->get() : $query->orderBy( 'id', $orderBy )->paginate($request->get('par-page'))->withQueryString(); } else { $newsletters = $query->orderBy( 'id', $orderBy )->paginate()->withQueryString(); } return view('newsletter::index', ['newsletters' => $newsletters]); } public function create() { checkAdminHasPermissionAndThrowException('newsletter.mail'); return view('newsletter::create'); } public function destroy($id) { checkAdminHasPermissionAndThrowException('newsletter.delete'); $newsletter = NewsLetter::find($id); $newsletter->delete(); $notification = __('Deleted successfully'); $notification = ['messege' => $notification, 'alert-type' => 'success']; return redirect()->back()->with($notification); } public function store(Request $request) { checkAdminHasPermissionAndThrowException('newsletter.mail'); $request->validate([ 'subject' => 'required', 'description' => 'required', ], [ 'subject.required' => __('Subject is required'), 'description.required' => __('Description is required'), ]); $newsletterCount = NewsLetter::select('id')->orderBy('id', 'desc')->where('status', 'verified')->count(); if ($newsletterCount > 0) { $email_list = NewsLetter::select('email')->orderBy('id', 'desc')->where('status', 'verified')->get(); (new MailSenderService)->SendBulkEmail($email_list, $request->subject, $request->description); $notification = __('Mail Sent Successfully'); $notification = ['messege' => $notification, 'alert-type' => 'success']; } else { $notification = __('The email cannot be sent because no subscribers were found.'); $notification = ['messege' => $notification, 'alert-type' => 'error']; } return redirect()->back()->with($notification); } } app/Http/Requests/.gitkeep 0000644 00000000000 15012236406 0011474 0 ustar 00 app/Http/Middleware/.gitkeep 0000644 00000000000 15012236406 0011736 0 ustar 00 app/Models/NewsLetter.php 0000644 00000000447 15012236406 0011360 0 ustar 00 <?php namespace Modules\NewsLetter\app\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class NewsLetter extends Model { use HasFactory; /** * The attributes that are mass assignable. */ protected $fillable = []; } app/Models/.gitkeep 0000644 00000000000 15012236406 0010165 0 ustar 00 app/Models/error_log 0000644 00000000476 15012236406 0010472 0 ustar 00 [09-May-2025 01:27:39 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/lekhnath/silverray.com.au/Modules/NewsLetter/app/Models/NewsLetter.php:8 Stack trace: #0 {main} thrown in /home/lekhnath/silverray.com.au/Modules/NewsLetter/app/Models/NewsLetter.php on line 8 app/Providers/RouteServiceProvider.php 0000644 00000002677 15012236406 0014157 0 ustar 00 <?php namespace Modules\NewsLetter\app\Providers; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Route; class RouteServiceProvider extends ServiceProvider { /** * The module namespace to assume when generating URLs to actions. */ protected string $moduleNamespace = 'Modules\NewsLetter\app\Http\Controllers'; /** * Called before routes are registered. * * Register any model bindings or pattern based filters. */ public function boot(): void { parent::boot(); } /** * Define the routes for the application. */ public function map(): void { $this->mapApiRoutes(); $this->mapWebRoutes(); } /** * Define the "web" routes for the application. * * These routes all receive session state, CSRF protection, etc. */ protected function mapWebRoutes(): void { Route::middleware('web') ->namespace($this->moduleNamespace) ->group(module_path('NewsLetter', '/routes/web.php')); } /** * Define the "api" routes for the application. * * These routes are typically stateless. */ protected function mapApiRoutes(): void { Route::prefix('api') ->middleware('api') ->namespace($this->moduleNamespace) ->group(module_path('NewsLetter', '/routes/api.php')); } } app/Providers/.gitkeep 0000644 00000000000 15012236406 0010717 0 ustar 00 app/Providers/error_log 0000644 00000001324 15012236406 0011215 0 ustar 00 [10-May-2025 17:03:38 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Support\Providers\RouteServiceProvider" not found in /home/lekhnath/silverray.com.au/Modules/NewsLetter/app/Providers/RouteServiceProvider.php:8 Stack trace: #0 {main} thrown in /home/lekhnath/silverray.com.au/Modules/NewsLetter/app/Providers/RouteServiceProvider.php on line 8 [10-May-2025 18:12:45 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Support\ServiceProvider" not found in /home/lekhnath/silverray.com.au/Modules/NewsLetter/app/Providers/NewsLetterServiceProvider.php:8 Stack trace: #0 {main} thrown in /home/lekhnath/silverray.com.au/Modules/NewsLetter/app/Providers/NewsLetterServiceProvider.php on line 8 app/Providers/NewsLetterServiceProvider.php 0000644 00000006456 15012236406 0015154 0 ustar 00 <?php namespace Modules\NewsLetter\app\Providers; use Illuminate\Support\Facades\Blade; use Illuminate\Support\ServiceProvider; class NewsLetterServiceProvider extends ServiceProvider { protected string $moduleName = 'NewsLetter'; protected string $moduleNameLower = 'newsletter'; /** * Boot the application events. */ public function boot(): void { $this->registerCommands(); $this->registerCommandSchedules(); $this->registerTranslations(); $this->registerConfig(); $this->registerViews(); $this->loadMigrationsFrom(module_path($this->moduleName, 'database/migrations')); } /** * Register the service provider. */ public function register(): void { $this->app->register(RouteServiceProvider::class); } /** * Register commands in the format of Command::class */ protected function registerCommands(): void { // $this->commands([]); } /** * Register command Schedules. */ protected function registerCommandSchedules(): void { // $this->app->booted(function () { // $schedule = $this->app->make(Schedule::class); // $schedule->command('inspire')->hourly(); // }); } /** * Register translations. */ public function registerTranslations(): void { $langPath = resource_path('lang/modules/'.$this->moduleNameLower); if (is_dir($langPath)) { $this->loadTranslationsFrom($langPath, $this->moduleNameLower); $this->loadJsonTranslationsFrom($langPath); } else { $this->loadTranslationsFrom(module_path($this->moduleName, 'lang'), $this->moduleNameLower); $this->loadJsonTranslationsFrom(module_path($this->moduleName, 'lang')); } } /** * Register config. */ protected function registerConfig(): void { $this->publishes([module_path($this->moduleName, 'config/config.php') => config_path($this->moduleNameLower.'.php')], 'config'); $this->mergeConfigFrom(module_path($this->moduleName, 'config/config.php'), $this->moduleNameLower); } /** * Register views. */ public function registerViews(): void { $viewPath = resource_path('views/modules/'.$this->moduleNameLower); $sourcePath = module_path($this->moduleName, 'resources/views'); $this->publishes([$sourcePath => $viewPath], ['views', $this->moduleNameLower.'-module-views']); $this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower); $componentNamespace = str_replace('/', '\\', config('modules.namespace').'\\'.$this->moduleName.'\\'.config('modules.paths.generator.component-class.path')); Blade::componentNamespace($componentNamespace, $this->moduleNameLower); } /** * Get the services provided by the provider. */ public function provides(): array { return []; } private function getPublishableViewPaths(): array { $paths = []; foreach (config('view.paths') as $path) { if (is_dir($path.'/modules/'.$this->moduleNameLower)) { $paths[] = $path.'/modules/'.$this->moduleNameLower; } } return $paths; } } database/factories/.gitkeep 0000644 00000000000 15012236406 0011705 0 ustar 00 database/migrations/.gitkeep 0000644 00000000000 15012236406 0012102 0 ustar 00 database/migrations/2023_11_21_043030_create_news_letters_table.php 0000644 00000001271 15012236406 0020467 0 ustar 00 <?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('news_letters', function (Blueprint $table) { $table->id(); $table->string('email'); $table->string('status')->default('not_verified'); $table->string('verify_token')->nullable(); $table->timestamps(); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('news_letters'); } }; database/migrations/error_log 0000644 00000001460 15012236406 0012401 0 ustar 00 [08-May-2025 22:41:38 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Migrations\Migration" not found in /home/lekhnath/silverray.com.au/Modules/NewsLetter/database/migrations/2023_11_21_043030_create_news_letters_table.php:7 Stack trace: #0 {main} thrown in /home/lekhnath/silverray.com.au/Modules/NewsLetter/database/migrations/2023_11_21_043030_create_news_letters_table.php on line 7 [09-May-2025 23:14:06 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Migrations\Migration" not found in /home/lekhnath/silverray.com.au/Modules/NewsLetter/database/migrations/2023_11_21_043030_create_news_letters_table.php:7 Stack trace: #0 {main} thrown in /home/lekhnath/silverray.com.au/Modules/NewsLetter/database/migrations/2023_11_21_043030_create_news_letters_table.php on line 7 database/seeders/.gitkeep 0000644 00000000000 15012236406 0011360 0 ustar 00 database/seeders/NewsLetterDatabaseSeeder.php 0000644 00000000401 15012236406 0015316 0 ustar 00 <?php namespace Modules\NewsLetter\database\seeders; use Illuminate\Database\Seeder; class NewsLetterDatabaseSeeder extends Seeder { /** * Run the database seeds. */ public function run(): void { // $this->call([]); } } resources/assets/.gitkeep 0000644 00000000000 15012236406 0011476 0 ustar 00 resources/assets/js/app.js 0000644 00000000000 15012236406 0011577 0 ustar 00 resources/assets/sass/app.scss 0000644 00000000000 15012236406 0012473 0 ustar 00 resources/views/sidebar.blade.php 0000644 00000001623 15012236406 0013104 0 ustar 00 <li class="nav-item dropdown {{ isRoute('admin.subscriber-list') || isRoute('admin.send-mail-to-newsletter') ? 'active' : '' }}"> <a href="javascript:void()" class="nav-link has-dropdown"><i class="fas fa-bullhorn"></i><span>{{ __('NewsLetter') }}</span></a> <ul class="dropdown-menu"> @adminCan('newsletter.view') <li class="{{ isRoute('admin.subscriber-list') ? 'active' : '' }}"> <a class="nav-link" href="{{ route('admin.subscriber-list') }}"> {{ __('Subscriber List') }} </a> </li> @endadminCan @adminCan('newsletter.mail') <li class="{{ isRoute('admin.send-mail-to-newsletter') ? 'active' : '' }}"> <a class="nav-link" href="{{ route('admin.send-mail-to-newsletter') }}"> {{ __('Send bulk mail') }} </a> </li> @endadminCan </ul> </li> resources/views/.gitkeep 0000644 00000000000 15012236406 0011331 0 ustar 00 resources/views/create.blade.php 0000644 00000003302 15012236406 0012732 0 ustar 00 @extends('admin.master_layout') @section('title') <title>{{ __('Send bulk mail') }}</title> @endsection @section('admin-content') <div class="main-content"> <section class="section"> <x-admin.breadcrumb title="{{ __('Send bulk mail') }}" :list="[ __('Dashboard') => route('admin.dashboard'), __('Send bulk mail') => '#', ]" /> <div class="section-body"> <div class="row"> <div class="col-12"> <div class="card"> <div class="card-body"> <form action="{{ route('admin.send-mail-to-subscriber') }}" method="POST" enctype="multipart/form-data"> @csrf <div class="form-group"> <x-admin.form-input id="subject" name="subject" label="{{ __('Subject') }}" placeholder="{{ __('Enter Subject') }}" value="{{ old('subject') }}" required="true"/> </div> <div class="form-group"> <x-admin.form-editor id="description" name="description" label="{{ __('Description') }}" value="{!! old('description') !!}" required="true"/> </div> <x-admin.button type="submit" :text="__('Send Mail')" /> </form> </div> </div> </div> </div> </div> </section> </div> @endsection resources/views/index.blade.php 0000644 00000014650 15012236406 0012606 0 ustar 00 @extends('admin.master_layout') @section('title') <title>{{ __('Subscriber List') }}</title> @endsection @section('admin-content') <!-- Main Content --> <div class="main-content"> <section class="section"> <x-admin.breadcrumb title="{{ __('Subscriber List') }}" :list="[ __('Dashboard') => route('admin.dashboard'), __('Subscriber List') => '#', ]" /> <div class="section-body"> <div class="row"> {{-- Search filter --}} <div class="col-12"> <div class="card"> <div class="card-body pb-1"> <form action="{{ route('admin.subscriber-list') }}" method="GET" onchange="$(this).trigger('submit')"> <div class="row"> <div class="col-md-4 form-group mb-3"> <x-admin.form-input name="keyword" placeholder="{{ __('Search') }}" value="{{ request()->get('keyword') }}" /> </div> <div class="col-md-4 form-group mb-3"> <x-admin.form-select name="order_by" id="order_by" class="form-select"> <x-admin.select-option value="" text="{{ __('Order By') }}" /> <x-admin.select-option :selected="request('order_by') == '1'" value="1" text="{{ __('ASC') }}" /> <x-admin.select-option :selected="request('order_by') == '0'" value="0" text="{{ __('DESC') }}" /> </x-admin.form-select> </div> <div class="col-md-4 form-group mb-3"> <x-admin.form-select name="par-page" id="par-page" class="form-select"> <x-admin.select-option value="" text="{{ __('Per Page') }}" /> <x-admin.select-option :selected="request('par-page') == '5'" value="5" text="{{ __('5') }}" /> <x-admin.select-option :selected="request('par-page') == '10'" value="10" text="{{ __('10') }}" /> <x-admin.select-option :selected="request('par-page') == '25'" value="25" text="{{ __('25') }}" /> <x-admin.select-option :selected="request('par-page') == '50'" value="50" text="{{ __('50') }}" /> <x-admin.select-option :selected="request('par-page') == '100'" value="100" text="{{ __('100') }}" /> <x-admin.select-option :selected="request('par-page') == 'all'" value="all" text="{{ __('All') }}" /> </x-admin.form-select> </div> </div> </form> </div> </div> </div> <div class="col-12"> <div class="card"> <div class="card-body"> <div class="table-responsive table-invoice"> <table class="table table-striped"> <thead> <tr> <th>{{ __('SN') }}</th> <th>{{ __('Email') }}</th> <th>{{ __('Subscribed at') }}</th> <th>{{ __('Action') }}</th> </tr> </thead> <tbody> @forelse ($newsletters as $index => $item) <tr> <td>{{ ++$index }}</td> <td>{{ html_decode($item->email) }}</td> <td>{{ formattedDateTime($item->created_at) }}</td> <td> <x-admin.delete-button :id="$item->id" onclick="deleteData" /> </td> </tr> @empty <x-empty-table :name="__('')" route="" create="no" :message="__('No data found!')" colspan="4" /> @endforelse </tbody> </table> </div> @if (request()->get('par-page') !== 'all') <div class="float-right"> {{ $newsletters->onEachSide(3)->onEachSide(3)->links() }} </div> @endif </div> </div> </div> </div> </div> </section> </div> <x-admin.delete-modal /> @push('js') <script> function deleteData(id) { $("#deleteForm").attr("action", '{{ url('/admin/subscriber-delete/') }}' + "/" + id) } </script> @endpush @endsection
| ver. 1.4 |
Github
|
.
| PHP 8.3.20 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка