Customer Service Screen Hooks
The eighteen placement points of the service detail, list and dashboard.
Overview
The placement points on the customer service screens live here: the detail tabs, the resource gauges, the quick actions and the dashboards.
Adding a tab takes two points together: the label goes on the tab bar and the content at the end of the panes. Using only one leaves half a tab.
Reference
The end of the hero actions
Appears at the end of the action buttons in the hero block of the service detail.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.service_detail.hero.actions.end', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});The end of the tab bar
Appears at the end of the tab bar on the service detail.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.service_detail.tabs.end', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});The end of the tab panes
Appears at the end of the tab panes. The content of a tab you added to the bar goes here: the two are used together.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.service_detail.panes.end', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});Above the overview
Appears at the very top of the overview tab.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.service_detail.overview.before', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});Below the overview
Appears at the very bottom of the overview tab.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.service_detail.overview.after', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});After the resource gauges
Appears after the disk and traffic gauges. The place to add a resource measure of your own.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.service_detail.overview.gauges.after', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});Above the quick actions
Appears above the quick action buttons.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.service_detail.overview.quick_actions.before', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});After the quick actions
Appears after the quick action buttons. It puts an action of your own beside the core ones.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.service_detail.overview.quick_actions.after', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});After the panel link on the overview
Appears after the remote panel link on the overview.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.service_detail.overview.sso.after', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});The top of the management tab
Appears above the remote panel tools.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.service_detail.management.top', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});After the panel link on the management tab
Appears after the remote panel link on the management tab.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.service_detail.management.sso.after', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});The end of the modals
Appears at the end of the modals on the page.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.service_detail.modals.end', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});The top of the service list
Appears at the very top of the customer service list.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.services_list.top', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});After the summary tiles
Appears after the summary tiles above the list.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.services_list.tiles.after', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});Above the service dashboard
Appears above the service-specific dashboard.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.service_dashboard.before', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});Below the service dashboard
Appears below the service-specific dashboard.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.service_dashboard.after', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});The bottom of the service configuration
Appears at the bottom of the service configuration screen.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.service_config.bottom', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});The transfer approval page
Appears in the body of the service transfer approval page. That page can open for somebody not signed in: whoever approves the transfer may have no account.
null and false are skipped, so return null when you have nothing to add. The output enters the page unescaped — clean anything coming from outside yourself.Hook::add('ui:client.service_transfer_approve.body', 10, function () {
return '<div class="alert alert-info">Acme</div>';
});Pitfalls
Put a label on the tab bar and skip the pane point and the customer sees a tab that is empty when clicked. Use both, and give them the same identifier.
Whoever approves a service transfer may hold no account at all. Anything tied to a session comes out empty on that page, and showing customer details there opens them to somebody you cannot identify.
Related Articles
- Customer Site Hooks
- Customer Service and Message Hooks
- Domain Hooks
Vielen Dank für Ihre Rückmeldung!
Unser Support-Team ist rund um die Uhr für Sie da, wenn Sie oben nicht fündig werden.