diff --git a/README.md b/README.md index c97ea408a..f8a2e9b9a 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/addons/default/visiosoft/advs-module/resources/views/form/partials/translations.twig b/addons/default/visiosoft/advs-module/resources/views/form/partials/translations.twig index 3045f8e79..39c9ce6e2 100644 --- a/addons/default/visiosoft/advs-module/resources/views/form/partials/translations.twig +++ b/addons/default/visiosoft/advs-module/resources/views/form/partials/translations.twig @@ -16,8 +16,4 @@ {% endfor %} -
- - ***{{ trans('visiosoft.module.advs::field.select_lang_ads') }} - {% endif %} diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php b/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php index fd1724579..874e2073a 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php +++ b/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php @@ -555,4 +555,11 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface ->where('slug', '!=', '') ->orderBy('publish_at', 'desc'); } + + public function findByCFJSON($key, $value) + { + return $this->currentAds() + ->whereJsonContains('cf_json', [$key => $value]) + ->first(); + } } diff --git a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php index 33f4a8d1c..e46160f54 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php +++ b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php @@ -56,4 +56,6 @@ interface AdvRepositoryInterface extends EntryRepositoryInterface public function getUserAds($userID = null, $status = "approved"); public function currentAds(); + + public function findByCFJSON($key, $value); } diff --git a/addons/default/visiosoft/cats-module/src/CatsModuleServiceProvider.php b/addons/default/visiosoft/cats-module/src/CatsModuleServiceProvider.php index fc1813a8d..6fed3c5e7 100644 --- a/addons/default/visiosoft/cats-module/src/CatsModuleServiceProvider.php +++ b/addons/default/visiosoft/cats-module/src/CatsModuleServiceProvider.php @@ -10,51 +10,17 @@ use Visiosoft\CatsModule\Category\Contract\CategoryRepositoryInterface; use Visiosoft\CatsModule\Category\CategoryRepository; use Anomaly\Streams\Platform\Model\Cats\CatsCategoryEntryModel; use Visiosoft\CatsModule\Category\CategoryModel; -use Illuminate\Routing\Router; use Visiosoft\CatsModule\Category\Listener\CalculatedTotalForChangedAdStatus; use Visiosoft\CatsModule\Category\Listener\CalculatedTotalForDeletedAd; use Visiosoft\CatsModule\Category\Listener\CalculatedTotalForEditedAdCategory; use Visiosoft\CatsModule\Category\Listener\CalculatedTotalForNewAd; -use Visiosoft\CatsModule\Category\Table\Handler\Delete; class CatsModuleServiceProvider extends AddonServiceProvider { - - /** - * Additional addon plugins. - * - * @type array|null - */ protected $plugins = [ 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 = [ 'admin/cats/clean_subcats' => 'Visiosoft\CatsModule\Http\Controller\Admin\CategoryController@cleanSubCategories', 'admin/cats/adcountcalc' => 'Visiosoft\CatsModule\Http\Controller\Admin\CategoryController@adCountCalc', @@ -78,44 +44,16 @@ class CatsModuleServiceProvider extends AddonServiceProvider 'as' => 'visiosoft.module.cats::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.xml' => 'Visiosoft\CatsModule\Http\Controller\SitemapController@index', '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 = [ CreatedAd::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 = [ CatsCategoryEntryModel::class => CategoryModel::class, ]; - /** - * The addon singleton bindings. - * - * @type array|null - */ protected $singletons = [ 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) { $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() { $request = app('Illuminate\Http\Request'); diff --git a/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/CategoryController.php b/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/CategoryController.php index 58bfb1049..b5941ed38 100644 --- a/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/CategoryController.php +++ b/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/CategoryController.php @@ -1,13 +1,12 @@ 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); - $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 (Storage::exists($file_location)) { - Storage::delete($file_location); + if ($file = $fileRepository->findByNameAndFolder($filename, $folder)) { + $file->forceDelete(); } 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) { - $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 ($file->extension === 'xls' || $file->extension === 'xlsx') { @@ -309,7 +311,27 @@ class CategoryController extends AdminController return $builder->render(); } - public function export(){ + public function export() + { 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(), + ]; + } + } } diff --git a/config/app.php b/config/app.php index c8c483477..8509eb114 100644 --- a/config/app.php +++ b/config/app.php @@ -17,6 +17,8 @@ return [ 'name' => env('APP_NAME', 'My Application'), + 'application_domain' => env('APPLICATION_DOMAIN', null), + /* |-------------------------------------------------------------------------- | Application Environment diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 648cdf487..4c819554b 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -77,6 +77,19 @@ class DatabaseSeeder extends Seeder $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 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 if (is_module_installed('visiosoft.module.demodata')) { $this->call(\Visiosoft\DemodataModule\Demodata\DemodataSeeder::class); } Artisan::call('assets:clear'); - Artisan::call('files:sync'); } }