Conflicts:
	addons/default/visiosoft/advs-module/src/Http/Controller/AdvsController.php
This commit is contained in:
diashalabi 2021-10-06 11:01:26 +03:00
commit 8d57a11c64
19 changed files with 201 additions and 69 deletions

View File

@ -32,4 +32,6 @@ return [
'sold_status_change' => "Your Ad's Status Has Been Set to Sold!",
'status_change' => "Your Ad's Status Has Been Set to :status!",
'disabled_detailed_options_for_admin_role' => "Detailed product options are disabled.",
'permission_error' => 'You do not have permission for this action',
'currency_converter_not_available' => 'The currency converter is not available.',
];

View File

@ -32,4 +32,6 @@ return [
'sold_status_change' => "İlanın Durumu Satıldı Olarak Ayarlanmıştır!",
'status_change' => "İlanın durumu Ayarland :status !",
'disabled_detailed_options_for_admin_role' => "Ayrıntılı ürün seçenekleri devre dışı bırakıldı.",
'permission_error' => 'Bu işlem için yetkiniz bulunmamaktadır',
'currency_converter_not_available' => 'Para birimi çevirici kullanılamıyor.',
];

View File

@ -287,7 +287,7 @@
<h5 class="mt-5 pb-1 border-bottom">
{{ trans('visiosoft.module.advs::field.ad_location') }}
</h5>
<div class="bg-light p-4 mb-4">
<div class="bg-light px-4 pb-4 pt-0 mb-4">
{% include "visiosoft.module.location::new-ad/map" %}
<input value="{{ adv.map_Val }}" name="map_Val" data-max="255" data-mask=""

View File

@ -0,0 +1,78 @@
<?php namespace Visiosoft\AdvsModule\Adv;
use Carbon\Carbon;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Support\Facades\Auth;
use Visiosoft\ConnectModule\Command\CheckRequiredParams;
class AdvApiCollection extends AdvRepository
{
use DispatchesJobs;
public function getMyAds()
{
return $this->model->userAdv()
->where('advs_advs.finish_at', '>', date('Y-m-d H:i:s'));
}
public function createNewAd(array $params)
{
return $this->newQuery()->create($params);
}
public function deleteAd(array $params)
{
$this->dispatch(new CheckRequiredParams(['ad_id'], $params));
$ad = $this->checkAd($params['ad_id']);
$this->checkOwner($ad);
return $ad->delete();
}
public function updateAd(array $params)
{
$this->dispatch(new CheckRequiredParams(['ad_id'], $params));
$ad = $this->checkAd($params['ad_id']);
$this->checkOwner($ad);
unset($params['ad_id'],$params['id'], $params['created_at'], $params['updated_at'],
$params['deleted_at'], $params['created_by_id'], $params['updated_by_id']);
$update_params = [
'updated_by_id' => Auth::id(),
'updated_at' => Carbon::now()
];
$ad->update(array_merge($update_params,$params));
return $ad;
}
public function getAds()
{
return $this->currentAds();
}
public function checkAd($id)
{
if (!$ad = $this->newQuery()->find($id)) {
throw new \Exception(trans('visiosoft.module.advs::message.ad_doesnt_exist'), 404);
die;
}
return $ad;
}
public function checkOwner($ad)
{
if ($ad->created_by_id != Auth::id()) {
throw new \Exception(trans('visiosoft.module.advs::message.permission_error'), 403);
die;
}
}
}

View File

