Added category column to activities table

This commit is contained in:
2023-07-18 13:25:04 +01:00
parent d69a89a761
commit cbfa4adfe3
4 changed files with 103 additions and 0 deletions

View File

@@ -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.
*

View File

@@ -0,0 +1,77 @@
<?php
/*
* AVSDev UF Tweaks (https://avsdev.uk)
*
* @link https://git.avsdev.uk/avsdev/sprinkle-uf-tweaks
* @license https://git.avsdev.uk/avsdev/sprinkle-uf-tweaks/blob/master/LICENSE.md (LGPL-3.0 License)
*/
namespace UserFrosting\Sprinkle\UFTweaks\Sprunje;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Database\Schema\Builder;
use UserFrosting\Sprinkle\admin\Sprunje\ActivitySprunje as UFActivitySprunje;
/**
* ActivitySprunje.
*
* Implements Sprunje for the activities API.
*
* @author Alex Weissman (https://alexanderweissman.com)
*/
class ActivitySprunje extends UFActivitySprunje
{
protected $sortable = [
'occurred_at',
'user',
'category',
'description',
];
protected $filterable = [
'occurred_at',
'user',
'category',
'description',
];
/**
* Filter LIKE the category.
*
* @param Builder $query
* @param mixed $value
*
* @return self
*/
protected function filterCategory($query, $value)
{
// Split value on separator for OR queries
$values = explode($this->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;
}
}

View File

@@ -15,6 +15,7 @@
{% if 'user' in table.columns %}
<th class="sorter-metatext" data-column-name="user" data-column-template="#{{table.id}}-column-user" data-priority="1">{{translate('USER')}} <i class="fas fa-sort"></i></th>
{% endif %}
<th class="sorter-metatext" data-column-name="category" data-column-template="#{{table.id}}-column-category" data-priority="1">{{translate('CATEGORY')}} <i class="fas fa-sort"></i></th>
<th class="sorter-metatext" data-column-name="description" data-column-template="#{{table.id}}-column-description" data-priority="1">{{translate("DESCRIPTION")}} <i class="fas fa-sort"></i></th>
</tr>
</thead>
@@ -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 %}

View File

@@ -0,0 +1,7 @@
<script id="{{table.id}}-column-category" type="text/x-handlebars-template">
{% verbatim %}
<td data-text="{{ucwords (splitSnakeCase row.type)}}">
{{ucwords (splitSnakeCase row.type)}}
</td>
{% endverbatim %}
</script>