mirror of https://github.com/4xmen/xshop.git
Compare commits
No commits in common. 'ddb5b346f2c0c4f74a4883ee950386f190944f1f' and 'bdf3ef01a2a94ca79548f9d0f9e1e508ca560aa4' have entirely different histories.
ddb5b346f2
...
bdf3ef01a2
@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Requests;
|
|
||||||
|
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
|
||||||
|
|
||||||
class ContactSubmitRequest extends FormRequest
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Determine if the user is authorized to make this request.
|
|
||||||
*/
|
|
||||||
public function authorize(): bool
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the validation rules that apply to the request.
|
|
||||||
*
|
|
||||||
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
|
||||||
*/
|
|
||||||
public function rules(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
'full_name' => ['required', 'string', 'max:255', 'min:3'],
|
|
||||||
'phone' => ['required', 'string', 'max:15', 'min:8'],
|
|
||||||
'subject' => ['nullable', 'string', 'max:255', 'min:4'],
|
|
||||||
'email' => ['required', 'email', 'max:255', 'min:4'],
|
|
||||||
'bodya' => ['required', 'string', 'max:4048', 'min:15'],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,129 +0,0 @@
|
|||||||
<section class='MeloContact'>
|
|
||||||
<div class="{{gfx()['container']}}">
|
|
||||||
|
|
||||||
<h1 class="text-center fw-light mb-3">
|
|
||||||
{{getSetting($data->area->name.'_'.$data->part.'_title')}}
|
|
||||||
</h1>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-5">
|
|
||||||
<div class="pin-box p-3">
|
|
||||||
<i class="ri-mail-add-line icon"></i>
|
|
||||||
@if(getGroupBySetting($data->area->name.'_'.$data->part)?->posts()->where('status',1)->where('is_pinned',1)->count() == 0)
|
|
||||||
<h3 class="p-4 text-center">
|
|
||||||
{{__("You must add a pinned post to :GROUP",['GROUP' => getGroupBySetting($data->area->name.'_'.$data->part)?->name])}}
|
|
||||||
</h3>
|
|
||||||
@else
|
|
||||||
<h3>
|
|
||||||
{{getGroupBySetting($data->area->name.'_'.$data->part)?->posts()->where('status',1)->where('is_pinned',1)->first()->title}}
|
|
||||||
</h3>
|
|
||||||
{!! getGroupBySetting($data->area->name.'_'.$data->part)?->posts()->where('status',1)->where('is_pinned',1)->first()->body!!}
|
|
||||||
|
|
||||||
<ul class="social text-center">
|
|
||||||
@foreach(getSettingsGroup('social_')??[] as $k => $social)
|
|
||||||
<li class="d-inline-block mx-2">
|
|
||||||
<a href="{{$social}}">
|
|
||||||
<i class="ri-{{$k}}-line"></i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
@endforeach
|
|
||||||
</ul>
|
|
||||||
@endif
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-7">
|
|
||||||
|
|
||||||
@include('components.err')
|
|
||||||
<form class="safe-form" method="post">
|
|
||||||
<input type="hidden" class="safe-url" data-url="{{route('client.send-contact')}}">
|
|
||||||
@csrf
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-6">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="full_name">
|
|
||||||
{{__('Name and lastname')}}
|
|
||||||
</label>
|
|
||||||
<input name="full_name" type="text"
|
|
||||||
class="form-control @error('full_name') is-invalid @enderror"
|
|
||||||
placeholder="{{__('Name and lastname')}}"
|
|
||||||
value="{{old('full_name',auth('customer')->user()->name??null)}}"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="Phone">
|
|
||||||
{{__('Phone')}}
|
|
||||||
</label>
|
|
||||||
<input name="phone" type="tel"
|
|
||||||
class="form-control @error('Phone') is-invalid @enderror"
|
|
||||||
placeholder="{{__('Phone')}}" value="{{old('Phone',auth('customer')->user()->mobile??null)}}"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6 mt-3">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="email">
|
|
||||||
{{__('Email')}}
|
|
||||||
</label>
|
|
||||||
<input name="email" type="email"
|
|
||||||
class="form-control @error('email') is-invalid @enderror"
|
|
||||||
placeholder="{{__('Email')}}" value="{{old('email',auth('customer')->user()->email??null)}}"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6 mt-3">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="subject">
|
|
||||||
{{__('Subject')}}
|
|
||||||
</label>
|
|
||||||
<input name="subject" type="text"
|
|
||||||
class="form-control @error('subject') is-invalid @enderror"
|
|
||||||
placeholder="{{__('Subject')}}"
|
|
||||||
value="{{old('subject')}}"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-12 mt-3">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="body">
|
|
||||||
{{__('Your message...')}}
|
|
||||||
</label>
|
|
||||||
<textarea name="bodya" style=" height: 150px;"
|
|
||||||
class="form-control @error('bodya') is-invalid @enderror"
|
|
||||||
placeholder="{{__('Question/Message')}}">{{old('body')}}</textarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-112">
|
|
||||||
<label> </label>
|
|
||||||
<button class="btn btn-primary mt-2 w-100">
|
|
||||||
<i class="ri-send-plane-line"></i>
|
|
||||||
{{__('Send')}}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="py-5">
|
|
||||||
|
|
||||||
@php($dir = langIsRTL(app()->getLocale() )?'rtl':'ltr' )
|
|
||||||
|
|
||||||
@foreach( getGroupBySetting($data->area->name.'_'.$data->part)?->posts()->where('status',1)
|
|
||||||
->where('is_pinned',0)->orderByDesc('id')->get() as $i => $post)
|
|
||||||
<div class="row mb-2" @if( ($i % 2) == 0) dir="rtl" @else dir="ltr" @endif>
|
|
||||||
<div class="col-md-2">
|
|
||||||
<img src="{{$post->imgUrl()}}" alt="{{$post->title}}" class="img-fluid">
|
|
||||||
</div>
|
|
||||||
<div class="col-md" dir="{{$dir}}">
|
|
||||||
<h3>
|
|
||||||
<a href="{{$post->webUrl()}}">
|
|
||||||
{{$post->title}}
|
|
||||||
</a>
|
|
||||||
</h3>
|
|
||||||
<p>
|
|
||||||
{{$post->subtitle}}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endforeach
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "MeloContact",
|
|
||||||
"version": "1.0",
|
|
||||||
"author": "xStack",
|
|
||||||
"email": "xshop@xstack.ir",
|
|
||||||
"license": "GPL-3.0-or-later",
|
|
||||||
"url": "https:\/\/xstack.ir",
|
|
||||||
"author_url": "https:\/\/4xmen.ir",
|
|
||||||
"packages": []
|
|
||||||
}
|
|
@ -1,42 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace Resources\Views\Segments;
|
|
||||||
|
|
||||||
use App\Models\Group;
|
|
||||||
use App\Models\Part;
|
|
||||||
use App\Models\Setting;
|
|
||||||
|
|
||||||
class MeloContact
|
|
||||||
{
|
|
||||||
public static function onAdd(Part $part = null)
|
|
||||||
{
|
|
||||||
$setting = new Setting();
|
|
||||||
$setting->section = 'theme';
|
|
||||||
$setting->key = $part->area->name . '_' . $part->part;
|
|
||||||
$setting->value = Group::first()->id;
|
|
||||||
$setting->type = 'GROUP';
|
|
||||||
$setting->size = 6;
|
|
||||||
$setting->title = $part->area->name . ' ' . $part->part;
|
|
||||||
$setting->save();
|
|
||||||
|
|
||||||
$setting = new Setting();
|
|
||||||
$setting->section = 'theme';
|
|
||||||
$setting->key = $part->area->name . '_' . $part->part.'_title';
|
|
||||||
$setting->value = __("Contact us");
|
|
||||||
$setting->type = 'TEXT';
|
|
||||||
$setting->size = 6;
|
|
||||||
$setting->title = $part->area->name . ' ' . $part->part . ' title';
|
|
||||||
$setting->save();
|
|
||||||
}
|
|
||||||
public static function onRemove(Part $part = null)
|
|
||||||
{
|
|
||||||
Setting::where('key',$part->area->name . '_' . $part->part)->first()?->delete();
|
|
||||||
Setting::where('key',$part->area->name . '_' . $part->part.'_title')->first()?->delete();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
public static function onMount(Part $part = null)
|
|
||||||
{
|
|
||||||
return $part;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
.MeloContact {
|
|
||||||
padding: 2rem 0;
|
|
||||||
h1{
|
|
||||||
border-bottom: 1px solid var(--xshop-primary);
|
|
||||||
}
|
|
||||||
.pin-box{
|
|
||||||
background: var(--xshop-secondary);
|
|
||||||
border-radius: var(--xshop-border-radius);
|
|
||||||
min-height: 400px;
|
|
||||||
position: relative;
|
|
||||||
color: var(--xshop-diff2);
|
|
||||||
|
|
||||||
i.icon{
|
|
||||||
position: absolute;
|
|
||||||
inset-inline-end: -1%;
|
|
||||||
top: -10%;
|
|
||||||
font-size:128px;
|
|
||||||
opacity: .3;
|
|
||||||
transform: rotateZ(-17deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.social{
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
|
|
||||||
a,a:visited{
|
|
||||||
color: var(--xshop-diff2);
|
|
||||||
|
|
||||||
|
|
||||||
i{
|
|
||||||
font-size: 30px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Binary file not shown.
Before Width: | Height: | Size: 269 KiB |
Loading…
Reference in New Issue