@ -436,13 +436,6 @@ class AdvModel extends AdvsAdvsEntryModel implements AdvInterface
return null;
}
public function authControl()
{
if (!Auth::user()) {
redirect('/login?redirect=' . url()->current())->send();
}
}
public function currentAds() {
return $this->whereDate('finish_at', '>=', date("Y-m-d H:i:s"))
->where('status', '=', 'approved')

View File

@ -311,7 +311,15 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface
if (!$thumbnail AND $ext[1] != 'svg') {
// Create thumbnail image
$image = Image::make(file_get_contents($adv->files[0]->make()->url()));
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
$image = Image::make(file_get_contents($adv->files[0]->make()->url(), false, stream_context_create($arrContextOptions)));
$image->resize(
null,
setting_value('visiosoft.module.advs::thumbnail_height'),

View File

@ -70,8 +70,6 @@ interface AdvInterface extends EntryInterface
public function getRecommended($id);
public function authControl();
public function inStock();
public function getCity();

View File

@ -2,6 +2,8 @@
use Anomaly\Streams\Platform\Ui\Form\FormBuilder;
use Visiosoft\AdvsModule\Adv\Contract\AdvRepositoryInterface;
use Visiosoft\LocationModule\Country\Contract\CountryRepositoryInterface;
use Visiosoft\LocationModule\Country\CountryModel;
class SimpleAdvFormHandler
{
@ -11,12 +13,14 @@ class SimpleAdvFormHandler
return;
}
if (!$builder->getFormValue('created_by_id')) {
$builder->setFormValue('created_by_id', auth()->id());
}
$builder->saveForm();
if (!$builder->getFormValue('country_id')) {
$entry = $builder->getFormEntry();
$entry->setAttribute('country_id', setting_value('visiosoft.module.location::default_country'));
$entry->save();
}
$ad = $advRepository->find($builder->getFormEntryId());
if (!$builder->getFormValue('status') && $ad->status !== 'approved') {
$ad->approve();

View File

@ -114,10 +114,12 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
],
'advs/create_adv' => [
'as' => "advs::create_adv",
'middleware' => 'auth',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\AdvsController@cats',
],
'advs/create_adv/post_cat' => [
'as' => 'post_adv',
'middleware' => 'auth',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\AdvsController@create',
],
'advs/save_adv' => [
@ -135,6 +137,7 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
],
'advs/delete/{id}' => [
'as' => 'advs::delete',
'middleware' => 'auth',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\AdvsController@deleteAd',
],
'adv/addCart/{id}' => [
@ -205,6 +208,7 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
//Configurations Admin Controller
'admin/advs/option_configuration/create' => [
'middleware' => 'auth',
'as' => 'visiosoft.module.advs::configrations.create',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\OptionConfigurationController@create',
],
@ -215,6 +219,7 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
//Configuration Controller
'advs/option_configuration/create' => [
'middleware' => 'auth',
'as' => 'visiosoft.module.advs::user.configrations.create',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\OptionConfigurationController@create',
],

View File

@ -711,9 +711,6 @@ class AdvsController extends PublicController
public function deleteAd(AdvRepositoryInterface $advs, $id)
{
$ad = $this->adv_model->find($id);
if (!Auth::user()) {
redirect('/login?redirect=' . url()->current())->send();
}
if ($ad->created_by_id != Auth::id()) {
$this->messages->error(trans('visiosoft.module.advs::message.delete_author_error'));
@ -745,10 +742,6 @@ class AdvsController extends PublicController
public function create(AdvFormBuilder $formBuilder, CategoryRepositoryInterface $repository)
{
if (!Auth::user()) {
redirect('/login?redirect=' . url()->current())->send();
}
$isActive = new AdvModel();
$cats = $this->request->toArray();
unset($cats['_token']);
@ -928,7 +921,11 @@ class AdvsController extends PublicController
if ($is_new_create) {
event(new CreatedAd($adv));
} else {
$this->adv_model->foreignCurrency($this->request->currency, $this->request->price, $this->request->update_id, $this->settings_repository, false);
try {
$this->adv_model->foreignCurrency($this->request->currency, $this->request->price, $this->request->update_id, $this->settings_repository, false);
} catch (\Exception $exception) {
$this->messages->error(trans('visiosoft.module.advs::message.currency_converter_not_available'));
}
event(new EditedAd($before_editing, $adv));
}
@ -1068,9 +1065,6 @@ class AdvsController extends PublicController
public function cats()
{
if (!Auth::user()) {
redirect('/login?redirect=' . url()->current())->send();
}
$main_cats = $this->category_repository->getMainCategories();
return $this->view->make('visiosoft.module.advs::new-ad/post-cat', compact('main_cats'));

View File

@ -1,7 +1,6 @@
.swal2-container {
display: grid;
position: fixed;
z-index: 1060;
top: 0;
right: 0;
bottom: 0;
@ -53,4 +52,8 @@ body.swal2-toast-shown .swal2-container.swal2-top-end, body.swal2-toast-shown .s
grid-column: 3;
align-self: start;
justify-self: end;
}
.swal2-title {
max-width: 14rem;
}

View File

@ -19,7 +19,7 @@
{{ asset_add("theme.css", "visiosoft.theme.base::css/select2.css") }}
{{ asset_add("theme.css", "visiosoft.theme.base::css/font-awesome.min.css") }}
{{ asset_add("theme.css", "visiosoft.theme.base::css/intlTelInput.css") }}
{{ asset_style("visiosoft.theme.base::css/offline.scss") }}
{{ asset_add("theme.css", "visiosoft.theme.base::css/offline.scss") }}
<script src="{{ asset_path('visiosoft.theme.base::js/vendor/jquery.min.js') }}"></script>
{{ asset_script('visiosoft.theme.base::js/visiosoft.js') }}

View File

@ -1,6 +1,5 @@
<!-- Meta Tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width"/>
<meta name="generator" content="{{ config_get('streams::distribution.name') }}"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, viewport-fit=cover">
<meta name="description"

View File

@ -13,11 +13,9 @@ class CategoryModel extends CatsCategoryEntryModel implements CategoryInterface
public function getIconUrlAttribute()
{
if ($this->icon === null) {
return $this->dispatch(new MakeImageInstance('visiosoft.module.advs::images/listing/sample-cat-icon.svg', 'img'))->url();
}
return url($this->icon);
return $this->dispatch(
new MakeImageInstance($this->icon ?? 'visiosoft.module.advs::images/listing/sample-cat-icon.svg', 'img')
)->url();
}
public function getCat($id)

View File

@ -2628,8 +2628,8 @@ body {
display: none;
}
#login .login-container .logo svg, #login .login-container .logo img {
width: 45px;
max-height: 82px;
/*width: 45px;*/
/*max-height: 82px;*/
fill: #ffffff;
margin-top: -30px;
vertical-align: middle;
@ -2668,8 +2668,8 @@ body {
font-family: "Montserrat", sans-serif;
}
#login .logo svg, #login .logo img {
width: 45px;
max-height: 82px;
width: 8rem;
height: 8rem;
margin-top: -30px;
vertical-align: middle;
object-fit: contain;
@ -2724,8 +2724,8 @@ body {
margin-bottom: 2rem;
}
#login .login-container .logo svg, #login .login-container .logo img {
width: 55px;
max-height: 100px;
width: 8rem;
height: auto;
}
}
@media (max-width: 767px) {

View File

@ -0,0 +1,20 @@
.location-map .nav-tabs .active {
text-decoration: underline;
color: lightskyblue !important;
}
.location-map .nav-tabs {
top: -30px;
right: 0;
font-size: 12px;
}
.location-map .tab-content label {
font-size: 13px;
font-weight: bold;
}
.location-map .tab-content select {
border-color: #e8e8e8;
border-radius: 3px;
}

View File

@ -1,48 +1,48 @@
{% if setting_value('visiosoft.module.location::create_ad_page_location') %}
<div class="form-group location-map">
<div class="form-group location-map position-relative">
<div>
<ul class="nav nav-tabs p-1 bg-dark border-bottom py-2" role="tablist">
<ul class="nav nav-tabs d-flex justify-content-end border-0 bg-light position-absolute" role="tablist">
<li role="presentation" class="p-0 m-0">
<a href="#location" class="text-dark py-1 px-4 border bg-white locationSection"
<a href="#location" class="text-dark pr-2"
aria-controls="location"
role="tab" data-toggle="tab">{{ trans('visiosoft.module.location::addon.title') }}</a>
</li>
<li role="presentation" class="p-0 m-0 ml-1">
<a href="#my_address" class="text-dark py-1 px-4 border bg-white" aria-controls="my_address"
<a href="#my_address" class="text-dark pl-2" aria-controls="my_address"
role="tab" data-toggle="tab">{{ trans('visiosoft.module.profile::field.my_address') }}</a>
</li>
</ul>
<div class="tab-content bg-light">
<div role="tabpanel" class="tab-pane m-0 pt-2 active" id="location">
<div class="row">
<div class="col-sm-4">
<ul style="padding: 0" class="list-unstyled">
<li class="country-data" data-content="{{ adv['country_id'] }}"
<div class="col-12">
<ul style="padding: 0" class="list-unstyled d-flex flex-column flex-sm-row">
<li class="country-data flex-fill mx-1" data-content="{{ adv['country_id'] }}"
data-default="{{ setting_value('visiosoft.module.location::default_country') }}"
class="location-field country-data">
{{ form.fields.country.setOptions({})|raw }}
</li>
<li class="city-data" data-content="{{ adv['city'] }}"
<li class="city-data flex-fill mx-1" data-content="{{ adv['city'] }}"
data-default="{{ setting_value('visiosoft.module.location::default_city') }}"
class="location-field city-data">
{{ form.fields.city|raw }}
</li>
<li class="district-data" data-content="{{ adv['district'] }}"
<li class="district-data flex-fill mx-1" data-content="{{ adv['district'] }}"
class="location-field district-data">
{{ form.fields.district|raw }}
</li>
<li class="neighborhood-data" data-content="{{ adv['neighborhood'] }}"
<li class="neighborhood-data flex-fill mx-1" data-content="{{ adv['neighborhood'] }}"
class="location-field neighborhood-data">
{{ form.fields.neighborhood|raw }}
</li>
{% if not setting_value('visiosoft.module.advs::hide_village_field') %}
<li class="village-data" data-content="{{ adv['village'] }}" class="location-field">
<li class="village-data flex-fill" data-content="{{ adv['village'] }}">
{{ form.fields.village|raw }}
</li>
{% endif %}
</ul>
</div>
<div class="col-sm-8">
<div class="col-12">
<div id="map-canvas" style="
position: relative; overflow: hidden;
transform: translateZ(0px) translateZ(0px) translateZ(0px) translateZ(0px) translateZ(0px) translateZ(0px);
@ -90,14 +90,17 @@
var selectedAddressText = "{{ trans('visiosoft.module.location::field.selected') }}";
var chooseAddressText = '{{ trans("visiosoft.module.profile::field.choose.name") }}';
var chooseOptionTrans = '{{ trans("visiosoft.module.location::field.choose_an_option") }}';
var default_country = "{{ setting_value('visiosoft.module.location::default_country') }}";
var default_city = "{{ setting_value('visiosoft.module.location::default_city') }}";
var default_district = "{{ setting_value('visiosoft.module.location::default_district') }}";
var default_neighborhood = "{{ setting_value('visiosoft.module.location::default_neighborhood') }}";
var default_village = "{{ setting_value('visiosoft.module.location::default_village') }}";
</script>
<script src="https://maps.googleapis.com/maps/api/js?key={{ setting_value('visiosoft.module.location::google_map_key') }}&callback="
type="text/javascript"></script>
{{ asset_add("scripts.js", "visiosoft.module.advs::js/location.js") }}
{{ asset_add("scripts.js", "visiosoft.module.location::js/addressSelect.js") }}
{{ asset_add("styles.css", "visiosoft.module.location::css/map.css") }}
{% endif %}
<style>
.location-map .nav-tabs .active {
background-color: #e5e5e5;
}
</style>

View File

@ -34,9 +34,6 @@ class MyProfileController extends PublicController
)
{
parent::__construct();
if (!Auth::user()) {
redirect('/login?redirect=' . url()->current())->send();
}
$this->adressRepository = $adressRepository;
$this->userRepository = $userRepository;

View File

@ -46,44 +46,72 @@ class ProfileModuleServiceProvider extends AddonServiceProvider
// MyProfileController
'profile/ads' => [
'as' => 'profile::ads',
'middleware' => 'auth',
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@myAds'
],
'profile/adress/ajaxCreate' => [
'as' => 'visiosoft.module.profile::adress_ajax_create',
'middleware' => 'auth',
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@adressAjaxCreate'
],
'profile/adress/ajaxUpdate/{id}' => [
'as' => 'visiosoft.module.profile::adress_ajax_update',
'middleware' => 'auth',
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@adressAjaxUpdate'
],
'profile/adress/ajaxDetail' => [
'as' => 'visiosoft.module.profile::adress_ajax_detail',
'middleware' => 'auth',
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@adressAjaxDetail'
],
'profile' => [
'as' => 'profile::profile',
'middleware' => 'auth',
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@home'
],
'profile/detail' => [
'as' => 'profile::detail',
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@detail'
'middleware' => 'auth',
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@detail'
],
'profile/password' => [
'as' => 'profile::password',
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@password'
'middleware' => 'auth',
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@password'
],
'profile/class/status/{id},{type}' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@statusAds',
'profile/class/extendTime/{id},{type}' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@extendAds',
'profile/message/show/{id}' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@showMessage',
'profile/class/status/{id},{type}' => [
'middleware' => 'auth',
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@statusAds',
],
'profile/class/extendTime/{id},{type}' => [
'middleware' => 'auth',
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@extendAds',
],
'profile/message/show/{id}' => [
'middleware' => 'auth',
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@showMessage',
],
'profile/close-account' => [
'middleware' => 'auth',
'as' => 'visiosoft.module.profile::profile_close_account',
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@disableAccount'
],
'profile/notification' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@notification',
'ajax/update-user-info' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@updateAjaxProfile',
'api/changeEducation' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@changeEducation',
'api/getEducation' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@getEducation',
'profile/notification' => [
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@notification',
'middleware' => 'auth',
],
'ajax/update-user-info' => [
'middleware' => 'auth',
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@updateAjaxProfile',
],
'api/changeEducation' => [
'middleware' => 'auth',
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@changeEducation',
],
'api/getEducation' => [
'middleware' => 'auth',
'uses' => 'Visiosoft\ProfileModule\Http\Controller\MyProfileController@getEducation',
],
// UserAuthenticator
'login-in' => 'Visiosoft\ProfileModule\Http\Controller\UserAuthenticator@attempt',