diff --git a/addons/default/visiosoft/advs-module/resources/js/admin/dashboard/report.js b/addons/default/visiosoft/advs-module/resources/js/admin/dashboard/report.js index 92522a569..a37d8a871 100644 --- a/addons/default/visiosoft/advs-module/resources/js/admin/dashboard/report.js +++ b/addons/default/visiosoft/advs-module/resources/js/admin/dashboard/report.js @@ -56,4 +56,20 @@ $(document).ready( function () { }, ], }); + + $('#metaPageReport').DataTable({ + ajax: '/admin/api/classified/report/page', + columns: [ + { + data: 'name', + render: function ( data, type, row, meta ) { + return ` + + ${data ?? productsReportTrans.undefined_page} + + `; + } + }, + ], + }); } ); diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/field.php b/addons/default/visiosoft/advs-module/resources/lang/en/field.php index f1ecaee86..fc320a6c5 100644 --- a/addons/default/visiosoft/advs-module/resources/lang/en/field.php +++ b/addons/default/visiosoft/advs-module/resources/lang/en/field.php @@ -392,4 +392,7 @@ return [ 'product' => 'Product', 'count' => 'Count', 'undefined_product' => 'Undefined Product', + 'pages_without_meta_information_report' => 'Pages Without Meta Information Report', + 'page' => 'Page', + 'undefined_page' => 'Undefined Page', ]; diff --git a/addons/default/visiosoft/advs-module/resources/views/admin/dashboard/report.twig b/addons/default/visiosoft/advs-module/resources/views/admin/dashboard/report.twig index 9f7e14ae4..5bcd7b9d5 100644 --- a/addons/default/visiosoft/advs-module/resources/views/admin/dashboard/report.twig +++ b/addons/default/visiosoft/advs-module/resources/views/admin/dashboard/report.twig @@ -30,6 +30,13 @@ trans('visiosoft.module.advs::field.product'), ], }, + { + 'title': trans('visiosoft.module.advs::field.pages_without_meta_information_report'), + 'id': 'metaPageReport', + 'columns': [ + trans('visiosoft.module.advs::field.page'), + ], + }, ] %} {% for report in reports %} @@ -58,6 +65,7 @@ diff --git a/addons/default/visiosoft/advs-module/src/Adv/Event/PriceChange.php b/addons/default/visiosoft/advs-module/src/Adv/Event/PriceChange.php index 631047e45..1b7a8c051 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/Event/PriceChange.php +++ b/addons/default/visiosoft/advs-module/src/Adv/Event/PriceChange.php @@ -1,6 +1,5 @@ 'Visiosoft\AdvsModule\Http\Controller\Admin\ReportController@status', 'admin/api/classified/report/unexplained' => 'Visiosoft\AdvsModule\Http\Controller\Admin\ReportController@unexplained', 'admin/api/classified/report/no-image' => 'Visiosoft\AdvsModule\Http\Controller\Admin\ReportController@noImage', + 'admin/api/classified/report/page' => 'Visiosoft\AdvsModule\Http\Controller\Admin\ReportController@page', ]; protected $middleware = [ diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/ReportController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/ReportController.php index 8acc6ac6b..e6bd492d6 100644 --- a/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/ReportController.php +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/ReportController.php @@ -1,5 +1,6 @@ $this->advRepository->getNoImageClassifiedsReport() ]; } + + public function page(PageRepositoryInterface $pageRepository) + { + $pages = $pageRepository->newQuery() + ->select('title as name', 'pages_pages.id') + ->where(function ($q) { + $q->whereNull('meta_title') + ->orWhereNull('meta_description'); + }) + ->leftJoin('pages_pages_translations as pages_trans', function ($join) { + $join->on('pages_pages.id', '=', 'pages_trans.entry_id'); + $join->whereIn('locale', [config('app.locale'), setting_value('streams::default_locale'), 'en']); + }) + ->get(); + + return [ + 'data' => $pages + ]; + } } diff --git a/addons/default/visiosoft/cats-module/resources/js/admin/dashboard/report.js b/addons/default/visiosoft/cats-module/resources/js/admin/dashboard/report.js new file mode 100644 index 000000000..4c36b21e8 --- /dev/null +++ b/addons/default/visiosoft/cats-module/resources/js/admin/dashboard/report.js @@ -0,0 +1,27 @@ +$(document).ready( function () { + $('#metaCategoryReport').DataTable({ + ajax: { + url: '/admin/api/cats/report/category', + dataSrc( json ) { + json.recordsTotal = json.total; + json.recordsFiltered = json.total; + + return json.data; + } + }, + processing: true, + serverSide: true, + columns: [ + { + data: 'name', + render: function ( data, type, row, meta ) { + return ` + + ${data ? data : categoryReportTrans.undefined_category} + + `; + } + }, + ], + }); +} ); diff --git a/addons/default/visiosoft/cats-module/resources/lang/en/field.php b/addons/default/visiosoft/cats-module/resources/lang/en/field.php index 11e211b50..b7106decc 100644 --- a/addons/default/visiosoft/cats-module/resources/lang/en/field.php +++ b/addons/default/visiosoft/cats-module/resources/lang/en/field.php @@ -37,5 +37,10 @@ return [ 'please_wait' => 'Please wait.Deleting Sub Categories', 'category_selection' => 'Category Selection', 'go_to_parent' => 'Go To Parent', - 'preview' => 'Preview' + 'preview' => 'Preview', + + // Report + 'undefined_category' => 'Undefined Category', + 'categories_with_no_meta_report' => 'Categories with No Meta Report', + 'category' => 'Category', ]; diff --git a/addons/default/visiosoft/cats-module/resources/views/admin/dashboard/report.twig b/addons/default/visiosoft/cats-module/resources/views/admin/dashboard/report.twig new file mode 100644 index 000000000..836dd42b5 --- /dev/null +++ b/addons/default/visiosoft/cats-module/resources/views/admin/dashboard/report.twig @@ -0,0 +1,41 @@ +
+ {% set reports = [ + { + 'title': trans('visiosoft.module.cats::field.categories_with_no_meta_report'), + 'id': 'metaCategoryReport', + 'columns': [ + trans('visiosoft.module.cats::field.category'), + ], + }, + ] %} + + {% for report in reports %} +
+
+
+
{{ report.title }}
+
+ +
+ + + + {% for column in report.columns %} + + {% endfor %} + + +
{{ column }}
+
+
+
+ {% endfor %} +
+ + + +{{ asset_add('scripts.js', 'visiosoft.module.cats::js/admin/dashboard/report.js') }} diff --git a/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php b/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php index ec4ea850d..f2abe709f 100644 --- a/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php +++ b/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php @@ -184,4 +184,34 @@ class CategoryRepository extends EntryRepository implements CategoryRepositoryIn $cats->maincats = $catsDB->unique('id'); return $cats; } + + public function noMetaReport() + { + $categories = $this->newQuery() + ->select('name as category', 'cats_category.id') + ->where(function ($q) { + $q->whereNull('seo_keyword') + ->orWhereNull('seo_description'); + }) + ->leftJoin('cats_category_translations as cats_trans', function ($join) { + $join->on('cats_category.id', '=', 'cats_trans.entry_id'); + $join->whereIn('locale', [config('app.locale'), setting_value('streams::default_locale'), 'en']); + }); + + if ($search = request('search.value')) { + $categories = $categories->where('name', 'LIKE', "%$search%"); + } + + if ($orderDir = request('order.0.dir')) { + $categories = $categories->orderBy('category', $orderDir); + } + + $start = request('start'); + $limit = request('length') ?: 10; + $page = $start ? $start / $limit + 1 : 1; + + $categories = $categories->paginate($limit, ['*'], 'page', $page); + + return $categories; + } } diff --git a/addons/default/visiosoft/cats-module/src/Category/Contract/CategoryRepositoryInterface.php b/addons/default/visiosoft/cats-module/src/Category/Contract/CategoryRepositoryInterface.php index 750acb5ef..875c3ea80 100644 --- a/addons/default/visiosoft/cats-module/src/Category/Contract/CategoryRepositoryInterface.php +++ b/addons/default/visiosoft/cats-module/src/Category/Contract/CategoryRepositoryInterface.php @@ -23,4 +23,6 @@ interface CategoryRepositoryInterface extends EntryRepositoryInterface public function getDeletedCategories(); public function getMainAndSubCats(); + + public function noMetaReport(); } diff --git a/addons/default/visiosoft/cats-module/src/CatsModuleServiceProvider.php b/addons/default/visiosoft/cats-module/src/CatsModuleServiceProvider.php index 6fed3c5e7..fa5d356b3 100644 --- a/addons/default/visiosoft/cats-module/src/CatsModuleServiceProvider.php +++ b/addons/default/visiosoft/cats-module/src/CatsModuleServiceProvider.php @@ -49,6 +49,9 @@ class CatsModuleServiceProvider extends AddonServiceProvider 'uses' => 'Visiosoft\CatsModule\Http\Controller\Admin\CategoryController@all', ], + // Admin ReportController + 'admin/api/cats/report/category' => 'Visiosoft\CatsModule\Http\Controller\Admin\ReportController@category', + // Sitemap 'sitemap.xml' => 'Visiosoft\CatsModule\Http\Controller\SitemapController@index', 'sitemap.xml/categories' => 'Visiosoft\CatsModule\Http\Controller\SitemapController@categories', diff --git a/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/ReportController.php b/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/ReportController.php new file mode 100644 index 000000000..353891d93 --- /dev/null +++ b/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/ReportController.php @@ -0,0 +1,12 @@ +noMetaReport(); + } +}