Merge branch 'master' of https://github.com/openclassify/openclassify into muammertop

This commit is contained in:
Muammer Top 2021-09-13 09:55:20 +03:00
commit b55a682403
8 changed files with 67 additions and 173 deletions

View File

@ -1,4 +1,4 @@
# OpenClassify - Laravel 8 Classified Script Platform # OpenClassify - Laravel 8 Classified Script Platform - Weekly Updates
OpenClassify is modular and most advanced open source classified platform build with Laravel 8 & PHP 7.3+ Supported. Included Pyrocms 3.9 OpenClassify is modular and most advanced open source classified platform build with Laravel 8 & PHP 7.3+ Supported. Included Pyrocms 3.9

View File

@ -16,8 +16,4 @@
{% endfor %} {% endfor %}
</div> </div>
</div> </div>
<br>
<span class="font-weight-light small text-black-50 {{ not setting_value('visiosoft.module.advs::show_input_flag') ? 'd-none' }}">
***{{ trans('visiosoft.module.advs::field.select_lang_ads') }}
</span>
{% endif %} {% endif %}

View File

@ -555,4 +555,11 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface
->where('slug', '!=', '') ->where('slug', '!=', '')
->orderBy('publish_at', 'desc'); ->orderBy('publish_at', 'desc');
} }
public function findByCFJSON($key, $value)
{
return $this->currentAds()
->whereJsonContains('cf_json', [$key => $value])
->first();
}
} }

View File

@ -56,4 +56,6 @@ interface AdvRepositoryInterface extends EntryRepositoryInterface
public function getUserAds($userID = null, $status = "approved"); public function getUserAds($userID = null, $status = "approved");
public function currentAds(); public function currentAds();
public function findByCFJSON($key, $value);
} }

View File

