243 lines
6.6 KiB
PHP
Raw Normal View History

2017-09-14 22:21:00 +03:00
<?php
namespace App\Http\Controllers\Modules;
use App\Traits\Modules;
use App\Models\Module\Module;
use App\Abstracts\Http\Controller;
2022-06-01 10:15:55 +03:00
use Illuminate\Support\Str;
use Illuminate\Http\Request;
2017-09-14 22:21:00 +03:00
class Tiles extends Controller
{
use Modules;
/**
* Show the form for viewing the specified resource.
*
* @param $alias
*
* @return Response
*/
public function categoryModules($alias)
2017-09-14 22:21:00 +03:00
{
2018-09-20 11:16:56 +03:00
$page = request('page', 1);
2022-06-01 10:15:55 +03:00
$data = [
2018-09-20 11:16:56 +03:00
'query' => [
'page' => $page,
]
];
2022-06-01 10:15:55 +03:00
$data = $this->getModulesByCategory($alias, $data);
2017-09-14 22:21:00 +03:00
if (empty($data)) {
2021-01-28 16:53:28 +03:00
return redirect()->route('apps.home.index')->send();
}
$title = !empty($data->category) ? $data->category->name : Str::studly($alias);
$modules = !empty($data->modules) ? $data->modules : [];
2019-11-16 10:21:14 +03:00
$installed = Module::all()->pluck('enabled', 'alias')->toArray();
2017-09-14 22:21:00 +03:00
2022-06-01 10:15:55 +03:00
return $this->response('modules.tiles.index', compact('modules', 'title', 'installed'));
2017-09-14 22:21:00 +03:00
}
2018-10-03 12:10:59 +03:00
/**
* Show the form for viewing the specified resource.
*
* @param $alias
*
* @return Response
*/
public function vendorModules($alias)
{
$page = request('page', 1);
2022-06-01 10:15:55 +03:00
$data = [
2018-10-03 12:10:59 +03:00
'query' => [
'page' => $page,
]
];
2022-06-01 10:15:55 +03:00
$data = $this->getModulesByVendor($alias, $data);
2018-10-03 12:10:59 +03:00
$title = !empty($data->vendor) ? $data->vendor->name : Str::studly($alias);
$modules = !empty($data->modules) ? $data->modules : [];
2019-11-16 10:21:14 +03:00
$installed = Module::all()->pluck('enabled', 'alias')->toArray();
2018-10-03 12:10:59 +03:00
2022-06-01 10:15:55 +03:00
return $this->response('modules.tiles.index', compact('modules', 'title', 'installed'));
2018-10-03 12:10:59 +03:00
}
2017-09-14 22:21:00 +03:00
/**
* Show the form for viewing the specified resource.
*
* @return Response
*/
public function paidModules()
2017-09-14 22:21:00 +03:00
{
2018-09-20 11:16:56 +03:00
$page = request('page', 1);
$data = [
'query' => [
'page' => $page,
]
];
2017-09-14 22:21:00 +03:00
$title = trans('modules.top_paid');
2018-09-20 11:16:56 +03:00
$modules = $this->getPaidModules($data);
2019-11-16 10:21:14 +03:00
$installed = Module::all()->pluck('enabled', 'alias')->toArray();
2017-09-14 22:21:00 +03:00
2022-06-01 10:15:55 +03:00
return $this->response('modules.tiles.index', compact('modules', 'title', 'installed'));
2017-09-14 22:21:00 +03:00
}
/**
* Show the form for viewing the specified resource.
*
* @return Response
*/
public function newModules()
2017-09-14 22:21:00 +03:00
{
2018-09-20 11:16:56 +03:00
$page = request('page', 1);
$data = [
'query' => [
'page' => $page,
]
];
2017-09-14 22:21:00 +03:00
$title = trans('modules.new');
2018-09-20 11:16:56 +03:00
$modules = $this->getNewModules($data);
2019-11-16 10:21:14 +03:00
$installed = Module::all()->pluck('enabled', 'alias')->toArray();
2017-09-14 22:21:00 +03:00
2022-06-01 10:15:55 +03:00
return $this->response('modules.tiles.index', compact('modules', 'title', 'installed'));
2017-09-14 22:21:00 +03:00
}
/**
* Show the form for viewing the specified resource.
*
* @return Response
*/
public function freeModules()
2017-09-14 22:21:00 +03:00
{
2018-09-20 11:16:56 +03:00
$page = request('page', 1);
$data = [
'query' => [
'page' => $page,
]
];
2017-09-14 22:21:00 +03:00
$title = trans('modules.top_free');
2018-09-20 11:16:56 +03:00
$modules = $this->getFreeModules($data);
2019-11-16 10:21:14 +03:00
$installed = Module::all()->pluck('enabled', 'alias')->toArray();
2017-09-14 22:21:00 +03:00
2022-06-01 10:15:55 +03:00
return $this->response('modules.tiles.index', compact('modules', 'title','installed'));
2017-09-14 22:21:00 +03:00
}
2018-04-25 19:28:10 +03:00
/**
* Show the form for viewing the specified resource.
*
* @return Response
*/
public function searchModules(Request $request)
{
2022-06-01 10:15:55 +03:00
$keyword = $request->get('keyword');
$page = $request->get('page', 1);
2018-04-25 19:28:10 +03:00
$data = [
'query' => [
'keyword' => $keyword,
2018-09-20 11:16:56 +03:00
'page' => $page,
2018-04-25 19:28:10 +03:00
]
];
2020-05-12 23:47:06 +03:00
$title = trans('general.search');
2018-04-25 19:28:10 +03:00
$modules = $this->getSearchModules($data);
2019-11-16 10:21:14 +03:00
$installed = Module::all()->pluck('enabled', 'alias')->toArray();
2018-04-25 19:28:10 +03:00
2022-07-18 17:58:08 +03:00
return $this->response('modules.tiles.index', compact('modules', 'title', 'keyword', 'installed'));
2018-04-25 19:28:10 +03:00
}
2022-06-01 10:15:55 +03:00
public function loadMore($type, Request $request)
{
$page = $request->get('page', 1);
$modules = [];
$data = [
'query' => [
'page' => $page,
]
];
$last_page = 1;
switch ($type) {
case 'categories':
$alias = $request->get('alias');
$response = $this->getModulesByCategory($alias, $data);
$response = !empty($response->modules) ? $response->modules : [];
$last_page = ! empty($response) ? $response->last_page : 1;
$modules = $this->prepareModules($response);
break;
case 'vendors':
$alias = $request->get('alias');
$response = $this->getModulesByVendor($alias, $data);
$response = !empty($response->modules) ? $response->modules : [];
$last_page = ! empty($response) ? $response->last_page : 1;
$modules = $this->prepareModules($response);
break;
case 'paid':
$response = $this->getPaidModules($data);
$last_page = ! empty($response) ? $response->last_page : 1;
2022-06-01 10:15:55 +03:00
$modules = $this->prepareModules($response);
break;
case 'new':
$response = $this->getNewModules($data);
$last_page = ! empty($response) ? $response->last_page : 1;
2022-06-01 10:15:55 +03:00
$modules = $this->prepareModules($response);
break;
case 'free':
$response = $this->getFreeModules($data);
$last_page = ! empty($response) ? $response->last_page : 1;
2022-06-01 10:15:55 +03:00
$modules = $this->prepareModules($response);
break;
case 'search':
$data['query']['keyword'] = $request->get('keyword');
$response = $this->getSearchModules($data);
$last_page = ! empty($response) ? $response->last_page : 1;
2022-06-01 10:15:55 +03:00
$modules = $this->prepareModules($response);
break;
}
$html = view('components.modules.raw_items', compact('modules'))->render();
return response()->json([
'success' => true,
'error' => false,
'message' => 'null',
'modules' => $modules,
'last_page' => $last_page,
'html' => $html,
]);
}
protected function prepareModules($response)
{
if (! empty($response->data)) {
return $response->data;
}
return $response;
}
2017-09-14 22:21:00 +03:00
}