An AsgardCMS module which enabled tagging of any entity with ease.
## Installation
### Composer
```
composer require asgardcms/tag-module
```
### Migrations
Run the migrations for the tag module
```
php artisan module:migrate tag
```
### Permissions
Go to the Admin role, and give yourself the permissions for the Tag Module.
## Usage
Any of you entities can have tags attached to it. To enable this your entity needs to implement an interface, use a trait and that's it.
### 1. Add interface & trait on desired entity
Your entity needs to implement the `Modules\Tag\Contracts\TaggableInterface` interface.
In order for your entity to satisfy this interface it needs to use the following traits:
-`Modules\Core\Traits\NamespacedEntity`
-`Modules\Tag\Traits\TaggableTrait`
Tags are organised by namespace. This is used in order to get the tags for a specific namespace on the display of the field. It also creates tags for that namespace if tags need to be created.
By default the `TaggableTrait` will use the full namespace of your entity. However, you can specify a nicer / shorter namespace to use by using the static `$entityNamespace` property on your entity.
In your module Service Provider, `boot()` method, you now need to add the namespace it's going to use. This can be done using the `TagManager` interface.
And with this, the Tag Module is aware of the new namespace.
### 3. Display the tag field on your views
By using a custom blade directive you can include the tags field on your views.
- The first argument is the namespace to get the tags for.
- (optional) Second argument is the entity to fetch the tags for (pre-filling the input if tags are present for given entity).
- (optional) Third and last argument can be a view to use. This will override the default tags view with its input field.
```` php
@tags('asgardcms/media', $file)
````
### 4. Store tags
In your repositories you need to call the `setTags()` method to persist the tags on your entity.
``` php
$file->setTags(array_get($data, 'tags'));
```
And that's all on how to use tags for your entities.
## Convenience methods
### Scope: `withTag()`
Get all the entities with one of the given tag(s). Optionally specify the column on which to perform the search operation, defaults to the `slug` column.
Easily manage your translations via the backend GUI.
Contains all the translations files for the AsgardCms Modules.
## Installation
#### Require the module in your project
```
composer require asgardcms/translation-module
```
#### Optional configuration
The configuration has one option: `translations-gui` which you can set to a boolean value. Setting this to true will have a *slight* performance hit, but it will give you (and your client) the possibility to edit static translations via a GUI.
If you don't have that need, set this to false.
**Note: This configuraiton key is in `app.php` config file.**
#### Permissions
Don't forget to give yourself the permissions to the translation module if you have enabled the `translations-gui` option.
#### Missing assets ? Publish the assets.
If you haven't altered the post-update scripts in the composer file, it will publish the translation module assets to the public folder.
However if you did alter it, or you're getting an `AssetNotFound` exception, you can publish those assets manually using the following command: