From cbfa4adfe32ee27b555f8e24cc4f3e140979ac92 Mon Sep 17 00:00:00 2001 From: Craig Williams Date: Tue, 18 Jul 2023 13:25:04 +0100 Subject: [PATCH] Added category column to activities table --- src/ServicesProvider/ServicesProvider.php | 14 ++++ src/Sprunje/ActivitySprunje.php | 77 +++++++++++++++++++ templates/tables/activities.html.twig | 5 ++ .../columns/activities-category.html.twig | 7 ++ 4 files changed, 103 insertions(+) create mode 100644 src/Sprunje/ActivitySprunje.php create mode 100644 templates/tables/columns/activities-category.html.twig diff --git a/src/ServicesProvider/ServicesProvider.php b/src/ServicesProvider/ServicesProvider.php index 8a7e108..ac1fb44 100644 --- a/src/ServicesProvider/ServicesProvider.php +++ b/src/ServicesProvider/ServicesProvider.php @@ -15,6 +15,7 @@ use Monolog\Logger; use Psr\Container\ContainerInterface; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +use UserFrosting\Sprinkle\Core\Log\MixedFormatter; use UserFrosting\Sprinkle\UFTweaks\Twig\HasRoleExtension; @@ -32,6 +33,19 @@ class ServicesProvider */ public function register(ContainerInterface $container) { + /* + * Extend the 'classMapper' service to register sprunje classes. + * + * Mappings added: 'activity_sprunje' + * + * @return \UserFrosting\Sprinkle\Core\Util\ClassMapper + */ + $container->extend('classMapper', function ($classMapper, $c) { + $classMapper->setClassMapping('activity_sprunje', 'UserFrosting\Sprinkle\UFTweaks\Sprunje\ActivitySprunje'); + + return $classMapper; + }); + /* * Returns a callback that handles setting the `UF-Redirect` header after a successful login. * diff --git a/src/Sprunje/ActivitySprunje.php b/src/Sprunje/ActivitySprunje.php new file mode 100644 index 0000000..d40355f --- /dev/null +++ b/src/Sprunje/ActivitySprunje.php @@ -0,0 +1,77 @@ +orSeparator, $value); + $query->where(function ($query) use ($values) { + foreach ($values as $value) { + $query->orLike( + DB::raw('lower(activities.type)'), + str_replace(" ", "_", strtolower($value)) + ); + } + }); + + return $this; + } + + /** + * Sort based on category. + * + * @param Builder $query + * @param string $direction + * + * @return self + */ + protected function sortCategory($query, $direction) + { + $query->orderBy('activities.type', $direction); + + return $this; + } +} diff --git a/templates/tables/activities.html.twig b/templates/tables/activities.html.twig index f84be48..8d61bb0 100644 --- a/templates/tables/activities.html.twig +++ b/templates/tables/activities.html.twig @@ -15,6 +15,7 @@ {% if 'user' in table.columns %} {{translate('USER')}} {% endif %} + {{translate('CATEGORY')}} {{translate("DESCRIPTION")}} @@ -38,6 +39,10 @@ {% include "tables/columns/activities-user.html.twig" %} {% endblock %} + {% block table_activities_column_category %} + {% include "tables/columns/activities-category.html.twig" %} + {% endblock %} + {% block table_activities_column_description %} {% include "tables/columns/activities-description.html.twig" %} {% endblock %} diff --git a/templates/tables/columns/activities-category.html.twig b/templates/tables/columns/activities-category.html.twig new file mode 100644 index 0000000..eebe46b --- /dev/null +++ b/templates/tables/columns/activities-category.html.twig @@ -0,0 +1,7 @@ + \ No newline at end of file