Clips is a plugin for the Redactor editor that allows you to create a list of frequently used code to be used in the editor.
In the following example we will add a label clip that will allow users to use a label in the Redactor editor that looks like this:
You need to use the styles and scripts slots to inject views across the whole admin that include the CSS for the clip (in this case the CSS for the label) and the JS for creating the clip. This can be done in a module service providers setup method or the app service providers boot method. If you use a module service provider, do not forget to register your views under your modules namespace using the $this->loadViewsFrom method.
<?php
namespace Acme\MyModule;
use Aero\Admin\AdminSlot;
use Aero\Common\Providers\ModuleServiceProvider;
class ServiceProvider extends ModuleServiceProvider
{
public function setup()
{
$this->loadViewsFrom(__DIR__.'/../resources/views', 'my-module');
AdminSlot::inject('styles', 'my-module::clips-styles');
AdminSlot::inject('scripts', 'my-module::clips-scripts');
}
}
The my-module::clips-styles view should contain a style tag with the CSS for the label. Any CSS for a clip should be scoped to the .redactor-box class in this view. You will also need to put this CSS in your themes CSS file so that it works on the storefront (this CSS doesn’t need to be scoped to the .redactor-box class).
<style>
.redactor-box .label-red {
display: inline-block;
background-color: #ec2d80;
color: #fff;
line-height: 1;
padding: 2px 8px;
border-radius: 4px;
font-weight: normal;
}
</style>
The my-module::clips-scripts view should contain a script tag with the JS for the label. The first parameter is the text shown in the clips list and the second parameter is the code inserted when the clip is used.
<script>
window.RedactorClips.add('Red label', '<b class="label-red">Label</b>');
</script>
Completing these steps will add a clips button to the top of the Redactor editor that when clicked will list your registered clips that can then be clicked to insert their code.