@ -10,51 +10,17 @@ use Visiosoft\CatsModule\Category\Contract\CategoryRepositoryInterface;
use Visiosoft\CatsModule\Category\CategoryRepository; use Visiosoft\CatsModule\Category\CategoryRepository;
use Anomaly\Streams\Platform\Model\Cats\CatsCategoryEntryModel; use Anomaly\Streams\Platform\Model\Cats\CatsCategoryEntryModel;
use Visiosoft\CatsModule\Category\CategoryModel; use Visiosoft\CatsModule\Category\CategoryModel;
use Illuminate\Routing\Router;
use Visiosoft\CatsModule\Category\Listener\CalculatedTotalForChangedAdStatus; use Visiosoft\CatsModule\Category\Listener\CalculatedTotalForChangedAdStatus;
use Visiosoft\CatsModule\Category\Listener\CalculatedTotalForDeletedAd; use Visiosoft\CatsModule\Category\Listener\CalculatedTotalForDeletedAd;
use Visiosoft\CatsModule\Category\Listener\CalculatedTotalForEditedAdCategory; use Visiosoft\CatsModule\Category\Listener\CalculatedTotalForEditedAdCategory;
use Visiosoft\CatsModule\Category\Listener\CalculatedTotalForNewAd; use Visiosoft\CatsModule\Category\Listener\CalculatedTotalForNewAd;
use Visiosoft\CatsModule\Category\Table\Handler\Delete;
class CatsModuleServiceProvider extends AddonServiceProvider class CatsModuleServiceProvider extends AddonServiceProvider
{ {
/**
* Additional addon plugins.
*
* @type array|null
*/
protected $plugins = [ protected $plugins = [
CatsModulePlugin::class, CatsModulePlugin::class,
]; ];
/**
* The addon Artisan commands.
*
* @type array|null
*/
protected $commands = [];
/**
* The addon's scheduled commands.
*
* @type array|null
*/
protected $schedules = [];
/**
* The addon API routes.
*
* @type array|null
*/
protected $api = [];
/**
* The addon routes.
*
* @type array|null
*/
protected $routes = [ protected $routes = [
'admin/cats/clean_subcats' => 'Visiosoft\CatsModule\Http\Controller\Admin\CategoryController@cleanSubCategories', 'admin/cats/clean_subcats' => 'Visiosoft\CatsModule\Http\Controller\Admin\CategoryController@cleanSubCategories',
'admin/cats/adcountcalc' => 'Visiosoft\CatsModule\Http\Controller\Admin\CategoryController@adCountCalc', 'admin/cats/adcountcalc' => 'Visiosoft\CatsModule\Http\Controller\Admin\CategoryController@adCountCalc',
@ -78,44 +44,16 @@ class CatsModuleServiceProvider extends AddonServiceProvider
'as' => 'visiosoft.module.cats::export', 'as' => 'visiosoft.module.cats::export',
'uses' => 'Visiosoft\CatsModule\Http\Controller\Admin\CategoryController@export', 'uses' => 'Visiosoft\CatsModule\Http\Controller\Admin\CategoryController@export',
], ],
'admin/api/cats/all' => [
'as' => 'visiosoft.module.cats::admin.api.cats.all',
'uses' => 'Visiosoft\CatsModule\Http\Controller\Admin\CategoryController@all',
],
// Sitemap // Sitemap
'sitemap.xml' => 'Visiosoft\CatsModule\Http\Controller\SitemapController@index', 'sitemap.xml' => 'Visiosoft\CatsModule\Http\Controller\SitemapController@index',
'sitemap.xml/categories' => 'Visiosoft\CatsModule\Http\Controller\SitemapController@categories', 'sitemap.xml/categories' => 'Visiosoft\CatsModule\Http\Controller\SitemapController@categories',
]; ];
/**
* The addon middleware.
*
* @type array|null
*/
protected $middleware = [
//Visiosoft\CatsModule\Http\Middleware\ExampleMiddleware::class
];
/**
* Addon group middleware.
*
* @var array
*/
protected $groupMiddleware = [
//'web' => [
// Visiosoft\CatsModule\Http\Middleware\ExampleMiddleware::class,
//],
];
/**
* Addon route middleware.
*
* @type array|null
*/
protected $routeMiddleware = [];
/**
* The addon event listeners.
*
* @type array|null
*/
protected $listeners = [ protected $listeners = [
CreatedAd::class => [ CreatedAd::class => [
CalculatedTotalForNewAd::class, CalculatedTotalForNewAd::class,
@ -131,74 +69,14 @@ class CatsModuleServiceProvider extends AddonServiceProvider
], ],
]; ];
/**
* The addon alias bindings.
*
* @type array|null
*/
protected $aliases = [
//'Example' => Visiosoft\CatsModule\Example::class
];
/**
* The addon class bindings.
*
* @type array|null
*/
protected $bindings = [ protected $bindings = [
CatsCategoryEntryModel::class => CategoryModel::class, CatsCategoryEntryModel::class => CategoryModel::class,
]; ];
/**
* The addon singleton bindings.
*
* @type array|null
*/
protected $singletons = [ protected $singletons = [
CategoryRepositoryInterface::class => CategoryRepository::class, CategoryRepositoryInterface::class => CategoryRepository::class,
]; ];
/**
* Additional service providers.
*
* @type array|null
*/
protected $providers = [
//\ExamplePackage\Provider\ExampleProvider::class
];
/**
* The addon view overrides.
*
* @type array|null
*/
protected $overrides = [
//'streams::errors/404' => 'module::errors/404',
//'streams::errors/500' => 'module::errors/500',
];
/**
* The addon mobile-only view overrides.
*
* @type array|null
*/
protected $mobile = [
//'streams::errors/404' => 'module::mobile/errors/404',
//'streams::errors/500' => 'module::mobile/errors/500',
];
/**
* Register the addon.
*/
public function register()
{
// Run extra pre-boot registration logic here.
// Use method injection or commands to bring in services.
}
/**
* Boot the addon.
*/
public function boot(AddonCollection $addonCollection) public function boot(AddonCollection $addonCollection)
{ {
$settings_url = [ $settings_url = [
@ -219,17 +97,6 @@ class CatsModuleServiceProvider extends AddonServiceProvider
} }
} }
/**
* Map additional addon routes.
*
* @param Router $router
*/
public function map(Router $router)
{
// Register dynamic routes here for example.
// Use method injection or commands to bring in services.
}
public function getOverrides() public function getOverrides()
{ {
$request = app('Illuminate\Http\Request'); $request = app('Illuminate\Http\Request');

View File

@ -1,13 +1,12 @@
<?php namespace Visiosoft\CatsModule\Http\Controller\Admin; <?php namespace Visiosoft\CatsModule\Http\Controller\Admin;
use Anomaly\FilesModule\File\Contract\FileRepositoryInterface; use Anomaly\FilesModule\File\Contract\FileRepositoryInterface;
use Anomaly\FilesModule\File\FileSanitizer;
use Anomaly\FilesModule\File\FileUploader; use Anomaly\FilesModule\File\FileUploader;
use Anomaly\FilesModule\Folder\Contract\FolderRepositoryInterface; use Anomaly\FilesModule\Folder\Contract\FolderRepositoryInterface;
use Anomaly\Streams\Platform\Model\Cats\CatsCategoryEntryTranslationsModel; use Anomaly\Streams\Platform\Model\Cats\CatsCategoryEntryTranslationsModel;
use Anomaly\Streams\Platform\Ui\Form\FormBuilder; use Anomaly\Streams\Platform\Ui\Form\FormBuilder;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage; use Illuminate\Http\UploadedFile;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use League\Flysystem\MountManager; use League\Flysystem\MountManager;
use Visiosoft\CatsModule\Category\CategoryExport; use Visiosoft\CatsModule\Category\CategoryExport;
@ -19,7 +18,6 @@ use Visiosoft\CatsModule\Category\Contract\CategoryRepositoryInterface;
use Visiosoft\CatsModule\Category\Form\CategoryFormBuilder; use Visiosoft\CatsModule\Category\Form\CategoryFormBuilder;
use Visiosoft\CatsModule\Category\Table\CategoryTableBuilder; use Visiosoft\CatsModule\Category\Table\CategoryTableBuilder;
use Anomaly\Streams\Platform\Http\Controller\AdminController; use Anomaly\Streams\Platform\Http\Controller\AdminController;
use Visiosoft\AdvsModule\Adv\Contract\AdvRepositoryInterface;
use Visiosoft\CatsModule\Category\Traits\DeleteCategory; use Visiosoft\CatsModule\Category\Traits\DeleteCategory;
use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Facades\Excel;
@ -250,35 +248,39 @@ class CategoryController extends AdminController
public function createIconFile($category_id) public function createIconFile($category_id)
{ {
$fileRepository = app(FileRepositoryInterface::class);
$folderRepository = app(FolderRepositoryInterface::class); $folderRepository = app(FolderRepositoryInterface::class);
$manager = app(MountManager::class); $uploader = app(FileUploader::class);
if ($file = $this->request->file('icon') and $folder = $folderRepository->findBySlug('category_icon') and $category = $this->categoryRepository->find($category_id)) {
$type = explode('.', $file->getClientOriginalName()); if ($request_file = $this->request->file('icon') and $folder = $folderRepository->findBySlug('category_icon') and $category = $this->categoryRepository->find($category_id)) {
$type = explode('.', $request_file->getClientOriginalName());
$type = end($type); $type = end($type);
$file_location = $folder->getDisk()->getSlug() . '://' . $folder->getSlug() . '/' . FileSanitizer::clean($category_id . "." . $type); $filename = $category_id . "." . $type;
$file_url = '/files/' . $folder->getSlug() . '/' . FileSanitizer::clean($category_id . "." . $type); if ($file = $fileRepository->findByNameAndFolder($filename, $folder)) {
$file->forceDelete();
if (Storage::exists($file_location)) {
Storage::delete($file_location);
} }
try { try {
$manager->put($file_location, file_get_contents($file->getRealPath())); $file = new UploadedFile($request_file->getPathname(),
$filename,
$request_file->getClientMimeType(),
$request_file->getError());
$category->setCategoryIconUrl($file_url); $file = $uploader->upload($file, $folder);
$category->setCategoryIconUrl($file->make()->url());
} catch (\Exception $exception) { } catch (\Exception $exception) {
$this->messages->error([$exception->getMessage()]); $this->messages->error($exception->getMessage());
} }
} }
} }
public function import(FormBuilder $builder, FileRepositoryInterface $fileRepository){ public function import(FormBuilder $builder, FileRepositoryInterface $fileRepository)
{
if (request()->action == "save" and $file = $fileRepository->find(request()->file)) { if (request()->action == "save" and $file = $fileRepository->find(request()->file)) {
if ($file->extension === 'xls' || $file->extension === 'xlsx') { if ($file->extension === 'xls' || $file->extension === 'xlsx') {
@ -309,7 +311,27 @@ class CategoryController extends AdminController
return $builder->render(); return $builder->render();
} }
public function export(){ public function export()
{
return Excel::download(new CategoryExport(), 'cats-' . time() . '.xlsx'); return Excel::download(new CategoryExport(), 'cats-' . time() . '.xlsx');
} }
public function all()
{
try {
if ($this->categoryRepository->count() > 100) {
throw new \Exception('more_than_100');
}
return [
'success' => true,
'data' => $this->categoryRepository->all(),
];
} catch (\Exception $e) {
return [
'success' => false,
'msg' => $e->getMessage(),
];
}
}
} }

View File

@ -17,6 +17,8 @@ return [
'name' => env('APP_NAME', 'My Application'), 'name' => env('APP_NAME', 'My Application'),
'application_domain' => env('APPLICATION_DOMAIN', null),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Application Environment | Application Environment

View File

@ -77,6 +77,19 @@ class DatabaseSeeder extends Seeder
$this->activator->force($visiosoft_administrator); $this->activator->force($visiosoft_administrator);
//Create Category Icon Folder
if (is_null($this->folders->findBy('slug', 'category_icon'))) {
$disk = $this->disks->findBySlug('local');
$this->folders->create([
'en' => [
'name' => 'Category Icon',
'description' => 'A folder for Category Icon.',
],
'slug' => 'category_icon',
'disk' => $disk,
]);
};
//Footer Link //Footer Link
LinkModel::query()->forceDelete(); LinkModel::query()->forceDelete();
@ -224,26 +237,11 @@ class DatabaseSeeder extends Seeder
]); ]);
}; };
//Create Category Icon Folder
if (is_null($this->folders->findBy('slug', 'category_icon'))) {
$disk = $this->disks->findBySlug('local');
$this->folders->create([
'en' => [
'name' => 'Category Icon',
'description' => 'A folder for Category Icon.',
],
'slug' => 'category_icon',
'disk' => $disk,
]);
};
//Demodata Seeder //Demodata Seeder
if (is_module_installed('visiosoft.module.demodata')) { if (is_module_installed('visiosoft.module.demodata')) {
$this->call(\Visiosoft\DemodataModule\Demodata\DemodataSeeder::class); $this->call(\Visiosoft\DemodataModule\Demodata\DemodataSeeder::class);
} }
Artisan::call('assets:clear'); Artisan::call('assets:clear');
Artisan::call('files:sync');
} }
} }